Optimalkan Model Terbaik
Termasuk bagian Pembelajaran Terawasi dalam perjalanan Machine Learning di Coddy. Pelajaran 53 dari 58.
k-NN unggul dengan nilai bawaan 5 tetangga. Apakah nilai k lain akan lebih baik dalam mengelompokkan penguin? Pencarian grid menghitung skor setiap nilai k yang kamu cantumkan dengan validasi silang, seperti contoh berikut untuk pemindaian tumor:
Seperti pada Menyetel Pipeline, k diberi nama berdasarkan langkahnya:
{"kneighborsclassifier__n_neighbors": [3, 5, 7]}Peningkatan yang lebih kecil daripada std pada fold bisa jadi hanya karena keberuntungan. Penyetelan juga hanya menggunakan baris pelatihan.
Tantangan
SedangPipeline k-NN-mu adalah pipe, dan default menyimpan akurasi validasi silangnya dengan k = 5. Program membaca nilai k yang akan dicoba ke dalam ks.
- Lakukan pencarian grid pada nilai-nilai tersebut dengan 5 fold pada baris data latih.
- Cetak nilai k terbaik dan akurasi validasi silangnya, dengan 3 angka desimal.
- Cetak peningkatan dibandingkan k = 5, dengan 3 angka desimal.
Untuk koloni lain dan grid 3, 5, 9:
Best k: 3
CV accuracy: 0.969
Gain over k = 5: 0.009Lalu coba hanya nilai-nilai besar, seperti 21 sampai 27. Apakah penyetelan selalu membantu?
Coba sendiri
import pandas as pd
from sklearn.model_selection import train_test_split, cross_val_score, GridSearchCV
from sklearn.compose import ColumnTransformer
from sklearn.pipeline import make_pipeline
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import StandardScaler, OneHotEncoder
from sklearn.neighbors import KNeighborsClassifier
# Koloni dari Meet the Penguins, fitur dan labelnya
penguins = pd.read_csv("penguins.csv")
numbers = ["bill_length_mm", "bill_depth_mm", "flipper_length_mm", "body_mass_g"]
text = ["island", "sex"]
X = penguins[numbers + text]
y = penguins["species"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, stratify=y, random_state=0)
# Dari Prepare the Data: dua jalur
number_steps = make_pipeline(SimpleImputer(strategy="median"), StandardScaler())
text_steps = make_pipeline(SimpleImputer(strategy="constant", fill_value="unknown"), OneHotEncoder())
prep = ColumnTransformer([("numbers", number_steps, numbers), ("words", text_steps, text)])
# Dari Choose a Model: pemenangnya, k-NN dengan nilai bawaan k = 5
pipe = make_pipeline(prep, KNeighborsClassifier())
default = cross_val_score(pipe, X_train, y_train, cv=5).mean()
# Nilai k yang akan dicoba
n = int(input())
ks = []
for i in range(n):
ks.append(int(input()))
# 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 SkriningLatihan sendiri: Compiler Python online