Colonnes mixtes
Fait partie de la section Apprentissage supervisé du Journey Machine Learning de Coddy. Leçon 46 sur 58.
La plupart des tableaux mélangent des mots et des nombres, et chaque type nécessite sa propre étape. Un ColumnTransformer envoie chaque colonne à son étape et assemble les résultats :
Pour un magasin de disques, en code :
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))Chaque entrée est un nom, une étape et ses colonnes. Contrairement à get_dummies, l’encodeur mémorise les catégories d’entraînement, donc un nouvel enregistrement obtient les mêmes 7 colonnes.
Défi
MoyenUn club d’échecs veut connaître les chances de victoire de chaque joueur avant une partie. Le code de départ sépare chess.csv et lit les données de la partie de ce soir.
- Encode
openingetcolor, normaliserating_gapetminutes, puis affiche le nombre de colonnes obtenu à partir des lignes d’entraînement. - Enchaîne avec une régression logistique, entraîne le modèle et affiche la précision sur les données de test.
- Affiche les chances de victoire de ce soir.
Un autre club, trois ouvertures, et sicilian, black, 50, 15 :
Columns after preparing: 7
Test accuracy: 0.805
Win chance: 0.66Essayez vous-même
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
# Les parties d'un club d'échecs : l'ouverture, la couleur du joueur, son classement moins
# celui de l'adversaire, les minutes restantes à la pendule et si le joueur a gagné (1) ou non (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 partie de ce soir, une ligne avec les mêmes colonnes
game = pd.DataFrame({"opening": [input()], "color": [input()],
"rating_gap": [int(input())], "minutes": [int(input())]})
# Écrivez votre code ci-dessous
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-spam7Surapprentissage
Sous-apprentissage et surapprentissageCourbes d’apprentissageRégularisationEnsembles de validationRécapitulatif : régler un arbre10Chaînes de traitement
Chaînes de traitementColonnes mixtesImputation dans une chaîne de traitementOptimisation d’une chaîne de traitementRécapitulatif : nettoyer et prédire2Plus 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