Plusieurs classes
Fait partie de la section Apprentissage supervisé du Journey Machine Learning de Coddy. Leçon 19 sur 58.
Citron, citron vert ou orange ? La régression logistique gère aussi trois classes. Voici un nouveau fruit qui se situe entre les citrons et les oranges :
model = LogisticRegression(max_iter=1000)
model.fit(X, kind) # X : diamètre, poids ; kind : citron, citron vert ou orange
print(model.classes_)
print(np.round(model.predict_proba([[6.7, 144]]), 2))
print(model.predict([[6.7, 144]]))Cela affiche :
['lemon' 'lime' 'orange']
[[0.61 0. 0.39]]
['lemon']Chaque ligne contient une probabilité par classe, dans l’ordre de classes_, et leur somme vaut 1. predict choisit la plus élevée.
Le modèle indique donc son degré de certitude : 61 % pour le citron, c’est serré et mérite un second examen.
Défi
MoyenUne application de podcasts classe les nouveaux épisodes dans les catégories comédie, actualités ou crime réel. Le modèle de départ ajuste une LogisticRegression sur episodes.csv (durée, nombre d’intervenants, rires par minute) et lit un nouvel épisode dans episode, une table à une ligne.
Complète describe(episode) :
- Affiche la probabilité de chaque type d’émission, dans l’ordre de
model.classes_, en pourcentage entier. - Renvoie le type le plus probable.
Pour l’épisode d’une autre application :
comedy: 12%
news: 70%
true crime: 18%
Best guess: newsEssayez vous-même
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"])
# Affiche la probabilité de chaque type d’émission pour un épisode (un tableau à une ligne), puis renvoie le type le plus probable
def describe(episode):
# Écrivez votre code ici
return "unknown"
# Ne modifiez pas les lignes ci-dessous : un nouvel épisode, issu de la saisie
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}")
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Apprentissage supervisé
1Votre premier modèle
Apprendre à partir d’exemplesJeux d’entraînement et de testAjuster et prédireÉvaluer un modèleRécapitulatif : trieur de graines4Régression logistique
Prédictions oui ou nonLe seuil de décisionLes poids comme indicesPlusieurs classesRécapitulatif : filtre anti-spam2Plus proches voisins
Comment k-NN prend ses décisionsChoisir kFrontières de décisionMettre les voisins à l’échelleRécapitulatif : voisins et vin5Évaluer les classificateurs
La matrice de confusionPrécision et rappelLe score F1Classes déséquilibréesCourbes ROCRécapitulatif : test de dépistage8Validation croisée
Validation K-foldComparer les modèles équitablementRecherche par grilleRécapitulatif : réparations de skateboard11Projet : espèces de manchots
À la rencontre des manchotsPréparer les donnéesChoisir un modèleOptimiser le modèle gagnantDéployer le modèle3Régression linéaire
Prédire des nombresPlusieurs caractéristiquesMesurer les erreursGraphiques des résidusRécapitulatif : locations de vélos6Arbres de décision
Les arbres posent des questionsLire un arbreProfondeur de l’arbreImportance des caractéristiquesRécapitulatif : décisions de prêtEntraînez-vous par vous-même : Compilateur Python en ligne