Tips - Encoding
1. 1. Analyse du dataset
Analyse du Dataset
df = sns.load_dataset('tips')
df.head()
total_bill tip sex smoker day time size 0 16.99 1.01 Female No Sun Dinner 2 1 10.34 1.66 Male No Sun Dinner 3 2 21.01 3.50 Male No Sun Dinner 3 3 23.68 3.31 Male No Sun Dinner 2 4 24.59 3.61 Female No Sun Dinner 4
4 colonnes ne sont pas numériques :
- 'sex' : Genre
- 'smoker' : Fumeur ou non fumeur
- 'day' : Jour de la semaine
- 'time' : Horaire du diner
- 'sex' : Genre
- 'smoker' : Fumeur ou non fumeur
- 'day' : Jour de la semaine
- 'time' : Horaire du diner
Liste des valeurs de la colonne 'sex'
df['sex'].unique()
['Female', 'Male'] Categories (2, object): ['Male', 'Female']
Liste des valeurs de la colonne 'smoker'
df['smoker'].unique()
['No', 'Yes'] Categories (2, object): ['Yes', 'No']
Liste des valeurs de la colonne 'day'
df['day'].unique()
['Sun', 'Sat', 'Thur', 'Fri'] Categories (4, object): ['Thur', 'Fri', 'Sat', 'Sun']
Liste des valeurs de la colonne 'time'
df['time'].unique()
['Dinner', 'Lunch'] Categories (2, object): ['Lunch', 'Dinner']
2. 2. Encodage
Aucune de ces variables n'est hiérarchique => Encodage nominal OneHot
OneHot Encoder - 'Sex', 'Smoker', 'Day' et 'Time'
from sklearn.preprocessing import OneHotEncoder
# Optionnel pour export Pandas
from sklearn import set_config
set_config(transform_output = 'pandas')
encoder = OneHotEncoder(sparse_output=False, drop='first')
encoder.fit(df[['sex', 'smoker', 'day', 'time']])
encoder.transform(df[['sex', 'smoker', 'day', 'time']])
sex_Male smoker_Yes day_Sat day_Sun day_Thur time_Lunch 0 0.0 0.0 0.0 1.0 0.0 0.0 1 1.0 0.0 0.0 1.0 0.0 0.0 2 1.0 0.0 0.0 1.0 0.0 0.0 3 1.0 0.0 0.0 1.0 0.0 0.0 4 0.0 0.0 0.0 1.0 0.0 0.0 .. ... ... ... ... ... ... 239 1.0 0.0 1.0 0.0 0.0 0.0 240 0.0 1.0 1.0 0.0 0.0 0.0 241 1.0 1.0 1.0 0.0 0.0 0.0 242 1.0 0.0 1.0 0.0 0.0 0.0 243 0.0 0.0 0.0 0.0 1.0 0.0 [244 rows x 6 columns]