Logistic Regression Nedir?
Logistic regresyon, istatistik ve makine öğreniminde sıklıkla kullanılan bir teknik olup, binary (iki sınıflı) sınıflandırma problemlerini çözmek için tasarlanmıştır. Bu yöntem, bir olayın olasılığını tahmin etmek amacıyla kullanılır. Özellikle verilerin belirli özellikleri arasındaki ilişkiyi belirlemeye yönelik güçlü bir araçtır. Örneğin, bir müşterinin kredi başvurusunun onaylanma olasılığını, yaş, gelir ve kredi geçmişi gibi faktörlere dayanarak tahmin etmek mümkündür.
Logistic regresyon, doğrusal regresyondan farklı olarak, tahmin edilen değerlerin sürekli bir aralığı değil, belirli bir sınıfa ait olma olasılığıdır. Bu durum, regresyon fonksiyonunun çıktısının, bir sigmoid fonksiyonu aracılığıyla sınırlandırılması ile sağlanır. Sigmoid fonksiyonu, tüm gerçek sayıları [0, 1] aralığına dönüştürerek, eğitim verilerinizdeki her bir sınıfın tahmin edilen olasılığını elde etmenize olanak tanır.
Bu kapsamda, logistic regresyon, basitliği ve etkili sonuçlarıyla birçok alanda tercih edilmektedir. Sağlık, finans ve pazarlama gibi bol veri bulunan sektörlerde, karar verme süreçlerini hızlandırmak ve daha doğru sonuçlar elde etmek adına önemli bir yer edinmiştir.
Python’da Logistic Regresyonun Uygulanması
Python, veri bilimi ve makine öğrenimi uygulamaları için güçlü kütüphaneler sunarak logistic regresyon modellemesi için ideal bir ortam sağlar. Bu kütüphanelerden en yaygın olanları NumPy, Pandas ve Scikit-Learn’dur. Aşağıda, bir logistic regresyon modeli oluşturmak için gereken adımlar detaylı bir şekilde ele alınacaktır.
İlk olarak, veri kümesini yüklemeli ve incelemeliyiz. Pandas kütüphanesi, veri manipülasyonu için oldukça işlevseldir. Veri kümesi yüklendikten sonra, özelliklerin ve etiketlerin hazırlanması gerekmektedir. Örnek bir veri kümesi kullanarak, üzerinde çalışacağımız veriler ve bu verilerin temel özellikleri hakkında bilgi edineceğiz.
Bundan sonra, modelimizi oluşturmak için verileri eğitim ve test setlerine ayıracağız. Veri setinin bir kısmını modelin eğitimine ayırırken, geri kalan kısmı modelin doğruluğunu test etmek için kullanılacaktır. Scikit-Learn kütüphanesinde yer alan train_test_split()
fonksiyonu, bu işlemi kolayca yapmamıza yardımcı olacaktır.
Veri Kümesi Yükleme ve Ön İşleme
Pandas kütüphanesini kullanarak bir veri kümesini yüklemek ve incelemek için aşağıdaki örnek kod kullanılabilir:
import pandas as pd
dataset = pd.read_csv('veri_kumesi.csv')
print(dataset.head())
Veri kümesini inceledikten sonra veri ön işleme adımlarına geçmeliyiz. Bu aşamada verinin temizlenmesi ve eksik verilerin kontrolü büyük önem taşır. Eksik veriler varsa, bunları uygun yöntemlerle doldurmalı ya da silmeliyiz. Özelliklerin normalleştirilmesi veya standartlaştırılması da bazı modellerin performansını artırabilir.
Örnek bir normalizasyon işlemi şöyle yapılabilir:
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_normalized = scaler.fit_transform(dataset[['feature1', 'feature2']])
Bu aşamadan önce, denetimli öğrenme sürecimizin önemli adımlarından biri olan etiketlerin belirlenmesi yapılmalıdır. Yani, hedef değişkenimizi tanımlı bir şekilde netleştirmeliyiz. Bunun için dataset üzerinde dataset['label'].unique()
gibi işlemlerle hedefimizdeki sınıfları belirleyebiliriz.
Modelin Oluşturulması ve Eğitilmesi
Modelimizi oluşturmak için Scikit-Learn kütüphanesini kullanabiliriz. Logistic regresyon modelini oluşturmak için LogisticRegression
sınıfını içeren bu kütüphane, ihtiyaç duyduğumuz birçok sınıflandırma modelini barındırmaktadır. Aşağıda modelin nasıl oluşturulacağı ve eğitileceği gösterilmektedir:
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
# Özellikler ve etiketlerin ayrılması
X = dataset[['feature1', 'feature2']]
Y = dataset['label']
# Veri kümesini eğitim ve test setlerine ayırma
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.2, random_state=42)
# Modelin oluşturulması
model = LogisticRegression()
# Modelin eğitilmesi
model.fit(X_train, y_train)
Bu noktada, modelimizi eğitim verileri üzerinde eğittik. Modelin sonuçlarını değerlendirmek için doğruluk oranı, kesinlik ve geri çağırma gibi araçları kullanarak modelimizin performansını analiz edebiliriz. Aşağıda modelin tahminlerini yapma ve sonuçları değerlendirme aşamaları yer almaktadır.
Modeli Test Etme ve Sonuçları Değerlendirme
Modelimizi test etmek için predict()
metodunu kullanarak test verileri üzerinde tahminler yapabiliriz. Sonrasında ise sonuçlarımızı değerlendirmek için bir karışıklık matrisi oluşturabiliriz:
from sklearn.metrics import confusion_matrix, accuracy_score
# Tahminlerin yapılması
predictions = model.predict(X_test)
# Ve sonuçların değerlendirilmesi
accuracy = accuracy_score(y_test, predictions)
cm = confusion_matrix(y_test, predictions)
print('Doğruluk Oranı:', accuracy)
print('Karışıklık Matrisi:
', cm)
Karmaşıklık matrisinden elde edilen veriler, modelin hangi sınıflarda doğru ve yanlış tahmin yaptığını görmemize yardımcı olur. Doğruluk oranı ise modelimizin genel başarısını göstermektedir. Bu sonuçlar, modelimizi geliştirmek için neler yapmamız gerektiğini anlamamıza olanak tanır.
Sonuç
Logistic regresyon, Python ile iki sınıflı sınıflandırma problemlerinin giderilmesinde oldukça etkili bir yöntemdir. Bu yazıda, dataset yüklemeden başlayarak, modelin nasıl inşa edileceği ve değerlendirileceği aşamalarını detaylı bir şekilde ele aldık. Her aşamada karşılaşabileceğimiz sorunlar ve çözümler üzerinde de durarak yazımızı zenginleştirdik.
Okuyucuların, logistic regresyonun temellerini anladıktan sonra kendi projelerinde uygulamalara geçmeleri ve veri analizi ve makine öğrenimi konularında derinleşmeleri büyük önem taşımaktadır. Unutulmamalıdır ki, her bir model kendi içerisinde sürekli olarak geliştirilebilir ve optimize edilebilir; bu nedenle yeniliklere açık olmak, bu alanda ilerlemek için önemlidir.
Bu aşamadan sonra okuyuculara önerim, farklı veri setleriyle denemeler yaparak durumlarına uygun modeller geliştirmeleri ve sürekçi bir öğrenme sürecine katkıda bulunmalarıdır. Python’un sunduğu zengin kütüphanelerden faydalanarak, veri analizi ve makine öğrenimi alanında kendilerini geliştirmeye devam etmelidirler.