En İyisini Ayarlayın
Coddy'nin Machine Learning Journey'sinin Denetimli Öğrenme bölümünün bir parçası. Ders 53 / 58.
k-NN, varsayılan 5 komşu değeriyle kazandı. Başka bir k, penguenleri daha iyi sınıflandırır mı? Izgara araması, tümör taramalarında olduğu gibi, listelediğin her k değerini çapraz doğrulamayla puanlar:
Bir Pipeline'ı Ayarlama bölümündeki gibi, k adımıyla adlandırılır:
{"kneighborsclassifier__n_neighbors": [3, 5, 7]}Katlama gruplarının standart sapmasından daha küçük bir artış şans eseri olabilir. Ayarlama da yalnızca eğitim satırlarını kullanır.
Görev
Ortak-NN işlem hattın pipe, default ise k = 5 için CV doğruluğunu tutar. Program denenecek k değerlerini ks içine okur.
- Bu değerler üzerinde eğitim satırlarıyla 5 katlı ızgara araması yap.
- En iyi k değerini ve CV doğruluğunu 3 ondalık basamağa yuvarlayarak yazdır.
- k = 5'e göre kazancı 3 ondalık basamağa yuvarlayarak yazdır.
Başka bir koloni ve 3, 5, 9 ızgarası için:
Best k: 3
CV accuracy: 0.969
Gain over k = 5: 0.009Ardından yalnızca 21 ile 27 gibi büyük değerleri dene. Ayarlama her zaman işe yarar mı?
Kendin dene
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
# Penguenlerle Tanışın bölümündeki koloni, özellikleri ve etiketi
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)
# Verileri Hazırlayın bölümünden: iki işlem hattı
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)])
# Bir Model Seçin bölümünden: kazanan, varsayılan k = 5 değeriyle k-NN
pipe = make_pipeline(prep, KNeighborsClassifier())
default = cross_val_score(pipe, X_train, y_train, cv=5).mean()
# Denenecek k değerleri
n = int(input())
ks = []
for i in range(n):
ks.append(int(input()))
# Kodunuzu aşağıya yazın
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
1İlk Modeliniz
Örneklerden ÖğrenmeEğitim ve Test KümeleriUydurma ve Tahmin EtmeBir Modeli PuanlamaÖzet: Tohum Sınıflandırıcı4Lojistik Regresyon
Evet-Hayır TahminleriKarar EşiğiKanıt Olarak AğırlıklarBirden Fazla SınıfÖzet: Spam Filtresi2En Yakın Komşular
k-NN Nasıl Karar Verirk'yi SeçmekKarar SınırlarıKomşular İçin ÖlçeklemeÖzet: Şarap Komşuları5Sınıflandırıcıları Değerlendirme
Karmaşıklık MatrisiKesinlik ve DuyarlılıkF1 SkoruDengesiz SınıflarROC EğrileriÖzet: Tarama Testi8Çapraz Doğrulama
K-Katlı DoğrulamaModelleri Adil Bir Şekilde KarşılaştırmaIzgara AramasıÖzet: Kaykay Tamiri11Proje: Penguen Türleri
Penguenlerle TanışınVerileri HazırlayınBir Model SeçinEn İyisini AyarlayınModeli Yayına AlınKendi başına pratik yap: Online Python derleyicisi