Più classi
Fa parte della sezione Apprendimento supervisionato del percorso Machine Learning di Coddy. Lezione 19 di 58.
Limone, lime o arancia? La regressione logistica gestisce anche tre classi. Ecco un nuovo frutto che si colloca tra i limoni e le arance:
model = LogisticRegression(max_iter=1000)
model.fit(X, kind) # X: diametro, peso; kind: lemon, lime o orange
print(model.classes_)
print(np.round(model.predict_proba([[6.7, 144]]), 2))
print(model.predict([[6.7, 144]]))Questo stampa:
['lemon' 'lime' 'orange']
[[0.61 0. 0.39]]
['lemon']Ogni riga contiene una probabilità per ciascuna classe, nell’ordine di classes_, e la loro somma è 1. predict sceglie quella più alta.
Quindi il modello indica quanto è sicuro: 61% limone è un risultato incerto, da esaminare più attentamente.
Sfida
MedioUn'app di podcast archivia i nuovi episodi nelle categorie commedia, notizie o true crime. Il modello iniziale adatta una LogisticRegression a episodes.csv (durata, relatori, risate al minuto) e legge un nuovo episodio in episode, una tabella con una sola riga.
Completa describe(episode):
- Stampa la probabilità di ciascun tipo di programma, nell'ordine di
model.classes_, arrotondata a una percentuale intera. - Restituisci il tipo più probabile.
Per l'episodio di un'altra app:
comedy: 12%
news: 70%
true crime: 18%
Best guess: newsProvalo tu
import pandas as pd
from sklearn.linear_model import LogisticRegression
episodes = pd.read_csv("episodes.csv")
features = ["length_min", "speakers", "laughs_per_min"]
model = LogisticRegression(max_iter=1000)
model.fit(episodes[features], episodes["show_type"])
# Imprime la probabilidad de cada tipo de programa para un episodio (una tabla de una fila) y luego devuelve el tipo más probable
def describe(episode):
# Escribe tu código aquí
return "unknown"
# No cambies las líneas siguientes: un episodio nuevo a partir de la entrada
length = float(input())
speakers = int(input())
laughs = float(input())
episode = pd.DataFrame({"length_min": [length], "speakers": [speakers], "laughs_per_min": [laughs]})
best = describe(episode)
print(f"Best guess: {best}")
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