Python Tutorial

Apprentissage automatique Python – Prétraitement


Sur cette page, Infodewi.com collabore avec
Académie des sciences des données de NYC
pour 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

Articles similaires

Voir Aussi
Fermer
Bouton retour en haut de la page