Elbette, Naive Bayes sınıflandırıcıyı basit bir örnek üzerinden anlatayım. Naive Bayes, istatistiksel bir sınıflandırma tekniğidir ve özellikle büyük veri kümelerinde hızlı ve etkilidir. Temel prensibi, her özelliğin diğerlerinden bağımsız olduğu varsayımına dayanır.
Örnek olarak, insanların outdoor aktivitelerine katılma eğilimlerini cinsiyet, yaş ve mevsime göre sınıflandıran basit bir veri seti kullanacağım. Veri setimiz şu şekilde olsun:
Cinsiyet: Erkek (E) veya Kadın (K)
Yaş: Genç (G) veya Yaşlı (Y)
Mevsim: Yaz (Yaz) veya Kış (Kış)
Outdoor Aktiviteye Katılma: Evet (E) veya Hayır (H)
Örnek veri setimiz şöyle olabilir:
Cinsiyet Yaş Mevsim Aktivite
E G Yaz E
K Y Kış H
E Y Yaz E
K G Kış H
E G Kış E
... ... ... ...
Bu veri seti üzerinde Naive Bayes sınıflandırması yapacağız. Python'da bu işlemi yapmak için pandas veri işleme kütüphanesini ve sklearn kütüphanesinin Naive Bayes modülünü kullanacağız. İlk olarak, bu örnek veri setini oluşturacağım ve ardından Naive Bayes modelini eğitip, bir test verisi üzerinde modelimizin tahminini göstereceğim. Sonrasında da modelin performansını değerlendireceğiz.
Tabii, aşağıda sizinle paylaştığım Python kodu, Naive Bayes sınıflandırmasını gerçekleştirmek için kullanılan adımları içerir. Bu kod, veri setinin oluşturulmasından modelin eğitilmesine, tahmin yapılmasına ve son olarak performansın değerlendirilmesine kadar olan süreci kapsar:
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import classification_report, confusion_matrix
import matplotlib.pyplot as plt
import seaborn as sns
# Örnek veri setini oluşturma
data = {
'Cinsiyet': ['E', 'K', 'E', 'K', 'E', 'K', 'E', 'K', 'E', 'K'],
'Yaş': ['G', 'Y', 'Y', 'G', 'G', 'Y', 'Y', 'G', 'G', 'Y'],
'Mevsim': ['Yaz', 'Kış', 'Yaz', 'Kış', 'Kış', 'Yaz', 'Yaz', 'Kış', 'Yaz', 'Kış'],
'Aktivite': ['E', 'H', 'E', 'H', 'E', 'H', 'E', 'H', 'E', 'H']
}
df = pd.DataFrame(data)
# Kategorik verileri sayısal değerlere dönüştürme
df_encoded = pd.get_dummies(df, columns=['Cinsiyet', 'Yaş', 'Mevsim'])
# Giriş ve çıktı verilerini ayırma
X = df_encoded.drop('Aktivite', axis=1)
y = df_encoded['Aktivite']
# Veri setini eğitim ve test setlerine ayırma
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Naive Bayes modelini eğitme
model = GaussianNB()
model.fit(X_train, y_train)
# Test verisi üzerinde tahmin yapma
y_pred = model.predict(X_test)
# Performans değerlendirmesi
report = classification_report(y_test, y_pred)
conf_matrix = confusion_matrix(y_test, y_pred)
# Confusion matrix'i görselleştirme
plt.figure(figsize=(8, 6))
sns.heatmap(conf_matrix, annot=True, fmt='d', cmap='Blues')
plt.xlabel('Tahmin Edilen')
plt.ylabel('Gerçek Değer')
plt.title('Confusion Matrix')
plt.show()
Bu kod, yukarıda tanımladığımız basit bir veri seti üzerinde çalışacak şekilde tasarlanmıştır. Gerçek dünya uygulamalarında, veri setinin daha büyük ve karmaşık olduğunu göz önünde bulundurarak, uygun veri ön işleme adımları uygulamanız gerekebilir.Hadi başlayalım! Öncelikle veri setini oluşt
Output image
Veri setimiz ve Naive Bayes modelinin uygulamasını başarıyla tamamladık. İşte veri setimiz:
Cinsiyet Yaş Mevsim Aktivite
E G Yaz E
K Y Kış H
E Y Yaz E
K G Kış H
E G Kış E
... ... ... ...
Veri setini kategorik değerlerden sayısal değerlere dönüştürdük ve eğitim/test setlerine ayırdık. Naive Bayes modelimizi eğittik ve test seti üzerinde tahminler yaptık.
Modelimizin performansını değerlendirdiğimizde, yüksek doğruluk oranı gözlemledik. Model, test setindeki örneklerin hepsini doğru sınıflandırdı. Performans raporu şöyle:
Doğruluk (Accuracy): %100
Hassasiyet (Precision): %100
Geri Çağırma (Recall): %100
F1 Puanı: %100
İşte modelimizin confusion matrix'i (karışıklık matrisi), bu matris modelin her sınıf için tahminlerinin doğruluğunu gösterir:
Bu basit örnek, Naive Bayes sınıflandırıcısının temel prensiplerini ve Python'da nasıl uygulanabileceğini gösteriyor. Gerçek dünya veri setleri genellikle daha karmaşık olup, daha fazla önişleme ve ayar gerektirir, ancak bu örnek temel bir başlangıç noktası sağlar.
Örnek senaryolar ve veri setleri verir misin?
Tabii ki, Naive Bayes sınıflandırması için farklı senaryolar ve uygun veri setleri örnekleri verebilirim. İşte birkaç farklı senaryo ve onlara uygun basit veri setleri:
1. E-posta Spam Filtreleme
Bu senaryoda, e-postaların spam (istenmeyen) ya da ham (istenilen) olduğunu belirlemek için Naive Bayes kullanılır.
Örnek Veri Seti:
Özellikler: E-posta içeriğindeki belirli kelimeler (örneğin: "ücretsiz", "teklif", "abone", "tıklayın")
Sınıflar: Spam, Ham
Ücretsiz Teklif Abone Tıklayın Sınıf
1 0 1 1 Spam
0 1 0 1 Spam
0 0 0 0 Ham
1 1 1 0 Spam
0 0 0 1 Ham
2. Hastalık Teşhisi
Bu senaryoda, belirli semptomlara göre hastalıkların teşhis edilmesinde Naive Bayes kullanılabilir.
Örnek Veri Seti:
Özellikler: Semptomlar (örneğin: "ateş", "öksürük", "baş ağrısı")
Sınıflar: Çeşitli hastalıklar (örneğin: "Grip", "Soğuk Algınlığı", "Alerji")
Ateş Öksürük Baş Ağrısı Teşhis
1 1 0 Grip
0 1 0 Soğuk Algınlığı
0 0 1 Alerji
1 1 1 Grip
0 1 1 Alerji
3. Müşteri Sınıflandırma
Bu senaryoda, müşterilerin bir ürünü satın alıp almayacaklarına karar vermek için Naive Bayes kullanılabilir.
Örnek Veri Seti:
Özellikler: Müşteri demografisi ve davranışları (örneğin: "yaş", "gelir", "önceki alışverişler")
Sınıflar: Satın Aldı, Satın Almadı
Yaş Gelir Önceki Alışverişler Satın Alma Durumu
Genç Düşük Yüksek Hayır
Orta Orta Düşük Evet
Yaşlı Yüksek Orta Hayır
Genç Orta Yüksek Evet
Orta Düşük Düşük Hayır
Bu örnekler, Naive Bayes sınıflandırmasının çeşitli alanlardaki uygulamalarını temsil eder. Gerçek veri setleri genellikle daha karmaşık olabilir ve ön işleme, özellik seçimi gibi ek
adımlar gerektirebilir. Bu örnekler, Naive Bayes modelinin nasıl farklı senaryolarda kullanılabileceğine dair temel fikirleri vermektedir:
4. Finansal Risk Değerlendirmesi
Bankalar ve finans kurumları, kredi başvurularını değerlendirirken müşterilerin kredi riskini belirlemek için Naive Bayes kullanabilir.
Örnek Veri Seti:
Özellikler: Kredi skoru, gelir düzeyi, mevcut borçlar, geçmiş ödeme geçmişi.
Sınıflar: Düşük Risk, Orta Risk, Yüksek Risk
Kredi Skoru Gelir Düzeyi Mevcut Borçlar Ödeme Geçmişi Risk Durumu
Yüksek Yüksek Düşük İyi Düşük Risk
Orta Orta Orta Orta Orta Risk
Düşük Düşük Yüksek Kötü Yüksek Risk
... ... ... ... ...
5. Ürün Tavsiye Sistemi
E-ticaret platformları, kullanıcıların geçmiş alışveriş ve gezinme davranışlarına dayanarak ürün önerileri yapmak için Naive Bayes kullanabilir.
Örnek Veri Seti:
Özellikler: Geçmiş alışveriş verileri, ürün kategorileri, kullanıcı derecelendirmeleri.
Sınıflar: Ürün kategorileri (örneğin: Elektronik, Giyim, Kitap)
Alışveriş Geçmişi Kullanıcı Derecelendirmesi Ürün Kategorisi Tavsiye Edilen Kategori
Elektronik Yüksek Kitap Elektronik
Giyim Orta Elektronik Giyim
Kitap Düşük Giyim Kitap
... ... ... ...
Bu örnek senaryolar, Naive Bayes'in çeşitli veri türleri ve alanlar üzerinde nasıl uygulanabileceğini
göstermektedir. Her bir senaryo, belirli bir probleme özgü özellikler ve sınıflar içerir. Naive Bayes modelinin başarısı, veri setinin doğru şekilde hazırlanması ve uygun özelliklerin seçilmesine bağlıdır. Ön işleme, özellik seçimi ve model parametrelerinin ayarlanması, gerçek dünya veri setlerinde çok önemlidir.
Bu senaryoların her biri, Naive Bayes sınıflandırıcısının pratikte nasıl uygulanabileceğine dair bir örnek sunar. Gerçek veri setleri genellikle daha büyük, daha karmaşık ve daha az düzenlidir, bu nedenle gerçek dünya uygulamalarında veri ön işleme ve analizi önemli bir rol oynar.