scikit-learn nedir?
- Makine Öğrenmesi kursu
- Orta seviye
- Ders 1/112
- 5 dk
scikit-learn, Python'da klasik ML algoritmaları için temel kütüphanedir.
scikit-learn'ün tasarımı
scikit-learn, klasik makine öğrenmesinin standart kitaplığıdır. Gücü algoritma sayısından çok tutarlı arayüzünden gelir: her model aynı birkaç yöntemi paylaşır, bu yüzden bir modeli diğeriyle değiştirmek tek satırdır.
from sklearn.svm import SVC
from sklearn.ensemble import RandomForestClassifier
for m in [SVC(), RandomForestClassifier(random_state=0)]:
m.fit(X_train, y_train)
print(type(m).__name__, m.score(X_test, y_test))Modüller işlere göre ayrılır: linear_model, tree, ensemble, svm, preprocessing, model_selection, metrics.
Hazır veri setleri
sklearn.datasets küçük gerçek veri setleri (load_*) ve yapay veri üreticileri (make_*) sunar. Üreticiler, belirli bir durumu (dengesiz sınıflar, gürültü, doğrusal olmayan sınır) denemek için idealdir:
from sklearn.datasets import make_classification, make_moons
X, y = make_classification(n_samples=200, n_features=5, random_state=0)
Xm, ym = make_moons(n_samples=200, noise=0.2, random_state=0)
print(X.shape, Xm.shape) # (200, 5) (200, 2)random_state verilmezse her çalıştırmada farklı veri üretilir.
Uygulama Üç model, aynı kod
LogisticRegression(max_iter=1000), SVC() ve RandomForestClassifier(random_state=0) modellerini tek döngüde eğit. Her satırda sınıf adını (type(m).__name__) ve test doğruluğunu round(..., 3) ile yazdır.
Başlangıç kodu
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0, stratify=y)
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.ensemble import RandomForestClassifier
# buraya yazÖrnek çözüm
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0, stratify=y)
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.ensemble import RandomForestClassifier
for m in [LogisticRegression(max_iter=1000), SVC(), RandomForestClassifier(random_state=0)]:
m.fit(X_train, y_train)
print(type(m).__name__, round(m.score(X_test, y_test), 3))Beklenen çıktı
LogisticRegression 1.0 SVC 1.0 RandomForestClassifier 0.978
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 scikit-learn'de bir modeli başka bir modelle değiştirmek neden kolaydır?
- Tüm modeller aynı algoritmadır
- Parametre almazlar
- Kolay değildir
- Hepsi aynı fit/predict/score arayüzünü paylaşır Doğru cevap
Açıklama: Ortak arayüz sayesinde döngüde birçok modeli aynı kodla denemek mümkündür.
2 Yapay sınıflandırma verisi üret.
X, y = ____(n_samples=100, n_features=4, random_state=0)
X, y = make_classification(n_samples=100, n_features=4, random_state=0)
Açıklama: make_classification ayarlanabilir bir sınıflandırma problemi üretir.
3 Modülleri eşleştir.
| Kavram | Anlamı |
|---|---|
linear_model |
Doğrusal modeller |
ensemble |
Topluluk modelleri |
model_selection |
Bölme ve arama |
preprocessing |
Ölçekleme ve kodlama |