Colonne miste
Fa parte della sezione Apprendimento supervisionato del percorso Machine Learning di Coddy. Lezione 46 di 58.
La maggior parte delle tabelle mescola parole e numeri, e ogni tipo richiede il proprio passaggio. Un ColumnTransformer invia ogni colonna al proprio passaggio e unisce i risultati:
Per un negozio di dischi, nel codice:
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))Ogni voce è un nome, un passaggio e le relative colonne. A differenza di get_dummies, il codificatore memorizza le categorie di addestramento, così un nuovo record ottiene le stesse 7 colonne.
Sfida
MedioUn circolo di scacchi vuole conoscere la probabilità di vittoria di ogni giocatore prima di una partita. Il codice iniziale divide chess.csv e legge i dati della partita di stasera.
- Codifica
openingecolor, ridimensionarating_gapeminutese stampa quante colonne risultano dalle righe di addestramento. - Combina il tutto con la regressione logistica, esegui l'addestramento e stampa l'accuratezza sul set di test.
- Stampa la probabilità di vittoria di stasera.
Un altro circolo, tre aperture e sicilian, black, 50, 15:
Columns after preparing: 7
Test accuracy: 0.805
Win chance: 0.66Provalo tu
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
# Le partite di un club di scacchi: l'apertura, il colore del giocatore, il suo punteggio meno
# quello dell'avversario, i minuti sull'orologio e se il giocatore ha vinto (1) oppure no (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)
# La partita di stasera, una riga con le stesse colonne
game = pd.DataFrame({"opening": [input()], "color": [input()],
"rating_gap": [int(input())], "minutes": [int(input())]})
# Scrivi il tuo codice qui sotto
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Apprendimento supervisionato
1Il tuo primo modello
Imparare dagli esempiInsiemi di addestramento e testAdattare e prevedereValutare un modelloRiepilogo: Ordinatore di semi4Regressione logistica
Previsioni sì o noLa soglia decisionaleI pesi come evidenzePiù classiRiepilogo: filtro antispam2Vicini più prossimi
Come decide k-NNScegliere kConfini decisionaliNormalizzare le scale per i viciniRiepilogo: vicini del vino5Misurare i classificatori
La matrice di confusionePrecisione e richiamoIl punteggio F1Classi sbilanciateCurve ROCRiepilogo: test di screening8Convalida incrociata
Validazione K-foldConfronto equo tra modelliRicerca a grigliaRiepilogo: riparazioni di skateboard11Progetto: specie di pinguini
Incontra i pinguiniPrepara i datiScegli un modelloOttimizza il miglioreDistribuisci il modello3Regressione lineare
Prevedere numeriPiù caratteristicheMisurare gli erroriGrafici dei residuiRiepilogo: noleggio di biciclette6Alberi decisionali
Gli alberi fanno domandeLeggere un alberoProfondità dell’alberoImportanza delle caratteristicheRiepilogo: decisioni sui prestitiEsercitati da solo: Compilatore Python online