Mieszane kolumny
Część sekcji Uczenie nadzorowane ścieżki Machine Learning w Coddy. Lekcja 46 z 58.
Większość tabel zawiera zarówno słowa, jak i liczby, a każdy typ wymaga własnego kroku. ColumnTransformer przekazuje każdą kolumnę do odpowiedniego kroku i łączy wyniki:
W przypadku sklepu z płytami, w kodzie:
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder
prep = ColumnTransformer([
("words", OneHotEncoder(), ["genre", "condition"]),
("numbers", StandardScaler(), ["price", "year"]),
])
pipe = make_pipeline(prep, LogisticRegression(max_iter=1000))Każdy wpis zawiera nazwę, krok i jego kolumny. W przeciwieństwie do get_dummies, koder zapamiętuje kategorie z danych treningowych, więc każdy nowy rekord otrzymuje te same 7 kolumn.
Wyzwanie
ŚredniKlub szachowy chce znać szansę na wygraną każdego gracza przed partią. Kod początkowy dzieli dane z chess.csv i odczytuje dane dzisiejszej partii.
- Zakoduj
openingicolor, przeskalujrating_gapiminutes, a następnie wypisz, ile kolumn powstaje na podstawie wierszy treningowych. - Połącz to z regresją logistyczną, dopasuj model i wypisz dokładność na zbiorze testowym.
- Wypisz szansę na wygraną w dzisiejszej partii.
Inny klub, trzy debiuty oraz sicilian, black, 50, 15:
Columns after preparing: 7
Test accuracy: 0.805
Win chance: 0.66Spróbuj swoich sił
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder, StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import make_pipeline
# Partie klubu szachowego: debiut, kolor bierek gracza, jego ranking pomniejszony o ranking
# przeciwnika, liczba minut na zegarze oraz to, czy gracz wygrał (1), czy nie (0)
games = pd.read_csv("chess.csv")
X = games[["opening", "color", "rating_gap", "minutes"]]
y = games["won"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
# Dzisiejsza partia, jeden wiersz z tymi samymi kolumnami
game = pd.DataFrame({"opening": [input()], "color": [input()],
"rating_gap": [int(input())], "minutes": [int(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