Lojistik Regresyon ile Kredi Onayı Tahmini — Baştan Sona Makine Öğrenmesi Projeleri
Merhaba! Bugün, “Baştan Sona Makine Öğrenmesi Projeleri” serimize bir yenisini ekliyoruz. Bu yazımızda, lojistik regresyon algoritması kullanarak finansal verilerle kredi başvurularının onaylanıp onaylanmayacağını tahmin edeceğiz. Bu tarz bir model, bankalar ve kredi veren kurumlar tarafından yaygın olarak kullanılan bir yöntemdir. Modelimiz, eğitim durumu, iş durumu, gelir gibi faktörleri göz önünde bulundurarak kredi başvurularının onaylanıp onaylanmayacağını tahmin edecektir.
Adım 1: Gerekli Kütüphanelerin Yüklenmesi
Projeye başlamadan önce, ihtiyacımız olan Python kütüphanelerini yükleyelim:
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, classification_report, confusion_matrix
from sklearn.preprocessing import MinMaxScaler
import seaborn as sns
import matplotlib.pyplot as plt
Bu kütüphaneler, verimizi işlemenin, modeli eğitmenin ve sonuçları değerlendirmenin temel araçlarıdır.
Adım 2: Veriyi Yükleme ve İnceleme
İlk olarak, kredi başvuru verimizi yüklemek için pandas
kütüphanesini kullanacağız. Verimizi CSV dosyasından okuyarak bir DataFrame formatına dönüştüreceğiz. Aşağıdaki kod ile verimizi yükleyip ilk 5 satırını gözden geçirelim:
df = pd.read_csv("loan_approval_dataset.csv")
df.head()
Bu işlemle, verimizin yapısını görebiliriz. df.columns
komutuyla veri setindeki tüm sütun isimlerini inceleyebiliriz. Bu veri setinde, başvuran kişinin eğitim durumu, iş durumu, gelir durumu gibi bilgileri yer alıyor.
Adım 3: Kategorik Verilerin Sayısal Değerlere Dönüştürülmesi
Veri setimizdeki bazı sütunlar kategorik verilere sahip ve bu tür veriler makine öğrenimi algoritmaları tarafından işlenemez. Bu nedenle, kategorik verileri sayısal verilere dönüştürmemiz gerekiyor. Örneğin, education
, self_employed
ve loan_status
sütunlarındaki verileri şu şekilde dönüştürebiliriz:
df['education'] = df['education'].map({' Not Graduate': 0, ' Graduate': 1})
df['self_employed'] = df['self_employed'].map({' No': 0, ' Yes': 1})
df['loan_status'] = df['loan_status'].map({' Rejected': 0, ' Approved': 1})
Bu dönüşümle, kategorik veriler sayısal hale gelir ve modelimizin bu verileri daha iyi öğrenmesini sağlar.
Adım 4: Özelliklerin ve Hedef Değişkenin Ayrılması
Veri setindeki her sütun, farklı bir özellik veya hedef değişkeni temsil ediyor. Burada, X
özelliklerimizi (giriş verilerimizi), y
ise hedef değişkenimizi (kredi onay durumu) temsil edecek şekilde ayırıyoruz:
X = df.drop(columns=['loan_status'])
y = df['loan_status']
Adım 5: Veriyi Normalize Etme
Makine öğrenimi modellerinin doğru çalışabilmesi için özelliklerin aynı ölçekte olması önemlidir. Özellikle bazı özelliklerin değerleri çok daha büyük olabilir, bu da modelin bu özelliklere odaklanmasına neden olabilir. Bu sorunu çözmek için verimizi normalize edeceğiz:
scaler = MinMaxScaler()
X = scaler.fit_transform(X)
Bu adımda, yalnızca X
üzerinde işlem yapıyoruz, çünkü y
hedef değişkenini etkilemek istemiyoruz.
Adım 6: Veriyi Eğitim ve Test Olarak Bölme
Modelimizin doğruluğunu test edebilmek için verimizi eğitim ve test setlerine ayırmamız gerekiyor. train_test_split
fonksiyonuyla verimizi %80 eğitim ve %20 test olarak ayıracağız:
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
Adım 7: Lojistik Regresyon Modeli ile Eğitme
Şimdi modelimizi oluşturalım. Lojistik regresyon, iki sınıf arasında karar vermek için kullanılan bir sınıflandırma algoritmasıdır. Kredi onayı durumu iki sınıfa ayrıldığı için lojistik regresyon, bu problem için mükemmel bir seçimdir:
logistic_model = LogisticRegression(max_iter=1000)
logistic_model.fit(X_train, y_train)
Adım 8: Modeli Değerlendirme
Modelimizi değerlendirmek için birkaç farklı metrik kullanacağız. İlk olarak doğruluk oranını hesaplayalım:
y_pred = logistic_model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"\nModel Doğruluk Oranı: {accuracy * 100:.2f}%")
Doğruluk oranı, modelimizin ne kadar doğru tahmin yaptığına dair bir gösterge olacaktır.
Adım 9: Karmaşıklık Matrisini Görselleştirme
Modelimizin performansını daha iyi anlayabilmek için bir karmaşıklık matrisi oluşturacağız. Karmaşıklık matrisi, modelin doğru ve yanlış tahminlerini görselleştiren bir araçtır:
conf_matrix = confusion_matrix(y_test, y_pred)
plt.figure(figsize=(8, 6))
sns.heatmap(conf_matrix, annot=True, fmt='d', cmap='Blues', xticklabels=['Rejected', 'Approved'], yticklabels=['Rejected', 'Approved'])
plt.title("Confusion Matrix")
plt.xlabel("Predicted")
plt.ylabel("Actual")
plt.show()
Bu grafik, modelimizin doğru ve yanlış tahminlerini gösterir. Ana köşegen üzerindeki değerler doğru tahminleri, diğer hücreler ise yanlış tahminleri temsil eder.
Sonuç ve Değerlendirme
Sonuç olarak, lojistik regresyon modeliyle kredi onayı tahminini başarıyla gerçekleştirdik. Eğitim durumu, gelir durumu gibi veriler kullanılarak kredi başvurularının onaylanıp onaylanmayacağı tahmin edilebilir. Modelimizin doğruluk oranı, test verileri üzerinde yapılan değerlendirme ile gösterilmektedir.
Bu projede kullanılan yöntemler, bankalar ve kredi veren kurumlar tarafından yaygın bir şekilde kullanılmakta olup, gerçek dünyada önemli bir yer tutmaktadır.
Bir sonraki yazımda görüşmek üzere hoşça kalın…