Ana içeriğe atla
Veri Bilimi

Veri Bilimi Projeleri İçin Google Bard

Google Bard'dan proje planlama, veri ön işleme, keşifsel veri analizi, özellik mühendisliği, model seçimi, hiperparametre ayarı, model doğrulama ile bir web uygulamasının geliştirilmesi ve dağıtımı için nasıl yararlanılacağını öğrenin.
Abid Ali Awan's photo
Abid Ali Awan
Güncel · 13 dk. oku

Yapay Zeka ile Keşfedin

ChatGPTClaudePerplexity

Ücretsiz Hesabınızı Oluşturun

Alıştırma and program your progress.

Google Ile Devam Edin
Devam ederek Kullanım Şartlarımızı, Gizlilik Politikamızı ve verilerinizin ABD’de saklandığını kabul etmiş olursunuz.

PaLM 2 modeliyle desteklenen Bard'ın en son sürümü, akıl yürütme, kodlama ve çok dilli yeteneklerde iyileştirilmiş performans sunar. ChatGPT'den farklı olarak, kullanıcıların kaliteli yanıtlar almak için girdilerini Bard'a göre uyarlamaları gerekir.

Bu yazı, uçtan uca bir veri bilimi projesi oluşturmak için yeni Bard'dan nasıl yararlanılacağını kapsar. Deneyler ve geliştirme için fikirler ve kod üreten etkili istemleri nasıl oluşturacağınızı öğreneceksiniz.

Google Bard ile ChatGPT'yi ayrıntılı biçimde karşılaştıran Veri Bilimi İçin Bard vs ChatGPT makalemizi, genel karşılaştırma için ChatGPT vs Google Bard yazımızı okuyun ve alternatif bir seçenek olarak Veri Bilimi Projeleri İçin ChatGPT eğitimimize göz atın.

Proje Planlama

Planlama aşaması, her projenin başarısının temelini attığı için kritik bir adımdır. Bu aşamada, mevcut kaynakları ve hedefleri dikkatle analiz eder, hedeflerimize ulaşmak için gereken adımları ortaya koyan bir proje planı geliştiririz.

Bir proje taslağı oluşturmak için, Bard'a Sahte Haber Tespiti uygulamamızın geliştirilmesine dair tüm ilgili bilgileri içeren ayrıntılı bir istem hazırlayacağız. Bu istem; kullanacağımız Fake News Classification veri kümesi ve WELFake makalesi gibi temel ayrıntıların yanı sıra, geliştirme süreci boyunca ekibimize yol gösterecek proje yönergelerini içerecektir.

İstem: “Bir Veri Bilimi Yöneticisi gibi davranın ve uçtan uca bir Sahte Haber Tespiti projesi için planlar geliştirin. Halihazırda 72.134 satır ve 4 sütundan oluşan FakeNewsDetection veri kümemiz var: [Unnamed: 0, title, text ve ;abel (0 = sahte, 1 = gerçek)].”

Image from Google Bard

Genel proje taslağı sağlam bir temel sunsa da eksik olan birkaç kritik adım var. Gerekli adımları bir takip istemi yazarak ekleyebiliriz.

Takip İstemi: “EDA, Model Seçimi, Hiperparametre Optimizasyonu, Streamlit Web Uygulaması ve Streamlit Cloud dağıtımı gibi adımları ekleyin. Birleştirilmiş bir proje planı sağlayın.”

Image from Google Bard

Bard'ın halihazırda bir veri kümesine sahip olduğumuzu ve veri toplama kısmına ihtiyaç duymadığımızı anlamakta zorlandığı anlaşılıyor. Bunu düzeltmek için bir takip istemi yazabilirsiniz.

Takip İstemi: “Veriler zaten elimizde, bu yüzden proje planından Veri toplama adımını kaldırın.”

Sahte Haber Tespiti projesi için taslak şu şekildedir:

  1. Veri ön işleme
  2. Keşifsel veri analizi (EDA)
  3. Özellik çıkarımı
  4. Model seçimi
  5. Hiperparametre optimizasyonu
  6. Model eğitimi ve değerlendirme
  7. Streamlit web uygulaması
  8. Streamlit Cloud dağıtımı

Proje planı, Sahte Haber Tespiti uygulamamızı oluştururken yer alan her adımın ayrıntılı bir açıklamasını ve sonuçlarımızı optimize etmek için kullanabileceğimiz önerilen yöntemleri içerir. Ayrıca planımız, temel görevleri ve kilometre taşlarını özetleyen haftalık bir gündem de sunar.

İstem yazmakta zorlanıyor veya bunaldığınızı hissediyorsanız, merak etmeyin. 60'tan fazla uzmanlıkla hazırlanmış ve çeşitli veri bilimi görevleri için özel olarak tasarlanmış istem koleksiyonuna erişim sağlayan Prompt Engineering Cheat Sheet'imizi indirin.

Veri Ön İşleme İçin Bard

Bu adımda veri kümesini yükleyecek, temizleyecek ve özellik mühendisliği uygulayacağız.

Veri yükleme

Şimdi veri yükleme için bir istem yazmak üzere rolü Veri Yöneticisinden Veri Bilimciye çevirmelisiniz.

İstem: “Profesyonel bir Veri Bilimci gibi davranın ve yukarıdaki proje için veri kümesinden rastgele beş bin örnek yükleyen bir Python kodu yazın.”

Not: Modelleri daha hızlı eğitmek ve optimize etmek için veriyi aşağı örnekliyoruz.

Image from 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()

Veri temizleme

Veri kümemizin analiz için uygun şekilde temizlenip hazırlandığından emin olmak amacıyla, gerekli veri temizleme işlevlerine ilişkin spesifik talimatları Bard'a vereceğiz.

İstem: “Şimdi veri kümesini temizlemek için bir Python fonksiyonu yazın. Fonksiyon, eksik değerleri düşürmeli, "Unnamed: 0" sütununu kaldırmalı, metni temizlemeli ve durak sözcükleri (stopwords) çıkarmalı.”

Kodumuzdaki hataları veya bug'ları gidermek için, stopword hatasını çözmesini Bard'an isteyeceğiz. Hatanın nedenini anlayacak ve kodun geliştirilmiş bir sürümünü üretecektir.

Güncellenmiş İstem: “Stopwords ile ilgili hatayı çözün”

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()

Oldukça temiz bir veri kümemiz var.

image6.png

Özellik mühendisliği

Bard'ın en iyi kodu üretmesini sağlamak için, genel sorular yerine belirli talimatlar vermek önemlidir. Örneğin, Bard'dan “her iki metin sütununun uzunluğunu birleştir” gibi belirli bir işlevi gerçekleştirmesini istersek, projemizin ihtiyaçlarına daha uygun, daha kaliteli bir kod üretebilir.

İstem: “Şimdi özellik mühendisliği yapmak için bir Python fonksiyonu yazın. title sütununu küçültün ve text ile title'ı birleştirin, her iki metin sütununun uzunluğunu birleştirin, benzersiz kelimeleri sayın ve daha fazlasını yapın.”

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()

Veri analizi için kullanacağımız üç yeni özellik oluşturduk.

image8.png

Keşifsel Veri Analizi (EDA) İçin Bard

EDA bölümünde, verinin keşfi açısından önemli olan bazı görselleri oluşturmasını Bard'an isteyeceğiz.

İstem: “Yukarıdaki proje üzerinde Keşifsel Veri Analizi (EDA) yapmak için Python kodu yazın. Sahte ve gerçeğin birleştirilmiş uzunluğu için histogram, etiket dağılımı ve kelime bulutu ekleyin.”

Bin kenarlarını eklemek için bir takip istemi yazacağız.

Takip İstemi: “Bin kenarlarını 0'dan 200'e 40 bin genişliğiyle oluşturmak için `np.linspace` kullanarak EDA kodunu güncelleyin.”

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()

Sahte haberlerin, gerçek haberlere kıyasla daha uzun metinlere sahip olduğu görülüyor.

image4.png

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

Etiket dağılımı oldukça dengeli ve sınıf dengelemesi yapmamıza gerek yok.

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

Gerçek haberlerde “trump” ve “said” gibi kelimeler sahte haberlere göre daha belirgin.

Bard ile Özellik Çıkarımı

Bu bölümde, “text” sütununu vektörlere dönüştürmek ve veri kümesini eğitim ve test veri kümelerine ayırmak için bir istem yazacağız.

İstem: “Text sütununu vektörlere dönüştürün ve veri kümesini eğitim ve test veri kümelerine ayırın.”

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)

Model Seçimi İçin Bard

Gerekli arka plan bilgileri sağlandığında artık doğrudan sorular sorabilirsiniz.

İstem: “Model seçimi yapın.”

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

Analizimize göre, test ettiğimiz tüm modeller nispeten iyi performans gösterdi. Ancak, Support Vector Classifier (SVC) modeli test edilen modeller arasında en yüksek doğruluk skoruna ulaştı.

Bard ile Hiperparametre Ayarı

Bard'an, dağıtım için en iyi modeli ve vektör nesnesini kaydeden bir hiperparametre ayarlama kodu yazmasını istedik.

İstem: ”SVC'nin Hiperparametre optimizasyonu için Python kodu yazın. Ayrıca en iyi modeli ve vektörleştiriciyi Joblib ile kaydedin.”

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)

Doğruluk biraz arttı.

Accuracy of the best model: 0.9298952457695407

Kaydedilen model ve vektör, çıkarım çalıştırmak için kullanılacaktır.

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

Model Değerlendirme İçin Bard

Sınıflandırma modeli için yalnızca doğruluk yeterli değildir. f1 skoru, duyarlılık (recall), kesinlik (precision) ve karmaşıklık matrisi üzerinde de test etmeliyiz.

İstem: ”Model değerlendirmesi için Python kodu yazın. Sınıflandırma raporu, karmaşıklık matrisi ve f1 skorunu ekleyin.”

print(classification_report(y_test, y_pred))

Rapoara göre, modelimiz test veri kümesinde oldukça istikrarlı.

              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

Bir Streamlit Web Uygulaması İçin Bard Kullanımı

Sonuçtan memnun kaldıktan sonra, girişi vektöre dönüştürecek, bir modelden geçirecek ve sonucu gösterecek bir uygulama geliştireceğiz.

Bundan önce bir GitHub deposu oluşturmamız gerekiyor.

Image from Github

Depoyu klonlayın ve uygulamanın tüm temel bileşenlerini kaydedin. Bu adım yalnızca güvenliği sağlamakla kalmaz, aynı zamanda hem uygulamanın hem de modelin etkili şekilde sürümlenmesini de mümkün kılar.

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

Haberin gerçek mi sahte mi olduğunu tahmin eden bir uygulama geliştirmek için genel bir istem yazın.

İstem: “Haberin (0 = sahte, 1 = gerçek) olup olmadığını tahmin etmek için Streamlit kullanarak bir web uygulaması oluşturan ayrı bir Python dosyası yazın. Yalnızca Streamlit uygulaması kısmını ekleyin.”

Sonraki adımda bir app.py dosyası oluşturalım ve Bard'dan aldığımız kodu bu dosyaya aktaralım. Tamamlandığında, uygulamayı streamlit run app.py komutuyla çalıştırabilirsiniz.

Not: Streamlit uygulamasını çalıştırmak için gereken tüm Python paketlerine sahip olduğunuzdan emin olun.

Görünüşe göre Bard, vektörleştiriciyi yüklemeyi başaramadı. Bu sorunu gidermek için bir takip istemi yazabiliriz.

Takip İstemi: “Vektörleştirici ve Model'i joblib kullanarak uygulama dosyasında yüklemeyi ekleyin.”

Uygulama düzgün çalışmıyor, bu yüzden bunu düzeltmek için bir çalıştır düğmesi eklemeliyiz.

Takip İstemi: “Ayrıca çıkarımı çalıştırmak için bir düğme ekleyin.”

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.")

Metin girdisi alan ve haberlerin gerçekliğine ilişkin tahminler sunan bir Streamlit uygulamasını başarıyla oluşturduk.

Gif from Streamlit app - Fake News Classifier

Streamlit Cloud Dağıtımı İçin Bard Kullanımı

Uygulamayı buluta dağıtmak için Bard'an yardım istemeliyiz. Görünüşe göre, kodumuzu GitHub deposuna itmek ve Streamlit sunucusuyla bağlamak yeterli.

İstem: “Streamlit Community Cloud üzerinde bir uygulama dağıtmama yardım edin.”

1. Bir requirements.txt dosyası oluşturun ve “scikit-learn” gibi gerekli tüm Python paketlerini ekleyin.

2. Dosyaları Git ile ekleyin, commit'leyin ve uzak sunucuya gönderin. Modeli, vektörü, app.py ve requirements.txt dosyalarını eklediğinizden emin olun.

Image from Repository Directory

3. share.streamlit.io adresine gidin, “New app”e tıklayın, GitHub deposunu seçin ve uygulamayla ilgili gerekli bilgileri ekleyin.

Image from Streamlit

Hepsi bu kadar. Uygulamamız dağıtıldı ve Streamlit (fake-news-detector.streamlit.app) adresinde herkesin kullanımına açık.

Image from fake news detector app

Sonuç

ChatGPT, Bard ve Claude gibi yapay zekâ araçları, günlük veri bilimi görevlerinde daha iyi olmamızı sağlar. Bu araçların yeteneklerinden yararlanarak verimliliğimizi ve yetkinliğimizi artırır, karmaşık veri zorluklarını kolaylıkla ele alabiliriz.

Bu yazıda, kapsamlı uçtan uca veri bilimi projeleri geliştirmek için Bard'ın yeni sürümünün gücünü inceledik. Ayrıca Veri Bilimi Projeleri İçin ChatGPT Kullanımı rehberimize göz atabilir veya kapsamlı bir ChatGPT kursu alabilirsiniz: Introduction to ChatGPT ve istem yazımı için en iyi uygulamaları keşfedin.


Abid Ali Awan's photo
Author
Abid Ali Awan
LinkedIn
Twitter

Sertifikalı bir veri bilimcisi olarak, yenilikçi makine öğrenimi uygulamaları oluşturmak için en son teknolojileri kullanmaya büyük ilgi duyuyorum. Konuşma tanıma, veri analizi ve raporlama, MLOps, konuşma yapay zekası ve NLP alanlarında güçlü bir geçmişe sahip olarak, gerçek bir etki yaratabilecek akıllı sistemler geliştirme becerilerimi geliştirdim. Teknik uzmanlığımın yanı sıra, karmaşık kavramları açık ve özlü bir dille ifade etme yeteneğine sahip, becerikli bir iletişimciyim. Sonuç olarak, veri bilimi konusunda aranan bir blog yazarı oldum ve giderek büyüyen veri profesyonelleri topluluğuyla görüşlerimi ve deneyimlerimi paylaşıyorum. Şu anda, içerik oluşturma ve düzenlemeye odaklanıyorum. Büyük dil modelleriyle çalışarak, hem işletmelerin hem de bireylerin verilerinden en iyi şekilde yararlanmalarına yardımcı olabilecek güçlü ve ilgi çekici içerikler geliştiriyorum.

Konular
Veri Bilimi
İlgili

blog

Hızlı Sevkiyat İçin Pratik Vibe Kodlama Teknoloji Yığını

Ön uç, arka uç, veritabanları, kimlik doğrulama, depolama, e-posta, test, dağıtım ve izleme için en iyi araçları keşfedin.
Abid Ali Awan's photo

Abid Ali Awan

14 dk.

blog

2026’da En Popüler 40 Yazılım Mühendisi Mülakat Sorusu

Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Dario Radečić's photo

Dario Radečić

15 dk.

Eğitim

Python'da Listeyi String'e Nasıl Dönüştürürsünüz

Bu hızlı eğitimde, Python'da bir listeyi string'e nasıl dönüştüreceğinizi öğrenin.
Adel Nehme's photo

Adel Nehme

Eğitim

.gitignore Nasıl Kullanılır: Örneklerle Pratik Bir Giriş

Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Kurtis Pykes 's photo

Kurtis Pykes

8 dk.

Devamını Gör