Imputation dans une chaîne de traitement
Fait partie de la section Apprentissage supervisé du Journey Machine Learning de Coddy. Leçon 47 sur 58.
Les journaux réels comportent des lacunes, et la plupart des modèles ne les acceptent pas. Un SimpleImputer remplit chaque lacune avec la moyenne, la médiane ou la valeur la plus fréquente de sa colonne.
Remplir avant la séparation, et les lignes de test contribuent au choix de cette valeur : une fuite de données. Sept profondeurs de plongée et une lacune :
Dans un pipeline, fit apprend les valeurs de remplacement à partir des lignes d’entraînement uniquement :
from sklearn.impute import SimpleImputer
pipe = make_pipeline(SimpleImputer(strategy="median"), StandardScaler(), model)
pipe.fit(X_train, y_train)
print(pipe[0].statistics_) # les valeurs de remplacement de la première étapePour un journal de plongée (profondeur, minutes, température de l’eau), cela affiche :
[19. 44. 21.]Avec les mots aussi, les étapes de traitement des nombres deviennent une voie du ColumnTransformer :
lane = make_pipeline(SimpleImputer(strategy="median"), StandardScaler())
("numbers", lane, ["depth_m", "minutes"])Défi
MoyenUn service forestier prédit quels impacts de foudre déclenchent des incendies, mais certaines mesures sont manquantes. Le code de départ sépare wildfire.csv et lit une stratégie, mean ou median.
- Entraîne un pipeline composé d’un imputeur utilisant cette stratégie, d’un scaler et d’une régression logistique. Affiche sa précision sur l’ensemble de test.
- Pour chaque colonne, affiche la valeur de remplacement du pipeline et celle qu’on obtiendrait avec toutes les lignes de
X, avec 1 décimale.
Une autre forêt, avec median :
Test accuracy: 0.840
humidity_pct: fill 46.0, all rows would give 46.0
wind_kmh: fill 29.0, all rows would give 32.0
temp_c: fill 25.0, all rows would give 26.0
days_without_rain: fill 23.0, all rows would give 23.0Chaque fois que les deux valeurs diffèrent, le remplacement avant la séparation aurait permis aux lignes de test d’influencer les données d’entraînement.
Essayez vous-même
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import make_pipeline
# Impacts de foudre dans une forêt sèche : l’impact a-t-il déclenché un incendie (1) ou non (0) ?
# Certaines mesures météorologiques sont manquantes.
strikes = pd.read_csv("wildfire.csv")
columns = ["humidity_pct", "wind_kmh", "temp_c", "days_without_rain"]
X = strikes[columns]
y = strikes["fire"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
strategy = 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