Naive Bayes: Temel Bilgiler
Naive Bayes, makine öğrenmesi ve istatistikte yaygın olarak kullanılan basit ama etkili bir sınıflandırma algoritmasıdır. Temel prensibi, Bayes teoremi üzerine inşa edilmiştir ve ‘naiv’ yani ‘saf’ ifadesi, özelliklerin birbirinden bağımsız olduğu varsayımından gelmektedir. Bu algoritma, özellikle metin sınıflandırma, spam tespiti ve duygu analizi gibi uygulamalarda oldukça başarılıdır.
Naive Bayes algoritması, veri kümesindeki her bir özellik için, belirli bir sınıfa ait olma olasılığını hesaplar. Özelliklerin bağımsızlığı varsayımı, algoritmanın hesaplama süresini önemli ölçüde azaltır, bu da onu büyük veri kümesi ile çalışmak için ideal kılar. Bu yazıda, Naive Bayes algoritmasını kullanarak bir sınıflandırma yapılacak ve ardından sonuçların görselleştirilmesi için Python’da grafikler oluşturulacaktır.
İlk olarak, Naive Bayes hakkında yapılan tanım ve çalışma prensibi ile ilgili temel bilgileri ele aldıktan sonra, uygulama aşamasına geçeceğiz. Python kütüphanelerinin gücünden faydalanarak, Naive Bayes sınıflandırıcısını nasıl uygulayacağımızı ve sonuçları nasıl görselleştireceğimizi adım adım inceleyeceğiz.
Python’da Naive Bayes Sınıflandırıcısı Oluşturma
Python’da Naive Bayes sınıflandırması yapmak için genellikle scikit-learn kütüphanesi tercih edilmektedir. Bu kütüphane, makine öğrenimi uygulamalarını kolaylaştıran bir çok yerleşik sınıflandırıcı sağlar. İlk olarak, gerekli kütüphaneleri kurabilir ve verimizi yükleyebiliriz:
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import accuracy_score
# Veriyi yükleyin (örnek olarak iris veri kümesi)
from sklearn.datasets import load_iris
iris = load_iris()
X = iris.data
y = iris.target
Yukarıdaki kod parçasında, iris veri kümesi yükleniyor ve özellikler X, hedef değerler ise y değişkenlerine atanıyor. Daha sonra verileri eğitim ve test setlerine ayıracağız:
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
Böylece, %80 eğitim ve %20 test veri setine ayırdık. Şimdi, Gaussian Naive Bayes algoritması ile modelimizi oluşturalım:
Modelimizi eğitim seti üzerinde eğittikten sonra, test seti üzerinde tahmin gerçekleştireceğiz:
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print('Doğruluk Skoru:', accuracy)
Bu noktada modelin doğruluk skoru hesaplanmış ve çıktı olarak verilmiştir. Şimdi, sınıflandırma sonuçlarımızı görselleştirmek için kullanılacak grafiklerin oluşturulmasına geçelim.
Sonuçların Görselleştirilmesi
Naive Bayes algoritmasının başarısını daha iyi anlayabilmek için sonuçları görselleştirmek önemlidir. Python’da Matplotlib ve Seaborn kütüphaneleri, grafiklerin görsel olarak çekici bir şekilde oluşturulmasında kullanılır. Öncelikle, gerekli kütüphaneleri yükleyelim:
import matplotlib.pyplot as plt
import seaborn as sns
Modelimizin tahmin sonuçlarını görselleştirmek için bir karmaşa matrisine bakalım. Karmaşa matrisleri, modelimizin her sınıf için ne kadar doğru tahmin yaptığını gösterir:
from sklearn.metrics import confusion_matrix
import seaborn as sns
cm = confusion_matrix(y_test, y_pred)
plt.figure(figsize=(8, 6))
sns.heatmap(cm, annot=True, fmt='d', cmap='Blues')
plt.xlabel('Tahmin Edilen Sınıf')
plt.ylabel('Gerçek Sınıf')
plt.title('Karmaşa Matris')
plt.show()
Yukarıdaki kod parçasında, karmaşa matrisini hesaplayarak, sonuçları sıcaklık haritası şeklinde görselleştirdik. Herbir hücre, gerçek sınıf ile tahmin edilen sınıf arasındaki eşleşmeleri göstermektedir. Bu görsel, modelin doğruluğunu ve hangi sınıflarda hatalar yaptığını hızlı bir şekilde değerlendirmemize yardımcı olur.
Bunun yanı sıra, sınıf dağılımlarını ve tahmin sonuçlarını daha iyi görmek için başka görselleştirme yöntemleri de kullanabiliriz. Örneğin, Naive Bayes sınıflandırıcısının her sınıf için olasılık dağılımlarını çizen bir grafik oluşturabiliriz:
plt.figure(figsize=(12, 8))
for i in range(len(iris.target_names)):
plt.subplot(2, 2, i + 1)
plt.title(f'Class: {iris.target_names[i]}')
sns.kdeplot(X[y == i, 0], X[y == i, 1], cmap='Blues', fill=True)
plt.show()
Bu grafik, her bir sınıf için olasılık yoğunluk fonksiyonlarını gösterir ve hangi özelliklerin sınıf ayrımında daha etkili olduğunu görselleştirir. Özelliklerin birbirleriyle olan ilişkisinin anlaşılması, modelimiz konusunda daha fazla içgörü sağlar.
Sonuç ve Öneriler
Naive Bayes, basit ama güçlü bir sınıflandırıcıdır ve python kullanarak çeşitli veri setleriyle etkin bir şekilde uygulanabilir. Bu yazıda, algoritmanın nasıl çalıştığını anlamakla birlikte, elde edilen sonuçları görsel hale getirerek analiz etmenin önemini keşfettik. Kullanıcılar, karmaşa matrisi ve olasılık dağılım grafiklerini kullanarak model performanslarını değerlendirebilirler.
Görselleştirme yöntemleri, sadece modelin doğruluk skorunu değerlendirmenin ötesine geçerek, kullanıcıya modelin nasıl çalıştığı ve hangi durumlarda daha iyi sonuçlar verdiği konusunda derin bir anlayış sağlar. Özellikle büyük veri setlerinde, bu tür analizler, daha ileriye dönük çalışmalarda hangi özelliklerin optimize edilmesi gerektiği konusunda bilgi sunar.
Son olarak, Naive Bayes ve diğer makine öğrenimi algoritmaları üzerinde çalışırken, veri ön işleme, özellik mühendisliği ve model değerlendirme aşamalarına dikkat edilmesi gerektiğini unutmayın. Algoritmanın en iyi performansını gösterebilmesi için veri kümenizin temiz ve iyi bir şekilde yapılandırılmış olması kritik öneme sahiptir.