Pencarian Grid
Termasuk bagian Pembelajaran Terawasi dalam perjalanan Machine Learning di Coddy. Pelajaran 39 dari 58.
Penyetelan secara manual berarti perulangan di dalam perulangan. GridSearchCV melakukan validasi silang pada setiap kombinasi pengaturan dan menyimpan yang terbaik. Untuk 300 perjalanan trem, terlambat atau tepat waktu:
Sebuah dictionary memetakan setiap pengaturan ke nilai-nilai yang akan dicoba. min_samples_leaf adalah jumlah baris paling sedikit yang dapat dimiliki sebuah daun:
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}")Ini mencetak:
{'max_depth': 4, 'min_samples_leaf': 5}
0.876
0.813Pencarian melatih ulang model terbaik dengan semua baris pelatihan, jadi search.score mengujinya satu kali. Buat grid tetap kecil: setiap sel membutuhkan 5 kali pelatihan.
Tantangan
SedangTim satelit memberi label pada piksel sebagai awan atau langit cerah menggunakan k-NN. Program membaca nilai k terbesar yang akan dicoba; kode awal membagi data.
- Lakukan pencarian grid untuk setiap k ganjil dari 1 hingga angka tersebut, dengan
weights"uniform"atau"distance"(tetangga yang lebih dekat dihitung lebih besar),cv=5. - Cetak pengaturan terbaik, akurasi validasi silang, dan akurasi pengujian, dengan 3 angka desimal.
Untuk piksel lain dan 7:
Best k: 7, weights: distance
Cross-validated accuracy: 0.885
Test accuracy: 0.800Coba sendiri
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.neighbors import KNeighborsClassifier
max_k = int(input())
# Jangan ubah baris di bawah ini: 360 piksel satelit, masing-masing memiliki 4 pembacaan cahaya; label 1 berarti awan
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)
# Tulis kodemu di bawah ini
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pembelajaran Terawasi
1Model Pertamamu
Belajar dari ContohData Latih dan Data UjiMelatih dan MemprediksiMenilai ModelRangkuman: Penyortir Benih4Regresi Logistik
Prediksi Ya atau TidakAmbang KeputusanBobot sebagai BuktiBeberapa KelasRangkuman: Filter Spam2Tetangga Terdekat
Cara k-NN MenentukanMemilih kBatas KeputusanPenskalaan untuk TetanggaRingkasan: Tetangga Wine5Mengukur Model Klasifikasi
Matriks KonfusiPresisi dan RecallSkor F1Kelas Tidak SeimbangKurva ROCRangkuman: Tes Skrining8Validasi Silang
Validasi K-FoldMembandingkan Model secara AdilPencarian GridRekap: Perbaikan SkateboardLatihan sendiri: Compiler Python online