Lojistik Regresyon, özellikle sınıflandırma problemlerinde kullanılan yaygın bir makine öğrenmesi yöntemidir. Bu yöntemi anlamak için basit bir örnek üzerinden gidelim ve Python kodu ile uygulayalım.
Öncelikle, Lojistik Regresyonun temel fikri, verilen girdiler (özellikler) kullanılarak bir sonucun (genellikle iki sınıf, örneğin evet veya hayır) olasılığını tahmin etmektir. Bu, bir sigmoit fonksiyonu kullanılarak yapılır, bu fonksiyon girdi değerlerini 0 ile 1 arasında bir olasılık değerine dönüştürür.
Basit Bir Örnek
Diyelim ki, bir öğrencinin sınavdan geçip geçmediğini tahmin etmek istiyoruz. Bunun için iki özellik kullanacağız: çalışma saatleri ve önceki sınav notları.
Adım 1: Veri Setinin Hazırlanması
Öncelikle, bu örnek için basit bir veri seti oluşturalım. Gerçek dünyada, veriler genellikle bir veri tabanından veya bir dosyadan gelir.
import pandas as pd
import numpy as np
# Örnek veri seti
data = {
'Calisma_Saatleri': [2, 3, 4, 5, 6, 7, 8, 9, 10],
'Onceki_Not': [40, 50, 60, 70, 80, 90, 65, 75, 85],
'Gecti': [0, 0, 0, 1, 1, 1, 0, 1, 1]
}
df = pd.DataFrame(data)
Adım 2: Veri Setini Görselleştirme
Veriyi anlamak için basit bir görselleştirme yapalım.
import matplotlib.pyplot as plt
plt.scatter(df['Calisma_Saatleri'], df['Gecti'], color='blue', label='Çalışma Saatleri')
plt.scatter(df['Onceki_Not'], df['Gecti'], color='red', label='Önceki Not')
plt.xlabel('Özellikler')
plt.ylabel('Geçti (1) / Kaldı (0)')
plt.legend()
plt.show()
Adım 3: Lojistik Regresyon Modelinin Oluşturulması
Şimdi, lojistik regresyon modelini oluşturalım ve eğitelim.
from sklearn.linear_model import LogisticRegression
# Özellikler ve hedef sütunu ayırma
X = df[['Calisma_Saatleri', 'Onceki_Not']]
y = df['Gecti']
# Modelin oluşturulması ve eğitilmesi
model = LogisticRegression()
model.fit(X, y)
Adım 4: Tahmin Yapma
Modeli kullanarak tahminler yapabiliriz. Örneğin, bir öğrenci 6 saat çalıştı ve önceki notu 70 ise, sınavdan geçip geçmeyeceğini tahmin edebiliriz.
# Tahmin yapma
ogrenci_ornek = np.array([[6, 70]]) # 6 saat çalışma, 70 önceki not
tahmin = model.predict(ogrenci_ornek)
tahmin_olasiligi = model.predict_proba(ogrenci_ornek)
print("Tahmin: ", "Geçti" if tahmin[0] == 1 else "Kaldı")
print("Geçme Olasılığı: {:.2f}%".format(tahmin_olasiligi[0][1] * 100))
Bu kod, verilen örneğin sınıfını (geçti/kaldı) ve geçme olasılığını tahmin eder.
Adım 5: Modelin Değerlendirilmesi
Modelin performansını değerlendirmek için, genellikle gerçek veriler üzerinde çapraz doğrulama yapılır. Bu örnekte, basitlik adına, modelin doğruluğunu kontrol etmek için veri setinin bir kısmını test olarak ayırabiliriz.
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 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.3, random_state=42)
# Modelin eğitimi
model = LogisticRegression()
model.fit(X_train, y_train)
# Test verisi üzerinde tahmin yapma
y_pred = model.predict(X_test)
# Doğruluk skorunun hesaplanması
accuracy = accuracy_score(y_test, y_pred)
print("Model Doğruluğu: {:.2f}%".format(accuracy * 100))
Bu adımda, veri setinin bir kısmı modeli eğitmek için kullanılırken, kalan kısmı modelin ne kadar iyi performans gösterdiğini değerlendirmek için kullanılır. accuracy_score, modelin doğruluğunu yüzde olarak verir.
Grafikte, mavi noktalar mevcut öğrenci verilerini (çalışma saatleri ve sınavdan geçme durumu) temsil ederken, kırmızı "x" işareti, 6 saat çalışma ve 70 önceki nota sahip bir öğrenci için modelin tahminini göstermektedir. Bu görselleştirme, modelin belirli bir öğrenci için sınavdan geçip geçmeyeceği konusundaki tahminini nasıl yaptığını anlamamıza yardımcı olur.
Sonuç
Bu basit örnek, Lojistik Regresyonun temel adımlarını ve nasıl Python ile uygulanabileceğini göstermektedir. Gerçek dünya uygulamalarında, veri ön işleme, özellik mühendisliği ve model ayarlama gibi daha fazla adım gerekebilir. Bununla birlikte, bu örnek, Lojistik Regresyonun temellerini anlamanız için iyi bir başlangıç noktasıdır.
Örnek Senaryolar ve Veri Setleri
Lojistik Regresyon için bazı örnek senaryolar ve bunlara uygun basit veri setleri önermek mümkündür. Bu senaryolar, gerçek hayattan alınan örnekler olup, Lojistik Regresyonun nasıl uygulanabileceğini gösterir.
1. Kredi Onayı
Senaryo:
Bir banka, müşterilerin kredi başvurularını onaylayıp onaylamayacağını tahmin etmek istiyor. Müşterilerin gelir düzeyi, kredi skoru ve geçmiş borç ödeme durumu gibi özellikler kullanılıyor.
Örnek Veri Seti:
data = {
'Gelir': [30000, 45000, 80000, 120000, 60000, 40000, 75000, 50000, 100000],
'Kredi_Skoru': [600, 700, 800, 900, 650, 550, 750, 680, 720],
'Gecmis_Borc_Odeme': [0, 1, 1, 1, 0, 0, 1, 1, 1], # 1: İyi, 0: Kötü
'Kredi_Onay': [0, 1, 1, 1, 0, 0, 1, 1, 1] # 1: Onay, 0: Red
}
2. Hastalık Teşhisi
Senaryo:
Bir sağlık kurumu, hastaların belirli semptomlara göre bir hastalığa sahip olup olmadığını tahmin etmek istiyor. Semptomların yanı sıra, hastaların yaşı ve cinsiyeti gibi demografik bilgiler de dikkate alınıyor.
Örnek Veri Seti:
data = {
'Yas': [25, 35, 45, 55, 65, 30, 40, 50, 60],
'Cinsiyet': [1, 0, 1, 0, 1, 0, 1, 0, 1], # 1: Erkek, 0: Kadın
'Ateş': [1, 0
, 1, 0, 1, 1, 0, 1, 1], # 1: Var, 0: Yok
'Öksürük': [0, 1, 1, 0, 1, 1, 0, 0, 1], # 1: Var, 0: Yok
'Hastalik_Teshisi': [0, 1, 1, 0, 1, 1, 0, 0, 1] # 1: Hastalık Var, 0: Yok
}
### 3. Üniversite Kabul Tahmini
#### Senaryo:
Bir üniversite, aday öğrencilerin sınav sonuçlarına ve lise not ortalamalarına göre üniversiteye kabul edilip edilmeyeceğini tahmin etmek istiyor.
#### Örnek Veri Seti:
data = {
'Sınav_Skoru': [85, 90, 88, 97, 76, 87, 94, 78, 84],
'Lise_Not_Ortalamasi': [3.5, 3.8, 3.2, 3.9, 3.0, 3.3, 3.7, 2.8, 3.4],
'Kabul': [1, 1, 1, 1, 0, 0, 1, 0, 0] # 1: Kabul Edildi, 0: Reddedildi
}
4. Müşteri Ayrılma Tahmini (Churn Prediction)
Senaryo:
Bir telekomünikasyon şirketi, müşterilerin aboneliklerini iptal edip etmeyeceklerini (churn) tahmin etmeye çalışıyor. Müşteri kullanım verileri ve demografik bilgiler bu tahmin için kullanılıyor.
Örnek Veri Seti:
data = {
'Aylik_Fatura': [50, 55, 60, 100, 30, 70, 45, 85, 95],
'Abonelik_Suresi': [12, 24, 36, 48, 60, 15, 27, 33, 45], # Ay cinsinden
'Musteri_Yasi': [30, 40, 25, 35, 45, 50, 20, 55, 65],
'Churn': [0, 1, 0, 1, 0, 1, 0, 1, 1] # 1: Ayrıldı, 0: Ayrılmadı
}
Bu senaryolar, Lojistik Regresyonun farklı alanlarda nasıl kullanılabileceğini göstermektedir. Gerçek dünya veri setleri genellikle daha karmaşık ve daha fazla özellik içerir, ancak bu basit örnekler, Lojistik Regresyon modelinin temel kullanımını ve uygulama alanlarını anlamak için yararlı olabilir. Bu veri setlerini kullanarak, Lojistik Regresyon modelini Python'da uygulayabilir ve sonuçları değerlendirebilirsiniz.