Uzupełnianie braków w potoku
Część sekcji Uczenie nadzorowane ścieżki Machine Learning w Coddy. Lekcja 47 z 58.
Rzeczywiste logi mają braki, a większość modeli ich nie akceptuje. SimpleImputer wypełnia każdy brak średnią, medianą lub najczęściej występującą wartością w danej kolumnie.
Uzupełnianie przed podziałem, a wiersze testowe pomagają wybrać tę wartość: wyciek. Siedem głębokości nurkowania i jedna luka:
W potoku fit uczy się wartości uzupełniających wyłącznie na podstawie wierszy treningowych:
from sklearn.impute import SimpleImputer
pipe = make_pipeline(SimpleImputer(strategy="median"), StandardScaler(), model)
pipe.fit(X_train, y_train)
print(pipe[0].statistics_) # wartości używane do uzupełniania braków w pierwszym krokuW przypadku dziennika nurkowania (głębokość, minuty, temperatura wody) wyświetla:
[19. 44. 21.]Również w przypadku słów kroki dla liczb stają się jednym torem w ColumnTransformer:
lane = make_pipeline(SimpleImputer(strategy="median"), StandardScaler())
("numbers", lane, ["depth_m", "minutes"])Wyzwanie
ŚredniSłużby leśne przewidują, które uderzenia pioruna wywołują pożary, ale brakuje niektórych odczytów. Kod startowy dzieli dane z wildfire.csv i odczytuje strategię: mean lub median.
- Dopasuj potok składający się z imputera używającego tej strategii, skalera i regresji logistycznej. Wyświetl jego dokładność na zbiorze testowym.
- Dla każdej kolumny wyświetl wartość uzupełnienia z potoku oraz wartość, jaką dałyby wszystkie wiersze
X, z dokładnością do 1 miejsca po przecinku.
Inny las, ze strategią median:
Test accuracy: 0.840
humidity_pct: fill 46.0, all rows would give 46.0
wind_kmh: fill 29.0, all rows would give 32.0
temp_c: fill 25.0, all rows would give 26.0
days_without_rain: fill 23.0, all rows would give 23.0Wszędzie tam, gdzie te wartości się różnią, uzupełnienie danych przed podziałem sprawiłoby, że wiersze testowe wpłynęłyby na dane treningowe.
Spróbuj swoich sił
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import make_pipeline
# Uderzenia piorunów w suchym lesie: czy uderzenie wywołało pożar (1), czy nie (0)?
# Brakuje niektórych odczytów pogodowych.
strikes = pd.read_csv("wildfire.csv")
columns = ["humidity_pct", "wind_kmh", "temp_c", "days_without_rain"]
X = strikes[columns]
y = strikes["fire"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
strategy = input()
# 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 spamu7Przeuczenie
Niedouczenie i przeuczenieKrzywe uczeniaRegularyzacjaZbiory walidacyjnePodsumowanie: dostrajanie drzewa10Potoki
PotokiMieszane kolumnyUzupełnianie braków w potokuStrojenie potokuPodsumowanie: Oczyść i przewiduj2Najbliż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