CodeBlanks Logo Icon CodeBlanks

Meydan okuma 4

Sınıflandırma modelini değerlendirirsin.

Meydan okuma 4: uçtan uca proje

Son meydan okumada başlangıç seviyesinin tüm adımlarını birleştireceksin: veriyi böl, pipeline kur, çapraz doğrulamayla hiperparametre seç, test kümesinde bir kez ölç ve sınıf başına raporla.

izgara = {"kneighborsclassifier__n_neighbors": [1, 3, 5, 7, 9]}
gs = GridSearchCV(make_pipeline(StandardScaler(), KNeighborsClassifier()), izgara, cv=5)
gs.fit(X_train, y_train)
print(gs.best_params_, gs.score(X_test, y_test))

make_pipeline adımları sınıf adının küçük harfli hâliyle adlandırdığı için parametre kneighborsclassifier__n_neighbors olur.

Uygulama Ara ve ölç

Şarap verisini test_size=0.25, random_state=0, stratify=y ile böl. make_pipeline(StandardScaler(), KNeighborsClassifier()) için n_neighbors değerlerini [1, 3, 5, 7, 9] arasında GridSearchCV(..., cv=5) ile ara. best_params_ ve test doğruluğunu (round(..., 3)) alt alta yazdır.

Başlangıç kodu

model.py
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier

X, y = load_wine(return_X_y=True)

# buraya yaz

Örnek çözüm

model.py
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier

X, y = load_wine(return_X_y=True)

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0, stratify=y)
izgara = {"kneighborsclassifier__n_neighbors": [1, 3, 5, 7, 9]}
gs = GridSearchCV(make_pipeline(StandardScaler(), KNeighborsClassifier()), izgara, cv=5)
gs.fit(X_train, y_train)
print(gs.best_params_)
print(round(gs.score(X_test, y_test), 3))

Beklenen çıktı

{'kneighborsclassifier__n_neighbors': 9}
0.956

Uygulama Sınıf başına rapor

En iyi modelle test tahminlerini al. Sınıf başına F1 skorlarını f1_score(..., average=None).round(3) ile, ardından makro F1'i round(..., 3) ile yazdır.

Başlangıç kodu

model.py
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import f1_score

X, y = load_wine(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0, stratify=y)
model = make_pipeline(StandardScaler(), KNeighborsClassifier(n_neighbors=9)).fit(X_train, y_train)

# buraya yaz

Örnek çözüm

model.py
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import f1_score

X, y = load_wine(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0, stratify=y)
model = make_pipeline(StandardScaler(), KNeighborsClassifier(n_neighbors=9)).fit(X_train, y_train)

p = model.predict(X_test)
print(f1_score(y_test, p, average=None).round(3))
print(round(f1_score(y_test, p, average="macro"), 3))

Beklenen çıktı

[0.968 0.941 0.96 ]
0.956

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Bu akışta test kümesi kaç kez kullanılır?

  • Her parametre için
  • Hiç
  • Bir kez, en sonda Doğru cevap
  • Her CV katmanında

Açıklama: Seçim eğitim kümesindeki CV ile yapılır; test yalnızca son ölçümdür.

2 Pipeline içindeki KNN'in komşu sayısını ızgaraya koy.

Soru
izgara = {"____": [3, 5, 7]}
Cevap
izgara = {"kneighborsclassifier__n_neighbors": [3, 5, 7]}

Açıklama: adım__parametre; make_pipeline adı küçük harfli sınıf adıdır.

3 Adımları araçlarla eşleştir.

Kavram Anlamı
Bölme train_test_split
Ön işleme + model make_pipeline
Ayar seçimi GridSearchCV
Sınıf başına rapor classification_report

Başlangıç bölümündeki tüm dersler