Tips - Encoding

1. Analyse du dataset
2. Choix du type d'encodage



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

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. Choix du type d'encodage

Aucune de ces variables n'est hiérarchique => Encodage nominal OneHot

Documentation OneHot Encoder
https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.OneHotEncoder.html

OneHot Encoder - 'Sex', 'Smoker', 'Day' et 'Time'
encoder = OneHotEncoder(sparse_output=False)
encoder.fit(df[['sex', 'smoker', 'day', 'time']])
encoder.transform(df[['sex', 'smoker', 'day', 'time']])

[[1. 0. 1. ... 0. 1. 0.]
 [0. 1. 1. ... 0. 1. 0.]
 [0. 1. 1. ... 0. 1. 0.]
 ...
 [0. 1. 0. ... 0. 1. 0.]
 [0. 1. 1. ... 0. 1. 0.]
 [1. 0. 1. ... 1. 1. 0.]]