Skalowanie dla sąsiadów
Część sekcji Uczenie nadzorowane ścieżki Machine Learning w Coddy. Lekcja 9 z 58.
k-NN mierzy odległość, więc cecha o dużych wartościach przyćmiewa pozostałe, jak ostrzeżono w sekcji 2. Tutaj odległość od rzeki, mierzona w metrach, przyćmiewa wysokość nad poziomem morza:
Najpierw przeskaluj dane. Dopasuj skalowanie wyłącznie do wierszy treningowych, a następnie przekształć oba zestawy:
scaler = StandardScaler()
X_train_s = scaler.fit_transform(X_train)
X_test_s = scaler.transform(X_test)
model = KNeighborsClassifier()
model.fit(X_train_s, y_train)
print(model.score(X_test_s, y_test))Wypisuje to 0.925, czyli więcej niż 0.6. Wiersze testowe pozostają niewidziane: skalowanie nie uczy się niczego na ich podstawie.
Wyzwanie
ŁatwyInteligentny licznik przewiduje, które urządzenie działa, na podstawie jego mocy (w watach) i czasu pracy (w minutach), w pliku meter.csv. Kod początkowy odczytuje k i wypisuje dokładność k-NN dla nieprzeskalowanych cech.
- Dopasuj
StandardScalerdo wierszy treningowych i przekształć oba zbiory. - Dopasuj model k-NN z tą samą wartością k do przeskalowanych wierszy; wypisz jego dokładność z dokładnością do 3 miejsc po przecinku.
- Wypisz wzrost dokładności.
Dla innego domu i k = 5:
Unscaled accuracy: 0.65
Scaled accuracy: 0.875
Scaling gains 0.225Spróbuj swoich sił
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.preprocessing import StandardScaler
# Jeden wiersz dla każdego uruchomienia urządzenia: moc w watach, czas pracy w minutach, rodzaj urządzenia
meter = pd.read_csv("meter.csv")
X = meter[["watts", "minutes"]]
y = meter["appliance"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
k = int(input())
# k-NN na nieprzeskalowanych cechach
raw_model = KNeighborsClassifier(n_neighbors=k)
raw_model.fit(X_train, y_train)
raw = raw_model.score(X_test, y_test)
print(f"Unscaled accuracy: {round(raw, 3)}")
# Napisz swój kod poniżej
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Uczenie nadzorowane
1Twój pierwszy model
Uczenie się na przykładachZbiory treningowe i testoweDopasowywanie i przewidywanieOcena modeluPodsumowanie: Sortownik nasion4Regresja logistyczna
Przewidywanie „tak” lub „nie”Próg decyzyjnyWagi jako dowodyWiele klasPodsumowanie: filtr spamu2Najbliżsi sąsiedzi
Jak działa k-NNWybór kGranice decyzyjneSkalowanie dla sąsiadówPodsumowanie: sąsiedzi w zbiorze Wine5Ocena klasyfikatorów
Macierz pomyłekPrecyzja i czułośćWynik F1Niezrównoważone klasyKrzywe ROCPodsumowanie: test przesiewowy8Walidacja krzyżowa
Walidacja k-krotnaUczciwe porównywanie modeliPrzeszukiwanie siatkiPodsumowanie: naprawa deskorolki11Projekt: Gatunki pingwinów
Poznaj pingwinyPrzygotuj daneWybierz modelDopracuj zwycięski modelWdróż modelPoćwicz samodzielnie: Kompilator Python online