Lojistik Regresyonu Anlamak: Python ile Adım Adım

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.

Please Select Embedded Mode To Show The Comment System.*

Daha yeni Daha eski

نموذج الاتصال