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:
- Veri yükleme ve hazırlama
- Veriyi eğitim ve test setlerine ayırma
- Model seçimi ve eğitimi
- Model değerlendirme
- 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.
Bir yanıt yazın