# Librairies ```python import numpy as np import pandas as pd import seaborn as sns from sklearn.preprocessing import OneHotEncoder import sklearn print(sklearn.__version__) ``` 1.5.1 # Load MPG Data ```python df = sns.load_dataset('mpg') df.head() ``` <div> <style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; } .dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; } </style> <table border="1" class="dataframe"> <thead> <tr style="text-align: right;"> <th></th> <th>mpg</th> <th>cylinders</th> <th>displacement</th> <th>horsepower</th> <th>weight</th> <th>acceleration</th> <th>model_year</th> <th>origin</th> <th>name</th> </tr> </thead> <tbody> <tr> <th>0</th> <td>18.0</td> <td>8</td> <td>307.0</td> <td>130.0</td> <td>3504</td> <td>12.0</td> <td>70</td> <td>usa</td> <td>chevrolet chevelle malibu</td> </tr> <tr> <th>1</th> <td>15.0</td> <td>8</td> <td>350.0</td> <td>165.0</td> <td>3693</td> <td>11.5</td> <td>70</td> <td>usa</td> <td>buick skylark 320</td> </tr> <tr> <th>2</th> <td>18.0</td> <td>8</td> <td>318.0</td> <td>150.0</td> <td>3436</td> <td>11.0</td> <td>70</td> <td>usa</td> <td>plymouth satellite</td> </tr> <tr> <th>3</th> <td>16.0</td> <td>8</td> <td>304.0</td> <td>150.0</td> <td>3433</td> <td>12.0</td> <td>70</td> <td>usa</td> <td>amc rebel sst</td> </tr> <tr> <th>4</th> <td>17.0</td> <td>8</td> <td>302.0</td> <td>140.0</td> <td>3449</td> <td>10.5</td> <td>70</td> <td>usa</td> <td>ford torino</td> </tr> </tbody> </table> </div> # OneHotEncoder - Permet d'encoder les catégories nominales (sans ordre hiérarchique) - Pricipaux arguments: - sparse_output: retourne une matrice creuse (remplie de valeurs nulles) sinon par défaut, onehotencoder retourne une matrice compressée. - drop : élimine une des colonnes pour éviter le problème de multi-colinéarité - handle_unknown: rajoute une colonne supplémentaire pour les futures catégories inconnues ```python encoder = OneHotEncoder(sparse_output=False) encoder.fit(df[['origin', 'name']]) sns.heatmap(encoder.transform(df[['origin', 'name']])) ``` <Axes: > ![png](onehot_encoding_5_1.png) La matrice est très large et principalement vide. on pourrait se limiter un constructeur des voitures plutôt que le modèle. ```python # Prenons uniquement la variable 'origin' encoder = OneHotEncoder(sparse_output=False, drop='first', handle_unknown='ignore') # drop='first' pour éviter la colinéarité encoder.fit(df[['origin']]) encoder.transform(df[['origin']]) ``` array([[0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [1., 0.], [0., 1.], [0., 1.], [0., 1.], [1., 0.], [0., 0.], [0., 0.], [0., 0.], [0., 0.], [0., 0.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [1., 0.], [0., 1.], [1., 0.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 0.], [0., 0.], [0., 0.], [1., 0.], [1., 0.], [0., 0.], [0., 1.], [1., 0.], [0., 1.], [0., 0.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [1., 0.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 0.], [0., 0.], [0., 0.], [0., 0.], [0., 1.], [1., 0.], [1., 0.], [0., 1.], [1., 0.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 0.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [1., 0.], [0., 1.], [1., 0.], [1., 0.], [0., 1.], [0., 1.], [0., 0.], [0., 1.], [0., 1.], [0., 0.], [0., 0.], [0., 0.], [0., 0.], [0., 1.], [0., 0.], [1., 0.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [1., 0.], [0., 1.], [1., 0.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 0.], [0., 0.], [0., 0.], [1., 0.], [1., 0.], [0., 1.], [0., 0.], [0., 0.], [1., 0.], [1., 0.], [0., 0.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [1., 0.], [0., 1.], [0., 1.], [0., 1.], [1., 0.], [0., 0.], [1., 0.], [0., 1.], [0., 0.], [0., 1.], [0., 0.], [0., 0.], [0., 0.], [0., 0.], [1., 0.], [0., 0.], [0., 0.], [0., 1.], [0., 1.], [0., 0.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 0.], [1., 0.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 0.], [1., 0.], [1., 0.], [0., 1.], [0., 0.], [0., 1.], [0., 0.], [1., 0.], [0., 0.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [1., 0.], [0., 1.], [0., 0.], [0., 1.], [1., 0.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 0.], [0., 1.], [1., 0.], [0., 1.], [0., 1.], [0., 1.], [1., 0.], [0., 0.], [1., 0.], [0., 0.], [1., 0.], [0., 0.], [0., 1.], [1., 0.], [1., 0.], [1., 0.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [1., 0.], [1., 0.], [0., 1.], [1., 0.], [0., 1.], [0., 1.], [1., 0.], [0., 0.], [0., 0.], [0., 0.], [0., 0.], [0., 0.], [1., 0.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 0.], [1., 0.], [0., 1.], [0., 1.], [0., 0.], [0., 1.], [0., 0.], [0., 1.], [0., 1.], [0., 1.], [1., 0.], [0., 0.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 0.], [1., 0.], [0., 1.], [1., 0.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 0.], [1., 0.], [1., 0.], [1., 0.], [1., 0.], [1., 0.], [0., 1.], [1., 0.], [0., 0.], [0., 0.], [0., 0.], [0., 0.], [1., 0.], [0., 0.], [1., 0.], [0., 0.], [1., 0.], [1., 0.], [0., 0.], [0., 1.], [1., 0.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [1., 0.], [0., 1.], [1., 0.], [1., 0.], [1., 0.], [1., 0.], [1., 0.], [0., 1.], [0., 1.], [0., 1.], [0., 0.], [0., 0.], [1., 0.], [1., 0.], [1., 0.], [1., 0.], [0., 0.], [0., 0.], [1., 0.], [1., 0.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [0., 0.], [1., 0.], [1., 0.], [0., 1.], [0., 1.], [1., 0.], [1., 0.], [1., 0.], [1., 0.], [1., 0.], [1., 0.], [0., 1.], [0., 1.], [0., 1.], [0., 1.], [1., 0.], [0., 1.], [0., 1.], [0., 1.], [0., 0.], [0., 1.], [0., 1.], [0., 1.]])