CodeBlanks Logo Icon CodeBlanks

scikit-learn nedir?

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

model.py
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

model.py
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.

Soru
X, y = ____(n_samples=100, n_features=4, random_state=0)
Cevap
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

Orta seviye bölümündeki tüm dersler