Menu
CoddyTech

Izgara Araması

Coddy'nin Machine Learning Journey'sinin Denetimli Öğrenme bölümünün bir parçası. Ders 39 / 58.

Elle ayarlama, iç içe döngüler anlamına gelir. GridSearchCV, her ayar kombinasyonunu çapraz doğrular ve en iyisini seçer. 300 tramvay yolculuğunda, geç kalma veya zamanında varma için:

Ortalama doğruluk değerlerinden oluşan 3'e 3'lük bir ızgara: kenar boyunca ağaç derinliği 2, 4, 6; yatayda yaprak başına en az satır sayısı 1, 5, 20. En iyi hücre olan derinlik 4 ve yaprak 5, 0.876 puan alır ve çerçeve içine alınmıştır

Bir sözlük, her ayarı denenecek değerlerle eşleştirir. min_samples_leaf, bir yaprağın içerebileceği en az satır sayısıdır:

from sklearn.model_selection import GridSearchCV

grid = {"max_depth": [2, 4, 6], "min_samples_leaf": [1, 5, 20]}
search = GridSearchCV(DecisionTreeClassifier(random_state=0), grid, cv=5)
search.fit(X_train, y_train)
print(search.best_params_)
print(f"{search.best_score_:.3f}")
print(f"{search.score(X_test, y_test):.3f}")

Bu, şunu yazdırır:

{'max_depth': 4, 'min_samples_leaf': 5}
0.876
0.813

Arama, en iyi modeli tüm eğitim satırlarında yeniden eğitir; bu nedenle search.score modeli bir kez test eder. Izgaraları küçük tut: her hücre 5 model eğitimi gerektirir.

challenge icon

Görev

Orta

Bir uydu ekibi, pikselleri k-NN ile bulut veya açık gökyüzü olarak etiketler. Program denenecek en büyük k değerini okur; başlangıç kodu veriyi böler.

  1. cv=5 ile 1'den bu sayıya kadar olan her tek k değeri ve weights için "uniform" veya "distance" (daha yakın komşular daha fazla ağırlık taşır) değerleri üzerinde grid araması yapın.
  2. En iyi ayarları, çapraz doğrulama doğruluklarını ve test doğruluğunu 3 ondalık basamakla yazdırın.

Diğer pikseller ve 7 için:

Best k: 7, weights: distance
Cross-validated accuracy: 0.885
Test accuracy: 0.800

Kendin dene

from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.neighbors import KNeighborsClassifier

max_k = int(input())

# Aşağıdaki satırları değiştirmeyin: 360 uydu pikseli, her biri için 4 ışık ölçümü; 1 etiketi bulut anlamına gelir
X, y = make_classification(n_samples=360, n_features=4, n_informative=3, n_redundant=0,
                           flip_y=0.08, class_sep=0.7, random_state=1)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)

# Kodunuzu aşağıya yazın
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Denetimli Öğrenme bölümündeki tüm dersler

Kendi başına pratik yap: Online Python derleyicisi