Naive Bayes ile Python’da Makine Öğrenimi Örneği

Giriş

Naive Bayes, makine öğrenimi alanında sıkça tercih edilen ve özellikle metin sınıflandırma problemlerinde etkili olan bir olasılık tabanlı sınıflandırma yöntemidir. Adını, bağımsızlık varsayımından alır; çünkü her bir özellik (ya da sınıflandırmaya katkıda bulunan faktör) birbirinden bağımsız varsayılır. Bu yöntem, özellikle düşük veri setlerinde hızlı ve etkili sonuçlar elde edebilmesiyle bilinir. Bu yazıda, Python’da Naive Bayes yöntemini kullanarak bir sınıflandırma problemi üzerinde uygulamalı örnekler ile ilerleyeceğiz.

Naive Bayes Nedir?

Naive Bayes sınıflandırıcısı, Bayes teoreminin bir uygulamasıdır. Bayes teoremi, öncüller ile sonuçlar arasındaki olasılıkları hesaplamak için kullanılır. Naive Bayes, özellikle kelime tabanlı veri sınıflandırmalarında (örneğin, e-posta spam filtrelemesi) oldukça etkilidir. Naive Bayes modeli, bir gözlem noktası için verilen her bir sınıfın olasılığını hesaplar ve en yüksek olasılığa sahip sınıfı tahmin eder.

Modelin temel fikirlerinden biri, her özelliğin (kelime, cümle vb.) sınıfa katkısının bağımsız olduğu varsayımıdır. Bu, bir özelliğin diğerleri üzerindeki etkisini göz ardı eder. Bu sadelik, modelin hızlı bir şekilde çalışmasına ve sınıflandırma sonuçlarının elde edilmesine yardımcı olur. Her ne kadar bazı durumlarda bu varsayım gerçekçi olmasa da, Naive Bayes birçok pratik uygulamada oldukça etkili sonuçlar vermektedir.

Naive Bayes modelleri genellikle üç türde sınıflandırıcı ile gelir: Gaussian Naive Bayes, Bernoulli Naive Bayes ve Multinomial Naive Bayes. Her biri, belirli türde verilere göre yapılandırılmıştır ve kullanıma sunulduğunda avantajlardan yararlanma sağlar.

Python’da Naive Bayes Kullanımı

Python, veri bilimi ve makine öğrenimi alanında oldukça popüler bir programlama dilidir. Bu alanda kullanılabilecek birçok kütüphane ve araç mevcuttur. Naive Bayes modelini Python’da uygulamak için en yaygın kullanılan kütüphane, scikit-learn‘dır. Bu kütüphane, makine öğrenimi işlemlerini oldukça basit ve hızlı bir şekilde gerçekleştirmenizi sağlar.

Bir Naive Bayes sınıflandırıcısı ile çalışmaya başlamak için verilere ihtiyacımız var. Aşağıdaki örnekte, birkaç temel islemle rastgele bir veri seti oluşturacak ve ardından bu verileri kullanarak bir Naive Bayes sınıflandırıcısının nasıl oluşturulacağını göstereceğiz.

Aşağıdaki kod parçacığını kullanarak veri setimizi oluşturabiliriz:

import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.datasets import make_classification

# Veri seti oluşturma
data, labels = make_classification(n_samples=1000, n_features=20, n_classes=2, random_state=42)

# Veriyi eğitim ve test setine ayırma
X_train, X_test, y_train, y_test = train_test_split(data, labels, test_size=0.25, random_state=42)

Burada, make_classification fonksiyonu kullanarak 20 özellik içeren 1000 örnekten oluşan bir veri seti oluşturuyoruz. Ardından, veri setimizi eğitim (bu örnekte %75) ve test (%25) setlerine ayırıyoruz.

Naive Bayes Modelinin Oluşturulması ve Eğitilmesi

Artık veri setimizi oluşturduğumuza göre, Naive Bayes modelimizi tanımlayabiliriz. Scikit-learn kütüphanesinde kullanabileceğimiz üç farklı Naive Bayes sınıflandırıcısı bulunmaktadır: Gaussian, Multinomial ve Bernoulli. Burada, veri setimizin özellikleri sayısal olduğu için Gaussian Naive Bayes modelini kullanacağız.

Aşağıda, Gaussian Naive Bayes ile modelimizi oluşturmaya ve eğitmeye yönelik kod parçacığı verilmiştir:

from sklearn.naive_bayes import GaussianNB

# Model oluşturma
model = GaussianNB()

# Modeli eğitme
model.fit(X_train, y_train)

Modelimizi tanımladıktan sonra, fit fonksiyonu ile eğitim verimizi kullanarak modeli eğittik. Bu süreç, modelin veri setinin özellikleri ile etkileşimde bulunarak sınıfların arasındaki ilişkileri öğrenmesine olanak sağlar.

Modelin Test Edilmesi

Modelimizi eğittikten sonra, test verilerimizi kullanarak bu modelin doğruluğunu değerlendirebiliriz. Aşağıdaki kod parçacığı, modeli test etmek ve doğruluğunu hesaplamak için kullanılabilir:

from sklearn.metrics import accuracy_score

# Test seti ile tahmin yapma
predictions = model.predict(X_test)

# Doğruluğu hesaplama
accuracy = accuracy_score(y_test, predictions)
print(f'Test setindeki doğruluk: {accuracy * 100:.2f}%')

Bu kodda, predict fonksiyonu ile test verimizi kullanarak tahminler elde ediyoruz ve ardından accuracy_score fonksiyonu ile modelimizin ne kadar doğru bir tahmin yaptığını hesaplıyoruz.

Sonuç

Naive Bayes sınıflandırıcısı, hızlı ve etkili bir şekilde sınıflandırma çözümleri sunan pratik bir yöntemdir. Özellikle metin verisi gibi yüksek boyutlu verilere sahip durumlarda başarılı sonuçlar elde edebilmekteyiz. Python ile bu tür modellemeleri yapmak oldukça kolaydır ve scikit-learn kütüphanesi bu süreçte bize büyük yardımcı olmaktadır.

Yukarıda, Gaussian Naive Bayes ile bir sınıflandırma probleminin nasıl ele alınacağını anladık. Oluşturduğumuz modelin sağladığı sonuçları değerlendirerek, makine öğrenimi uygulamalarında nasıl ilerleyebileceğimiz hakkında pratik bilgiler edindik. Bu temel bilgileri kullanarak, gerçek dünya veri setleri üzerinde daha karmaşık uygulamalara geçebiliriz.

Naive Bayes ile daha kapsamlı ve derinlemesine çalışmalar yapmak, sadece bir başlangıçtır. İlerleyen süreçte farklı veri setleri ve modeller ile deneyler yapmak, bizi makine öğrenimi ve veri bilimi disiplinlerinde daha da ileri taşıyacaktır. Bu nedenle, öğrendiklerinizi uygulamaya koymayı ihmal etmeyin ve yeni projeler üzerinde çalışarak deneyim kazanın.

Scroll to Top