Giriş: Naive Bayes Nedir?
Naive Bayes, istatistiksel bir sınıflandırma algoritmasıdır ve makine öğrenmesi alanında yaygın olarak kullanılmaktadır. Temel prensibi, Bayes Teoremi’ni kullanarak, verilmiş bir veri noktası için en olası sınıfı tahmin etmektir. ‘Naive’ (saf) olarak adlandırılmasının nedeni, sınıflandırıcıdan farklı özelliklerin birbirinden bağımsız olduğu varsayımıdır. Bu, uygulama açısından oldukça basit hale getirirken aynı zamanda bazı durumlarda oldukça etkili sonuçlar elde etmemizi sağlar.
Naive Bayes sınıflandırıcısının en büyük avantajlarından biri, özellikle yüksek boyutlu verilerde hızlı bir şekilde çalışabilmesidir. Ayrıca, eğitim verisi üzerinde düşük ön işleme gereksinimi vardır; bu nedenle, verilerinizi hızlı bir şekilde modele sokabilirsiniz. Pazar araştırmasından e-posta spam filtrelemeye kadar birçok alanda kullanılmaktadır.
Bu yazıda, Python programlama dili kullanarak Naive Bayes sınıflandırıcısını nasıl oluşturacağımızı adım adım inceleyeceğiz. Gerekli kütüphaneleri yüklemekle başlayarak, veri setimizi hazırlayacak, modeli eğitecek ve sonuçları değerlendireceğiz.
Gerekli Kütüphanelerin Kurulumu
Python ile Naive Bayes sınıflandırıcısını kullanmak için birkaç popüler kütüphaneye ihtiyacımız var. Bunlar arasında NumPy, Pandas ve scikit-learn bulunmaktadır. NumPy, matematiksel işlemler ve diziler ile çalışmak için gerekli olan bir kütüphanedir. Pandas, veri manipülasyonu ve analizi için güçlü bir araçtır. Son olarak, scikit-learn, makine öğrenimi modelleri ve algoritmaları için kapsamlı bir kütüphanedir.
Öncelikle, eğer bu kütüphaneler henüz bilgisayarınıza kurulu değilse, aşağıdaki pip komutları ile yükleyebilirsiniz:
pip install numpy
pip install pandas
pip install scikit-learn
Yukarıdaki komutları terminal veya komut istemcisine yazarak gerekli kütüphaneleri yükleyin. Kurulum tamamlandıktan sonra, Python dosyanızda bu kütüphaneleri içe aktarmaya hazırız.
Veri Setimizin Hazırlanması
Naive Bayes’in işleyebilmesi için öncelikle bir veri setine ihtiyacımız var. Bu örnekte, popüler iris çiçeği veri setini kullanacağız. Iris veri seti, türleri arasında sınıflandırmak için çeşitli özelliklere sahip çiçeklerin örneklerini içerir. Bu veri seti scikit-learn kütüphanesi içinde yer alır ve bu nedenle yüklenmesi oldukça kolaydır.
Aşağıdaki kod ile iris veri setini yükleyebilir ve içeriğine göz atabiliriz:
from sklearn.datasets import load_iris
import pandas as pd
iris = load_iris()
iris_df = pd.DataFrame(data=iris.data, columns=iris.feature_names)
iris_df['target'] = iris.target
print(iris_df.head())
Bu kod bloğuyla iris verilerimizi yükledik ve ilk 5 satırı görüntüledik. Her bir çiçek örneği, sepal uzunluğu, sepal genişliği, petal uzunluğu ve petal genişliği gibi dört özellik ile temsil ediliyor. ‘target’ sütunu ise her bir örneğin ait olduğu türü göstermektedir.
Veri Setinin Varsayılan ve Eğitim/Doğrulama Setine Ayrılması
Modelimizi eğitmeden önce, veri setimizi eğitim ve doğrulama setlerine ayırmamız gerekli. Bu, modelimizin performansını doğru bir şekilde değerlendirmemizi sağlar. scikit-learn kütüphanesi, bu işlemi kolaylaştırmak için train_test_split
fonksiyonunu sunmaktadır.
Aşağıdaki kod ile veri setimizi %80 eğitim ve %20 doğrulama olarak ayıralım:
from sklearn.model_selection import train_test_split
X = iris_df[iris.feature_names]
y = iris_df['target']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
Burada, X
ve y
değişkenleri ile özellik ve hedef değişkenlerimizi tanımladık. train_test_split
fonksiyonu, verimizi iki set arasında ayırdı. Eğitim seti, modelin öğrenmesi için kullanılacak, doğrulama seti ise modelin başarısını test etmek için kullanılacaktır.
Naive Bayes Sınıflandırıcısının Eğitilmesi
Artık verimizi hazırladığımız için Naive Bayes modelimizi oluşturma aşamasına geçebiliriz. Scikit-learn, Naive Bayes için birkaç farklı model sunmaktadır; bunlar arasında GaussianNB, MultinomialNB ve BernoulliNB bulunmaktadır. Iris veri seti için GaussianNB modeli uygun bir seçimdir çünkü verilerimiz sürekli değerlere sahiptir.
Aşağıdaki kod parçası ile Naive Bayes modelimizi eğitelim:
from sklearn.naive_bayes import GaussianNB
model = GaussianNB()
model.fit(X_train, y_train)
Burada, GaussianNB
modelimizi oluşturuyor ve fit
fonksiyonu ile eğitim setimizi kullanarak modeli eğitiyoruz. Modelin başarılı bir şekilde eğitildiğini varsayarak, şimdi doğrulama setimizle tahminler yapmaya geçebiliriz.
Model Performansının Değerlendirilmesi
Modelimizi eğittikten sonra, doğrulama setimiz üzerinde tahminlerde bulunmamız gerekiyor. Bunun için, predict
metodunu kullanarak tahminlerimizi elde edebiliriz:
y_pred = model.predict(X_test)
Sonrasında, modelimizin doğruluğunu değerlendirmek için çeşitli metrikler kullanabiliriz. En yaygın olarak kullanılan metriklerden birisi doğruluk oranıdır. Bu, doğru tahminlerin toplam tahminlere oranıdır. Aşağıdaki kod ile modelimizin doğruluğunu hesaplayabiliriz:
from sklearn.metrics import accuracy_score
accuracy = accuracy_score(y_test, y_pred)
print(f'Modelin doğruluğu: {accuracy * 100:.2f}%')
Bu çıktı, modelimizin doğruluğunu yüzde cinsinden gösterecektir. Modelimizin performansını daha iyi anlamak için ayrıca karmaşıklık matrisini de görselleştirebiliriz.
Karmaşıklık Matrisinin Görselleştirilmesi
Karmaşıklık matrisi, modelimizin hangi sınıfları doğru tahmin edip edemediğini gösterir. Bu matrisi oluşturmak ve görselleştirmek için aşağıdaki adımları takip edelim:
from sklearn.metrics import confusion_matrix
import seaborn as sns
import matplotlib.pyplot as plt
cm = confusion_matrix(y_test, y_pred)
plt.figure(figsize=(8, 6))
sns.heatmap(cm, annot=True, fmt='d', cmap='Blues', xticklabels=iris.target_names, yticklabels=iris.target_names)
plt.xlabel('Tahmin Edilen Sınıf')
plt.ylabel('Gerçek Sınıf')
plt.title('Karmaşıklık Matrisi')
plt.show()
Yukarıdaki kod, karışıklık matrisini görselleştirerek hangi sınıfın ne kadar doğru tahmin edildiğini görmemize olanak tanır. Bu görsel ile modelimizin hangi sınıflarda iyi performans gösterip göstermediğini kolayca değerlendirebiliriz.
Sonuç: Deneyimlerinizi Paylaşın
Bu yazıda, Python kullanarak Naive Bayes sınıflandırıcısını adım adım eğittik. Kütüphaneleri yüklemekten, veri setimizi hazırlamaya, modeli eğitmekten sonuçlarını değerlendirmeye kadar olan süreçleri inceledik. Naive Bayes sınıflandırıcısının basitliği ve verimliliği, onu birçok veri bilimi projesinde birinci seçenek haline getirir.
Artık kendi veri setlerinizle Naive Bayes algoritmasını deneyebilir ve sonuçlarınızı görmek için aynı adımları takip edebilirsiniz. Unutmayın ki, modelin performansını artırmak için veri ön işleme ve model ayarlamaları yapmanız gerekebilir.
Önerim, daha karmaşık veri setlerini denemek, farklı Naive Bayes modellerini uygulamak ve performanslarını karşılaştırmaktır. Python topluluğuna katılarak kendi deneyimlerinizi paylaşmayı unutmayın! Herkesin öğrenmesine katkıda bulunmak, topluluğumuzu güçlendirecektir.