Lewati ke konten utama

Google Bard untuk Proyek Data Science

Pelajari cara memanfaatkan Google Bard untuk perencanaan proyek, prapemrosesan data, eksplorasi data, rekayasa fitur, pemilihan model, penyetelan hyperparameter, validasi model, serta pembuatan dan deployment aplikasi web.
Abid Ali Awan
Abid Ali Awan

Buat Akun Gratis Anda

Berlatih dan lacak kemajuan Anda.

Lanjutkan dengan GoogleDengan melanjutkan, Anda menyetujui Ketentuan Penggunaan, Kebijakan Privasi dan bahwa data Anda disimpan di AS.

Versi terbaru Bard, yang ditenagai oleh model PaLM 2, menawarkan peningkatan kinerja dalam penalaran, pengodean, dan kemampuan multibahasa. Berbeda dengan ChatGPT, pengguna harus menyesuaikan masukan mereka untuk Bard agar memperoleh respons berkualitas tinggi.

Postingan ini membahas cara memanfaatkan Bard versi baru untuk membangun proyek data science end-to-end. Anda akan mempelajari cara menyusun prompt efektif yang menghasilkan ide dan kode untuk eksperimen serta pengembangan.

Baca artikel kami Bard vs ChatGPT untuk Data Science untuk menemukan perbandingan mendetail antara Google Bard dan ChatGPT, artikel umum kami ChatGPT vs Google Bard, dan lihat tutorial ChatGPT untuk Proyek Data Science sebagai opsi lain.

Perencanaan Proyek

Fase perencanaan adalah langkah krusial di setiap proyek, karena menjadi fondasi kesuksesannya. Pada fase ini, kami menganalisis dengan cermat sumber daya dan tujuan yang tersedia serta menyusun rencana proyek yang menguraikan langkah-langkah yang diperlukan untuk mencapai target.

Untuk membuat garis besar proyek, kami akan menyusun prompt terperinci untuk Bard yang mencakup semua informasi relevan tentang pengembangan aplikasi Deteksi Berita Palsu kami. Ini akan mencakup detail utama, seperti dataset yang akan kami gunakan, yaitu dataset Fake News Classification dari makalah WELFake, serta arahan proyek yang akan memandu tim kami sepanjang proses pengembangan.

Prompt: “Bertindaklah sebagai Manajer Data Science dan kembangkan rencana untuk proyek Deteksi Berita Palsu end-to-end. Kami sudah memiliki dataset FakeNewsDetection yang terdiri dari 72.134 baris dan 4 kolom: [Unnamed: 0, title, text, dan ;abel (0 = palsu dan 1 = asli)].”

Gambar dari Google Bard

Meskipun garis besar proyek yang bersifat umum memberikan fondasi yang kuat, ada beberapa langkah penting yang terlewat. Kita dapat menambahkan langkah-langkah yang diperlukan dengan menulis prompt lanjutan.

Prompt Lanjutan: “Harap tambahkan langkah seperti EDA, Pemilihan Model, Optimisasi Hyperparameter, Webapp Streamlit, dan deployment Streamlit Cloud. Berikan rencana proyek gabungan.”

Gambar dari Google Bard

Sepertinya Bard gagal memahami bahwa kita sudah memiliki dataset sehingga kita tidak memerlukan bagian pengumpulan data. Anda dapat menulis prompt lanjutan untuk merapikannya.

Prompt Lanjutan: “Kami sudah memiliki data, jadi hapus langkah Pengumpulan data dari rencana proyek.”

Berikut adalah garis besar untuk proyek Deteksi Berita Palsu:

  1. Prapemrosesan data
  2. Eksplorasi data (EDA)
  3. Ekstraksi fitur
  4. Pemilihan model
  5. Optimisasi hyperparameter
  6. Pelatihan dan evaluasi model
  7. Webapp Streamlit
  8. Deployment Streamlit Cloud

Rencana proyek mencakup penjelasan terperinci tentang setiap langkah yang terlibat dalam membangun aplikasi Deteksi Berita Palsu kami, serta metodologi yang direkomendasikan untuk mengoptimalkan hasil. Selain itu, rencana kami menyediakan agenda mingguan yang menguraikan tugas dan tonggak utama.

Jika Anda kesulitan menulis prompt atau merasa kewalahan, kami siap membantu. Unduh Prompt Engineering Cheat Sheet kami, yang memberi Anda akses ke kumpulan 60+ prompt yang dibuat ahli dan dirancang khusus untuk berbagai tugas data science.

Bard untuk Prapemrosesan Data

Pada langkah ini, kita akan memuat, membersihkan, dan melakukan rekayasa fitur pada dataset.

Pemuatan data

Sekarang Anda harus mengubah peran dari Manajer Data menjadi Data Scientist untuk menulis prompt pemuatan data.

Prompt: “Bertindaklah sebagai Data Scientist profesional dan tulis kode Python untuk memuat lima ribu sampel acak dari dataset untuk proyek di atas.”

Catatan: kita melakukan downsampling data agar pelatihan dan optimisasi model lebih cepat.

Gambar dari Google Bard

import pandas as pd

# Load the dataset
df = pd.read_csv("fake-news-classification/WELFake_Dataset.csv")

# Get 5 thousand random samples
df = df.sample(n=5000, random_state=42)

# Print the first 5 rows of the data
df.head()

Pembersihan data

Untuk memastikan dataset kami dibersihkan dan disiapkan dengan baik untuk analisis, kami akan memberikan instruksi spesifik kepada Bard mengenai fungsi pembersihan data yang diperlukan.

Prompt: “Sekarang, tulis fungsi Python untuk membersihkan dataset. Fungsi harus menghapus nilai hilang, menghapus kolom "Unnamed: 0", membersihkan teks, dan menghapus stopword.”

Untuk mengatasi bug atau kesalahan dalam kode, kami akan meminta Bard memperbaiki error stopword. Bard akan memahami kekeliruan tersebut dan menghasilkan versi kode yang lebih baik.

Prompt Diperbarui: “Atasi error pada stopwords”

import nltk
nltk.download('stopwords')
from nltk.corpus import stopwords

def clean_dataset(df):

  # Drop missing values
  df = df.dropna()
    
  # Drop Unnamed column
  df = df.drop(["Unnamed: 0"], axis=1)

  # Clean text
  df['text'] = df['text'].str.lower()
  df["Text"] = df["Text"].str.replace("[^a-zA-Z]", " ")

  # Remove stopwords
  stopword = set(stopwords.words('english'))
  df['text'] = df['text'].apply(lambda x: ' '.join([word for word in x.split() if word not in stopword]))

  return df

df = clean_dataset(df)
df.head()

Kita memiliki dataset yang cukup bersih.

image6.png

Rekayasa fitur

Agar Bard menghasilkan kode yang optimal, penting untuk memberi instruksi spesifik, bukan pertanyaan yang generik. Misalnya, jika kita meminta Bard melakukan fungsi tertentu, seperti “menggabungkan panjang kedua kolom teks,” Bard akan mampu menghasilkan kode berkualitas lebih baik yang disesuaikan dengan kebutuhan proyek.

Prompt: “Sekarang, tulis fungsi Python untuk melakukan rekayasa fitur. Ubah huruf pada kolom title menjadi huruf kecil dan gabungkan text dan title, gabungkan panjang kedua kolom teks, hitung jumlah kata unik, dan lainnya.”

def feature_engineering(df):

  # Lower the title column
  df['title'] = df['title'].str.lower()

  # Combine text and title
  df['combined'] = df['title'] + ' ' + df['text']

  # Length of the combined text
  df['combined_length'] = df['combined'].str.len()

  # Count unique words
  df['unique_words'] = df['text'].apply(lambda x: len(set(x.split())))

  return df

# Perform feature engineering
df = feature_engineering(df)

# Print the first few rows of the DataFrame with the new features
df.head()

Kita telah membuat tiga fitur baru yang akan digunakan untuk analisis data.

image8.png

Bard untuk Exploratory Data Analysis (EDA)

Pada bagian EDA, kita akan meminta Bard membuat visual data tertentu yang penting untuk eksplorasi data.

Prompt: “Tulis kode Python untuk melakukan Exploratory Data Analysis (EDA) pada proyek di atas. Sertakan histogram untuk membandingkan panjang gabungan berita palsu vs asli, distribusi label, dan word cloud.”

Kita akan menulis prompt lanjutan untuk menambahkan batas bin.

Prompt Lanjutan: “Perbarui kode EDA dengan `np.linspace` untuk membuat batas bin dari 0 hingga 200 dengan lebar 40 bin.”

import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np

bins = np.linspace(0, 200, 40)
# Histogram of the length of fake vs real news articles
plt.hist(df['combined_length'].where(df['label'] == 1),bins, alpha=0.5, label='Real')
plt.hist(df['combined_length'].where(df['label'] == 0),bins, alpha=0.5, label='Fake')
plt.xlabel('Combined Text Length')
plt.ylabel('Number of Articles')
plt.legend()
plt.show()

Tampaknya berita palsu memiliki panjang teks yang lebih besar daripada berita asli.

image4.png

# Label distribution
plt.pie(df['label'].value_counts(), labels=['Fake', 'Real'], autopct='%1.1f%%')
plt.show()

Distribusi label cukup seimbang, dan kita tidak perlu melakukan penyeimbangan kelas.

image14.png

from wordcloud import WordCloud

wc = WordCloud(max_words=100, background_color='white')
wc.generate(' '.join(df[df['label'] == 0]['combined']))
plt.imshow(wc)
plt.axis('off')
plt.title('Word cloud of fake news articles')
plt.show()

image11.png

wc = WordCloud(max_words=100, background_color='white')
wc.generate(' '.join(df[df['label'] == 1]['combined']))
plt.imshow(wc)
plt.axis('off')
plt.title('Word cloud of real news articles')
plt.show()

image10.png

Berita asli memiliki kata yang lebih menonjol seperti “trump” dan “said” dibandingkan berita palsu.

Ekstraksi Fitur dengan Bard

Pada bagian ini, kita akan menulis prompt untuk mengubah kolom “text” menjadi vektor dan membagi dataset menjadi dataset latih dan uji.

Prompt: “Ubah kolom text menjadi vektor dan bagi dataset menjadi dataset pelatihan dan pengujian.”

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.model_selection import train_test_split

# Convert the text column into vectors
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(df['text'])

# Split the dataset into training and testing datasets
X_train, X_test, y_train, y_test = train_test_split(X, df['label'], test_size=0.25)

Bard untuk Pemilihan Model

Dengan informasi latar belakang yang diperlukan telah disediakan, sekarang Anda dapat mengajukan pertanyaan yang langsung.

Prompt: “Lakukan pemilihan model.”

from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score

# Train the models
models = [LogisticRegression(), SVC(), DecisionTreeClassifier(), RandomForestClassifier()]
for model in models:
    model.fit(X_train, y_train)

# Evaluate the models
predictions = []
for model in models:
    predictions.append(model.predict(X_test))

# Calculate the accuracy of the models
accuracies = []
for predictions in predictions:
    accuracies.append(accuracy_score(y_test, predictions))

# Print the accuracy of the models
print("Accuracy of LogisticRegression:", accuracies[0])
print("Accuracy of SVC:", accuracies[1])
print("Accuracy of DecisionTreeClassifier:", accuracies[2])
print("Accuracy of RandomForestClassifier:", accuracies[3])
Accuracy of LogisticRegression: 0.9024979854955681
Accuracy of SVC: 0.91941982272361
Accuracy of DecisionTreeClassifier: 0.8767123287671232
Accuracy of RandomForestClassifier: 0.8863819500402901

Berdasarkan analisis kami, tampaknya semua model yang kami uji berkinerja cukup baik. Namun, model Support Vector Classifier (SVC) meraih skor akurasi tertinggi di antara model yang diuji.

Penyetelan Hyperparameter dengan Bard

Kami meminta Bard menulis kode penyetelan hyperparameter yang menyimpan model dan objek vektor optimal untuk deployment.

Prompt: ”Tulis kode Python untuk optimisasi Hyperparameter SVC. Juga, simpan model dan vectorizer terbaik menggunakan Joblib.”

from sklearn.svm import SVC
from sklearn.model_selection import GridSearchCV
from sklearn.metrics import accuracy_score,f1_score, classification_report, confusion_matrix

import joblib

# Create a RandomForestClassifier model
svm = SVC()

# Create the hyperparameter grid
param_grid = {'C': [1, 10, 100], 'gamma': [0.01, 0.1, 1]}

# Create the GridSearchCV object
grid = GridSearchCV(SVC(), param_grid, cv=5)


# Fit the GridSearchCV object to the training data
grid.fit(X_train, y_train)

# Print the best parameters
print(grid.best_params_)
{'C': 10, 'gamma': 0.1}
# Predict the labels of the testing data using the best model
y_pred = grid.predict(X_test)

# Calculate the accuracy of the best model
accuracy = accuracy_score(y_test, y_pred)

# Print the accuracy of the best model
print("Accuracy of the best model:", accuracy)

Akurasi meningkat sedikit.

Accuracy of the best model: 0.9298952457695407

Model dan vektor yang disimpan akan digunakan untuk menjalankan inferensi.

# Save the best model
joblib.dump(grid.best_estimator_, 'best_model.pkl')
# Save the TfidfVectorizer
joblib.dump(vectorizer, 'tfidf_vectorizer.pkl')

Evaluasi Model dengan Bard

Akurasi saja tidak cukup untuk model klasifikasi. Kita harus mengujinya pada f1-score, recall, precision, dan confusion matrix.

Prompt: ”Tulis kode Python untuk evaluasi model. Sertakan classification report, confusion matrix, dan f1 score.”

print(classification_report(y_test, y_pred))

Menurut laporan, model kami cukup stabil pada dataset uji.

              precision    recall  f1-score   support

           0       0.94      0.92      0.93       620
           1       0.92      0.94      0.93       621

    accuracy                           0.93      1241
   macro avg       0.93      0.93      0.93      1241
weighted avg       0.93      0.93      0.93      1241
# Plot the confusion matrix
print(confusion_matrix(y_test, y_pred))
[[572  65]
 [ 37 567]]
# Calculate the F1 score
f1_score = f1_score(y_test, y_pred, average='weighted')

# Print the F1 score
print("F1 score:", f1_score)
F1 score: 0.9298892365447746

Menggunakan Bard untuk Webapp Streamlit

Setelah puas dengan hasilnya, kita akan mengembangkan aplikasi yang akan mengonversi teks masukan menjadi vektor, melewatkannya ke model, dan menampilkan hasilnya.

Sebelum itu, kita harus membuat repositori GitHub.

Gambar dari Github

Kloning repositori dan simpan semua komponen penting aplikasi. Langkah ini tidak hanya memastikan keamanan penyimpanan, tetapi juga memungkinkan versi yang efektif untuk aplikasi dan model.

git clone https://github.com/kingabzpro/Fake-News-DataCamp-Project.git

Tulis prompt umum untuk mengembangkan aplikasi yang memprediksi apakah berita tersebut asli atau palsu.

Prompt: “Tulis file Python terpisah untuk membuat web app menggunakan Streamlit guna memprediksi apakah Berita adalah (0 = palsu atau 1 = asli). Sertakan hanya bagian aplikasi Streamlit.”

Selanjutnya, mari buat file app.py dan pindahkan kode dari Bard ke file ini. Setelah selesai, Anda dapat menjalankan aplikasi menggunakan perintah streamlit run app.py.

Catatan: pastikan Anda memiliki semua paket Python yang diperlukan untuk menjalankan aplikasi Streamlit.

Sepertinya Bard gagal memuat vectorizer. Kita dapat menulis prompt lanjutan untuk memperbaiki masalah ini.

Prompt Lanjutan: “Tambahkan pemuatan Vectorizer dan Model di file aplikasi menggunakan joblib.”

Aplikasi belum berjalan dengan baik, jadi kita harus menambahkan tombol run untuk memperbaiki masalah tersebut.

Prompt Lanjutan: “Tambahkan juga tombol untuk menjalankan inferensi.”

import streamlit as st
import joblib

# Load the vectorizer
vectorizer = joblib.load("tfidf_vectorizer.pkl")

# Load the model
model = joblib.load("best_model.pkl")

# Create a title
st.title("Predict Fake News")

# Input text
text = st.text_input("Enter the news article:")

# Button to run inference
if st.button("Predict"):

    # Convert the text to a vector
    vector = vectorizer.transform([text])

    # Predict the label
    label = model.predict(vector)[0]

    # Display the label
    if label == 0:
        st.write("The news article is fake.")
    else:
        st.write("The news article is real.")

Kami berhasil membangun aplikasi Streamlit yang menerima masukan teks dan memberikan prediksi keaslian artikel berita.

Gif dari aplikasi Streamlit - Klasifikasi Berita Palsu

Menggunakan Bard untuk Deployment Streamlit Cloud

Untuk mendeploy aplikasi ke cloud, kita harus meminta bantuan Bard. Ternyata kita hanya perlu mendorong kode ke repositori GitHub dan menghubungkannya dengan server Streamlit.

Prompt: “Bantu saya mendeploy aplikasi di Streamlit Community Cloud.”

1. Buat file requirements.txt dan tambahkan semua paket Python yang diperlukan seperti “scikit-learn.”

2. Tambahkan file menggunakan Git, commit, dan push ke server eksternal. Pastikan Anda telah menambahkan model, vektor, app.py, dan requirements.txt.

Gambar dari Direktori Repositori

3. Kunjungi share.streamlit.io, klik “New app,” pilih repositori GitHub, dan tambahkan informasi yang diperlukan tentang aplikasi.

Gambar dari Streamlit

Selesai. Aplikasi kami telah dideploy dan tersedia untuk publik di Streamlit (fake-news-detector.streamlit.app).

Gambar dari aplikasi pendeteksi berita palsu

Kesimpulan

Alat AI seperti ChatGPT, Bard, dan Claude memberdayakan kita untuk unggul dalam tugas data science harian. Dengan memanfaatkan kapabilitas alat-alat ini, kita meningkatkan efisiensi dan kemahiran, sehingga mampu menangani tantangan data yang kompleks dengan mudah.

Dalam postingan ini, kami mengeksplorasi kekuatan versi baru Bard untuk mengembangkan proyek data science end-to-end yang komprehensif. Anda juga dapat melihat panduan kami tentang Menggunakan ChatGPT untuk Proyek Data Science atau mengikuti kursus ChatGPT komprehensif: Introduction to ChatGPT, dan temukan praktik terbaik dalam menulis prompt.

Abid Ali Awan

Penulis

Abid Ali Awan

Sebagai data scientist tersertifikasi, saya bersemangat memanfaatkan teknologi mutakhir untuk menciptakan aplikasi machine learning yang inovatif. Dengan latar belakang kuat di pengenalan ucapan, analisis dan pelaporan data, MLOps, conversational AI, dan NLP, saya mengasah keterampilan dalam mengembangkan sistem cerdas yang berdampak nyata. Selain keahlian teknis, saya juga komunikator andal yang mampu menyederhanakan konsep kompleks menjadi bahasa yang jelas dan ringkas. Karena itu, saya menjadi blogger yang dicari di bidang data science, membagikan wawasan dan pengalaman kepada komunitas profesional data yang terus berkembang. Saat ini, saya berfokus pada pembuatan dan penyuntingan konten, bekerja dengan large language model untuk mengembangkan konten yang kuat dan menarik agar membantu bisnis dan individu memaksimalkan data mereka.

Topik

Terkait

blogs

Spaghetti Plot dan Jalur Badai

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

blogs

Tutorial Korelasi di R