Potoki
Część sekcji Uczenie nadzorowane ścieżki Machine Learning w Coddy. Lekcja 45 z 58.
Rzeczywiste tabele zawierają braki, słowa i różne skale. W tym rozdziale zbudujesz jeden obiekt, który je czyści i przewiduje — potok:
Zacznij od małego kroku: make_pipeline łączy skalowanie i model:
from sklearn.pipeline import make_pipeline
pipe = make_pipeline(StandardScaler(), KNeighborsClassifier())
pipe.fit(X_train, y_train)
print(pipe.score(X_test, y_test))Dla 200 spawów testowych, mocnych lub słabych, wyświetla to 0.86 w porównaniu z 0.74 bez skalowania.
fit uczy się skalowania na podstawie wierszy treningowych, a następnie trenuje. Każdy kolejny wiersz jest automatycznie skalowany w ten sam sposób.
Wyzwanie
ŚredniFirma balonowa każdego wieczoru decyduje, czy jutro będzie dzień lotów. Starter skaluje dane ręcznie: dokładność testowa jest dobra, ale prognoza nigdy nie jest skalowana, więc dla każdej pogody zwraca yes.
- Zastąp go potokiem: najpierw skalowanie, potem k-NN, dopasowanym do wierszy treningowych.
- Wypisz jego dokładność testową i oceń za jego pomocą prognozę.
Inna firma, dzień 20, 32, 7000, 9:
Test accuracy: 0.880
Flying day: noSpróbuj swoich sił
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.pipeline import make_pipeline
# Minione dni w firmie organizującej loty balonem: dzień z lotami (1) lub bez lotów (0)
days = pd.read_csv("balloons.csv")
X = days[["wind_kmh", "gusts_kmh", "visibility_m", "passengers"]].to_numpy()
y = days["flying_day"].to_numpy()
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
# Prognoza na jutro: wiatr, porywy wiatru, widoczność, liczba zarezerwowanych pasażerów
day = np.array([[float(input()), float(input()), float(input()), float(input())]])
# Ręczne skalowanie: wynik wygląda dobrze, ale dane z prognozy nigdy nie są skalowane
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
model = KNeighborsClassifier()
model.fit(X_train_scaled, y_train)
print(f"Test accuracy: {model.score(X_test_scaled, y_test):.3f}")
if model.predict(day)[0] == 1:
print("Flying day: yes")
else:
print("Flying day: no")
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