![](https://crypto4nerd.com/wp-content/uploads/2023/06/1EF_asJdf-w_tia5rVeH3Ww.jpeg)
Naive Bayes sınıflandırma algoritmasını kullanarak bir cinsiyet sınıflandırma problemini çözmeyi öğreneceğiz. Bu algoritma, özelliklerin sınıflandırma etkisini ölçmek için kullanılan istatistiksel bir sınıflandırma yöntemidir. Veri setimizde, alın genişliği özelliklerini kullanarak bir kişinin cinsiyetini tahmin etmeye çalışacağız.
Veri Keşfi
Öncelikle, gerekli kütüphaneleri içe aktarıyoruz. Ardından, veri setini yükleyerek incelemeye başlıyoruz.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns# Veri setini yükleme
data = pd.read_csv('C:/Users/beker/OneDrive/Masaüstü/programming/naivebayes/gender_classification.csv')
# Veri setinin başını gösterme
data.head()
# Veri seti hakkında genel bilgileri gösterme
data.info()
# Eksik değer kontrolü
data.isnull().sum()
# Temel istatistiksel özet
data.describe()
# Korelasyon matrisini görselleştirme
f, ax = plt.subplots(figsize=(12, 10))
sns.heatmap(data.corr(), annot=True, linewidths=0.5, linecolor="blue", fmt=".4f", ax=ax)
plt.show()
Veri Görselleştirme
Veri setini daha iyi anlamak için görselleştirmeler yapmak önemlidir. İlk olarak, özellikler arasındaki ilişkiyi görmek için bir korelasyon matrisi oluşturuyoruz. Ardından, cinsiyetin alın ve alın genişliğiyle ilişkisini göstermek için scatter plot (dağılım grafiği) kullanıyoruz.
# Özelliklerin dağılımını gösteren scatter plot
sns.pairplot(data, hue="gender")# Cinsiyet sayısını gösteren count plot
sns.countplot(x="gender", data=data)
# Cinsiyet sayılarını hesaplama
data["gender"].value_counts()
Veri Hazırlama
Naive Bayes algoritmasını kullanabilmek için veri setini uygun bir şekilde hazırlamamız gerekmektedir. Bu adımda, cinsiyet değişkenini sayısal bir formata dönüştürerek veri setini işlemeye hazır hale getiriyoruz.
# Cinsiyet değişkenini sayısal formata dönüştürme
data["gender"] = [1 if gender == "Male" else 0 for gender in data["gender"]]# Bağımsız değişkenleri ve hedef değişkeni ayırma
x_data = data.drop(["gender"], axis=1)
y_data = data["gender"].values
Eğitim ve Test Bölümleme
Veri setini eğitim ve test verisi olarak ayırarak modelimizi eğiteceğiz ve performansını değerlendireceğiz.
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score# Veri setini eğitim ve test verisi olarak ayırma
x_train, x_test, y_train, y_test = train_test_split(x_data, y_data, test_size=0.3, random_state=748)
Gaussian Naive Bayes
İlk olarak, GaussianNB sınıflandırma modelini oluşturup eğitim verileriyle uyumlu hale getiriyoruz. Ardından, eğitim ve test doğruluğunu hesaplıyoruz.
from sklearn.naive_bayes import GaussianNB# GaussianNB modelini oluşturma ve eğitim verileriyle uyumlu hale getirme
gnb = GaussianNB()
gnb.fit(x_train, y_train)
# Eğitim verileri üzerinde doğruluk hesaplama
train_accuracy = gnb.score(x_train, y_train)
print("Eğitim Doğruluğu (GaussianNB):", train_accuracy)
# Test verileri üzerinde doğruluk hesaplama
test_accuracy = gnb.score(x_test, y_test)
print("Test Doğruluğu (GaussianNB):", test_accuracy)
Diğer Naive Bayes Modelleri
Aynı işlemi diğer Naive Bayes modelleri (MultinomialNB, BernoulliNB, ComplementNB) için tekrarlayarak performanslarını karşılaştırıyoruz.
from sklearn.naive_bayes import MultinomialNB, BernoulliNB, ComplementNB# MultinomialNB modelini oluşturma ve eğitim verileriyle uyumlu hale getirme
mnb = MultinomialNB()
mnb.fit(x_train, y_train)
# BernoulliNB modelini oluşturma ve eğitim verileriyle uyumlu hale getirme
bnb = BernoulliNB()
bnb.fit(x_train, y_train)
# ComplementNB modelini oluşturma ve eğitim verileriyle uyumlu hale getirme
cnb = ComplementNB()
cnb.fit(x_train, y_train)
# Her bir modelin eğitim ve test doğruluklarını hesaplama ve karşılaştırma
print("Eğitim Doğruluğu (MultinomialNB):", mnb.score(x_train, y_train))
print("Test Doğruluğu (MultinomialNB):", mnb.score(x_test, y_test))
print("Eğitim Doğruluğu (BernoulliNB):", bnb.score(x_train, y_train))
print("Test Doğruluğu (BernoulliNB):", bnb.score(x_test, y_test))
print("Eğitim Doğruluğu (ComplementNB):", cnb.score(x_train, y_train))
print("Test Doğruluğu (ComplementNB):", cnb.score(x_test, y_test))
Sonuçlar ve Değerlendirme
Naive Bayes modellerini eğittiğimiz ve test verileri üzerinde doğruluk hesapladığımız sonuçları gösteriyoruz.
# GaussianNB modelinin test verisi üzerinde doğruluk skoru
y_pred_gnb = gnb.predict(x_test)
gnb_accuracy = accuracy_score(y_test, y_pred_gnb)
print("GaussianNB Model Doğruluğu:", gnb_accuracy)# MultinomialNB modelinin test verisi üzerinde doğruluk skoru
y_pred_mnb = mnb.predict(x_test)
mnb_accuracy = accuracy_score(y_test, y_pred_mnb)
print("MultinomialNB Model Doğruluğu:", mnb_accuracy)
# BernoulliNB modelinin test verisi üzerinde doğruluk skoru
y_pred_bnb = bnb.predict(x_test)
bnb_accuracy = accuracy_score(y_test, y_pred_bnb)
print("BernoulliNB Model Doğruluğu:", bnb_accuracy)
# ComplementNB modelinin test verisi üzerinde doğruluk skoru
y_pred_cnb = cnb.predict(x_test)
cnb_accuracy = accuracy_score(y_test, y_pred_cnb)
print("ComplementNB Model Doğruluğu:", cnb_accuracy)
Sonuç olarak
Veri setini kullanarak Naive Bayes algoritmasını uyguladık ve farklı modellerin doğruluk sonuçlarını elde ettik. Bu sonuçlara göre, en yüksek doğruluğa sahip modelin hangisi olduğunu belirleyebilir ve cinsiyet sınıflandırması yapabiliriz.