Menu
CoddyTech

Scegli un modello

Fa parte della sezione Apprendimento supervisionato del percorso Machine Learning di Coddy. Lezione 52 di 58.

Diverse famiglie di modelli potrebbero classificare i pinguini. Qual è la più adatta? Assegna a ciascuna le stesse corsie e gli stessi fold, poi confrontale, come questi modelli per il vino:

Accuratezze dei cinque fold per ogni candidato sui dati del vino, mostrate come punti, con una barra nera in corrispondenza di ciascuna media: regressione logistica al primo posto, alta e stabile a 0.970, k-NN a 0.940, albero all'ultimo posto a 0.896, con un fold che scende a 0.78

Vince la media più alta. Una deviazione standard bassa indica che ha vinto in ogni fold, non solo in una divisione fortunata.

pipe = make_pipeline(prep, model)
scores = cross_val_score(pipe, X_train, y_train, cv=5)

Ogni fold adatta di nuovo le corsie sulla propria parte di addestramento, così ogni punteggio rimane attendibile. I pinguini di test restano esclusi.

challenge icon

Sfida

Medio

Quattro candidati vogliono il lavoro. Il codice iniziale contiene le tue corsie, gli elenchi names e models e legge il numero di fold.

  1. Per ogni candidato, esegui la convalida incrociata della pipeline composta da prep e quel modello sui dati di addestramento.
  2. Stampa la media e la deviazione standard, con 3 cifre decimali.
  3. Stampa il vincitore: quello con la media più alta.

Per un’altra colonia e 5 fold:

k-NN: mean 0.951, std 0.031
Logistic regression: mean 0.964, std 0.012
Random forest: mean 0.958, std 0.027
Decision tree: mean 0.902, std 0.048
Winner: Logistic regression

Provalo tu

import pandas as pd
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.compose import ColumnTransformer
from sklearn.pipeline import make_pipeline
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import StandardScaler, OneHotEncoder
from sklearn.neighbors import KNeighborsClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier
from sklearn.tree import DecisionTreeClassifier

# La colonia di Meet the Penguins, le sue caratteristiche e la sua etichetta
penguins = pd.read_csv("penguins.csv")
numbers = ["bill_length_mm", "bill_depth_mm", "flipper_length_mm", "body_mass_g"]
text = ["island", "sex"]
X = penguins[numbers + text]
y = penguins["species"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, stratify=y, random_state=0)

# Da Prepare the Data: i due percorsi
number_steps = make_pipeline(SimpleImputer(strategy="median"), StandardScaler())
text_steps = make_pipeline(SimpleImputer(strategy="constant", fill_value="unknown"), OneHotEncoder())
prep = ColumnTransformer([("numbers", number_steps, numbers), ("words", text_steps, text)])

# I candidati
names = ["k-NN", "Logistic regression", "Random forest", "Decision tree"]
models = [KNeighborsClassifier(), LogisticRegression(max_iter=1000),
          RandomForestClassifier(n_estimators=100, random_state=0), DecisionTreeClassifier(random_state=0)]
folds = int(input())

# Scrivi il tuo codice qui sotto
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Apprendimento supervisionato

Esercitati da solo: Compilatore Python online