Scikit-learn ile Makine Öğrenimi

Scikit-learn (sklearn), Python‘da makine öğrenimi modelleri oluşturmak, eğitmek ve değerlendirmek için kullanılan en popüler kütüphanelerden biridir. Scikit-learn, sınıflandırma, regresyon, kümeleme, boyut indirgeme, model seçimi ve model değerlendirme gibi çok çeşitli makine öğrenimi görevleri için geniş bir araç seti sunar. Kullanımının kolaylığı, geniş kütüphane desteği ve iyi belgelenmiş API’si nedeniyle, veri bilimi ve makine öğrenimi projelerinde yaygın olarak tercih edilir.

1. Scikit-learn ile Makine Öğrenimi Süreci

Makine öğrenimi süreci genellikle şu adımlardan oluşur:

  1. Veri yükleme ve hazırlama
  2. Veriyi eğitim ve test setlerine ayırma
  3. Model seçimi ve eğitimi
  4. Model değerlendirme
  5. Modelle ilgili iyileştirmeler ve hyperparameter tuning

2. Veri Yükleme ve Hazırlama

Scikit-learn, genellikle veri hazırlığı için Pandas veya NumPy ile birlikte kullanılır. Veri, bu kütüphaneler aracılığıyla yüklenir ve işlenir.

a. Örnek Veri Seti Yükleme

Scikit-learn, bazı yaygın veri setlerini içinde barındırır. Örneğin, Iris veya Boston Housing veri setlerini kolayca yükleyebilirsiniz.

Örnek:
from sklearn.datasets import load_iris

# Iris veri setini yükleme
iris = load_iris()
X = iris.data # Özellikler
y = iris.target # Hedef değişken
print(X.shape) # Özelliklerin boyutu
print(y.shape) # Hedef değişkenin boyutu

b. Veri Setini Eğitim ve Test Olarak Ayırma

Veriyi eğitim ve test olarak ayırmak, modelin doğruluğunu değerlendirmek için önemlidir. Scikit-learn’de train_test_split fonksiyonu bu amaçla kullanılır.

Örnek:
from sklearn.model_selection import train_test_split

# Veriyi 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)

Bu örnekte, veri %80 eğitim ve %20 test olacak şekilde ayrılmıştır.

3. Model Seçimi ve Eğitimi

Scikit-learn, birçok farklı makine öğrenimi algoritmasını destekler. Örneğin, lojistik regresyon, karar ağaçları, rastgele ormanlar, destek vektör makineleri ve k-en yakın komşu algoritması gibi.

a. Lojistik Regresyon Modeli

Lojistik regresyon, ikili sınıflandırma problemleri için yaygın olarak kullanılır.

Örnek:
from sklearn.linear_model import LogisticRegression

# Lojistik regresyon modelini oluşturma
model = LogisticRegression(max_iter=200)

# Modeli eğitme
model.fit(X_train, y_train)

# Modelin doğruluğunu test etme
score = model.score(X_test, y_test)
print(f"Test setindeki doğruluk: {score:.2f}")

b. Karar Ağaçları Modeli

Karar ağaçları, hem sınıflandırma hem de regresyon problemlerinde kullanılan sezgisel bir makine öğrenimi algoritmasıdır.

Örnek:
from sklearn.tree import DecisionTreeClassifier

# Karar ağacı modeli oluşturma
model = DecisionTreeClassifier()

# Modeli eğitme
model.fit(X_train, y_train)

# Modelin doğruluğunu test etme
score = model.score(X_test, y_test)
print(f"Test setindeki doğruluk: {score:.2f}")

4. Model Değerlendirme

Scikit-learn, model performansını değerlendirmek için çeşitli metrikler sunar. Doğruluk, karışıklık matrisi, precision, recall, F1 skoru ve ROC eğrisi gibi.

a. Doğruluk Skoru

Doğruluk, sınıflandırma modelinin performansını değerlendirmek için en yaygın kullanılan metriktir.

Örnek:
from sklearn.metrics import accuracy_score

# Modelin tahmin yapması
y_pred = model.predict(X_test)

# Doğruluk skorunu hesaplama
accuracy = accuracy_score(y_test, y_pred)
print(f"Doğruluk Skoru: {accuracy:.2f}")

b. Karışıklık Matrisi

Karışıklık matrisi, modelin doğru ve yanlış tahminlerini ayrıntılı bir şekilde gösterir.

Örnek:
from sklearn.metrics import confusion_matrix
import seaborn as sns
import matplotlib.pyplot as plt

# Karışıklık matrisi
cm = confusion_matrix(y_test, y_pred)

# Karışıklık matrisini görselleştirme
sns.heatmap(cm, annot=True, fmt="d", cmap="Blues")
plt.xlabel("Tahmin Edilen")
plt.ylabel("Gerçek")
plt.title("Karışıklık Matrisi")
plt.show()

c. Precision, Recall ve F1 Skoru

Bu metrikler, özellikle dengesiz veri setlerinde model performansını değerlendirmek için kullanılır.

Örnek:
from sklearn.metrics import precision_score, recall_score, f1_score

precision = precision_score(y_test, y_pred, average='macro')
recall = recall_score(y_test, y_pred, average='macro')
f1 = f1_score(y_test, y_pred, average='macro')

print(f"Precision: {precision:.2f}")
print(f"Recall: {recall:.2f}")
print(f"F1 Skoru: {f1:.2f}")

5. Model İyileştirme ve Hyperparameter Tuning

Scikit-learn, model iyileştirme için hyperparameter tuning araçları sunar. GridSearchCV ve RandomizedSearchCV bu araçlardan bazılarıdır.

a. GridSearchCV ile Hyperparameter Tuning

GridSearchCV, belirli parametrelerin çeşitli kombinasyonlarını deneyerek en iyi parametre setini bulur.

Örnek:
from sklearn.model_selection import GridSearchCV

# Karar ağacı modeli için parametreler
param_grid = {'max_depth': [3, 5, 7, None], 'min_samples_split': [2, 5, 10]}

# GridSearchCV kullanarak en iyi parametreleri bulma
grid_search = GridSearchCV(DecisionTreeClassifier(), param_grid, cv=5, scoring='accuracy')
grid_search.fit(X_train, y_train)

print(f"En iyi parametreler: {grid_search.best_params_}")
print(f"En iyi doğruluk: {grid_search.best_score_:.2f}")

Bu örnekte, karar ağacı modeli için en iyi max_depth ve min_samples_split parametreleri bulunmuştur.

6. Model Kaydetme ve Yükleme

Scikit-learn, eğitilen modelleri disk üzerinde kaydetmek ve daha sonra yeniden yüklemek için joblib veya pickle kullanır.

a. Model Kaydetme

Örnek:
import joblib

# Modeli kaydetme
joblib.dump(model, 'trained_model.pkl')

b. Model Yükleme

Örnek:
# Kaydedilen modeli yükleme
loaded_model = joblib.load('trained_model.pkl')

# Yüklenen modelle tahmin yapma
y_loaded_pred = loaded_model.predict(X_test)
print(f"Yüklenen model doğruluğu: {accuracy_score(y_test, y_loaded_pred):.2f}")

 

Scikit-learn, Python’da makine öğrenimi modelleri oluşturmak ve eğitmek için çok güçlü ve esnek bir kütüphanedir. Sınıflandırma, regresyon, kümeleme, boyut indirgeme ve model değerlendirme gibi birçok görev için kullanılır. Scikit-learn ile modelleme süreci basit ve anlaşılırdır, bu da veri bilimcilerin ve makine öğrenimi mühendislerinin verimli ve etkili çözümler geliştirmesine olanak tanır. Makine öğrenimi projelerinde Scikit-learn kullanarak, güçlü ve doğru tahmin modelleri oluşturabilirsiniz.

Comments

“Scikit-learn ile Makine Öğrenimi” için bir yanıt

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.