Apprentissage automatique Python – Prétraitement

Sur cette page, Infodewi.com collabore avec
Académie des sciences des données de NYCpour délivrer des contenus de formation numériques à nos étudiants.
Données catégorielles
Lorsque vos données comportent des catégories représentées par des chaînes, il sera difficile de les utiliser pour former des modèles d’apprentissage automatique qui n’acceptent souvent que des données numériques.
Au lieu d’ignorer les données catégorielles et d’exclure les informations de notre modèle, vous pouvez transformer les données afin qu’elles puissent être utilisées dans vos modèles.
Jetez un œil au tableau ci-dessous, il s’agit du même ensemble de données que nous avons utilisé dans le chapitre sur la régression multiple.
Exemple
importer des pandas en tant que pd
voitures = pd.read_csv(‘data.csv’)
print(cars.to_string())
Résultat
Car Model Volume Weight CO2 0 Toyoty Aygo 1000 790 99 1 Mitsubishi Space Star 1200 1160 95 2 Skoda Citigo 1000 929 95 3 Fiat 500 900 865 90 4 Mini Cooper 1500 1140 105 5 VW Up! 1000 929 105 6 Skoda Fabia 1400 1109 90 7 Mercedes A-Class 1500 1365 92 8 Ford Fiesta 1500 1112 98 9 Audi A1 1600 1150 99 10 Hyundai I20 1100 980 99 11 Suzuki Swift 1300 990 101 12 Ford Fiesta 1000 1112 99 13 Honda Civic 1600 1252 94 14 Hundai I30 1600 1326 97 15 Opel Astra 1600 1330 97 16 BMW 1 1600 1365 99 17 Mazda 3 2200 1280 104 18 Skoda Rapid 1600 1119 104 19 Ford Focus 2000 1328 105 20 Ford Mondeo 1600 1584 94 21 Opel Insignia 2000 1428 99 22 Mercedes C-Class 2100 1365 99 23 Skoda Octavia 1600 1415 99 24 Volvo S60 2000 1415 99 25 Mercedes CLA 1500 1465 102 26 Audi A4 2000 1490 104 27 Audi A6 2000 1725 114 28 Volvo V70 1600 1523 109 29 BMW 5 2000 1705 114 30 Mercedes E-Class 2100 1605 115 31 Volvo XC70 2000 1746 117 32 Ford B-Max 1600 1235 104 33 BMW 216 1600 1390 108 34 Opel Zafira 1600 1405 109 35 Mercedes SLK 2500 1395 120
Exemple d’exécution »
Dans le chapitre sur la régression multiple, nous avons essayé de prédire le CO2 émis en fonction du volume du moteur et du poids de la voiture, mais nous avons exclu les informations sur la marque et le modèle de la voiture.
Les informations sur la marque ou le modèle de voiture peuvent nous aider à mieux prédire le CO2 émis.
PUBLICITÉ
Un encodage à chaud
Nous ne pouvons pas utiliser la colonne Car ou Model dans nos données car elles ne sont pas numériques. Une relation linéaire entre une variable catégorielle, Voiture ou Modèle, et une variable numérique, CO2, ne peut pas être déterminée.
Pour résoudre ce problème, nous devons avoir une représentation numérique de la variable catégorielle. Une façon de faire est d’avoir une colonne représentant chaque groupe dans la catégorie.
Pour chaque colonne, les valeurs seront 1 ou 0 où 1 représente l’inclusion du groupe et 0 représente l’exclusion. Cette transformation est appelée un codage à chaud.
Vous n’avez pas à le faire manuellement, le module Python Pandas a une fonction appelée
get_dummies()
qui fait un encodage à chaud.
Découvrez le module Pandas dans notre didacticiel Pandas.
Exemple
Une colonne « Hot Encode the Car » :
importer des pandas en tant que pd
voitures = pd.read_csv(‘data.csv’)
ohe_cars = pd.get_dummies(voitures[[‘Car’]])
print(ohe_cars.to_string())
Résultat
Car_Audi Car_BMW Car_Fiat Car_Ford Car_Honda Car_Hundai Car_Hyundai Car_Mazda Car_Mercedes Car_Mini Car_Mitsubishi Car_Opel Car_Skoda Car_Suzuki Car_Toyoty Car_VW Car_Volvo 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 3 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 6 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 7 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 8 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 9 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 11 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 12 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 13 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 14 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 15 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 16 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 18 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 19 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 20 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 21 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 22 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 23 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 25 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 26 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 29 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 31 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 32 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 33 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 34 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 35 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
Exemple d’exécution »
Résultats
Une colonne a été créée pour chaque marque de voiture dans la colonne Voiture.
Prédire le CO2
Nous pouvons utiliser ces informations supplémentaires avec le volume et le poids pour prédire le CO2
Pour combiner les informations, nous pouvons utiliser le concat()
fonction des pandas.
Nous devrons d’abord importer quelques modules.
Nous allons commencer par importer les Pandas.
Le module pandas nous permet de lire des fichiers csv et de manipuler des objets DataFrame :
cars = pandas.read_csv("data.csv")
Cela nous permet également de créer les variables factices :
ohe_cars = pandas.get_dummies(cars[['Car']])
Ensuite, nous devons sélectionner les variables indépendantes (X) et ajouter les variables muettes en colonne.
Enregistrez également la variable dépendante dans y.
X = pandas.concat([cars[['Volume', 'Weight']], ohe_cars], axis=1)
y = cars['CO2']
Nous devons également importer une méthode de sklearn pour créer un modèle linéaire
En savoir plus sur la régression linéaire.
from sklearn import linear_model
Nous pouvons maintenant ajuster les données à une régression linéaire :
regr = linear_model.LinearRegression()
regr.fit(X,y)
Enfin, nous pouvons prédire les émissions de CO2 en fonction du poids, du volume et du fabricant de la voiture.
##predict the CO2 emission of a Volvo where the weight is 2300kg, and the volume is 1300cm3:
predictedCO2 = regr.predict([[2300, 1300,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0]])
Exemple
importer des pandas
de sklearn importer linear_model
voitures = pandas.read_csv(« data.csv »)
ohe_cars = pandas.get_dummies(voitures[[‘Car’]])
X = pandas.concat([cars[[‘Volume’, ‘Weight’]], ohe_cars], axe=1)
y = voitures[‘CO2’]
regr = linear_model.LinearRegression()
regr.fit(X,y)
##prédire l’émission de CO2 d’une Volvo dont le poids est de 2 300 kg et le volume de 1 300 cm3 :
préditCO2 = regr.predict([[2300, 1300,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0]])
impression (CO2 prédit)
Résultat
Exemple d’exécution »
Nous avons maintenant un coefficient pour le volume, le poids et chaque marque de voiture dans l’ensemble de données
Dummification
Il n’est pas nécessaire de créer une colonne pour chaque groupe de votre catégorie. Les informations peuvent être conservées en utilisant 1 colonne de moins que le nombre de groupes que vous avez.
Par exemple, vous avez une colonne représentant les couleurs et dans cette colonne, vous avez deux couleurs, rouge et bleu.
Exemple
importer des pandas en tant que pd
couleurs = pd.DataFrame({‘couleur’ : [‘blue’, ‘red’]})
impression (couleurs)
Résultat
Exemple d’exécution »
Vous pouvez créer 1 colonne appelée rouge où 1 représente le rouge et 0 représente pas le rouge, ce qui signifie qu’il est bleu.
Pour ce faire, nous pouvons utiliser la même fonction que nous avons utilisée pour un encodage à chaud, get_dummies, puis supprimer l’une des colonnes. Il y a un argument, drop_first, qui nous permet d’exclure la première colonne de la table résultante.
Exemple
importer des pandas en tant que pd
couleurs = pd.DataFrame({‘couleur’ : [‘blue’, ‘red’]})
mannequins = pd.get_dummies(couleurs, drop_first=True)
impression (mannequins)
Résultat
Exemple d’exécution »
Et si vous avez plus de 2 groupes ? Comment les groupes multiples peuvent-ils être représentés par 1 colonne de moins ?
Disons que nous avons trois couleurs cette fois, rouge, bleu et vert. Lorsque nous get_dummies en supprimant la première colonne, nous obtenons le tableau suivant.
Exemple
importer des pandas en tant que pd
couleurs = pd.DataFrame({‘couleur’ : [‘blue’, ‘red’,
‘green’]})
mannequins = pd.get_dummies(couleurs, drop_first=True)
nuls[‘color’] = couleurs[‘color’]
impression (mannequins)
Résultat
color_green color_red color 0 0 0 blue 1 0 1 red 2 1 0 green
Exemple d’exécution »
#Apprentissage #automatique #Python #Prétraitement