Exercise - Encoding




1. 1. Analyse du dataset


Analyse du Dataset
df = sns.load_dataset('exercise')
df.head()
   Unnamed: 0  id     diet  pulse    time  kind
0           0   1  low fat     85   1 min  rest
1           1   1  low fat     85  15 min  rest
2           2   1  low fat     88  30 min  rest
3           3   2  low fat     90   1 min  rest
4           4   2  low fat     92  15 min  rest
3 colonnes ne sont pas numériques : 'diet', 'time' et 'kind'

Liste des valeurs de la colonne 'diet'
df['diet'].unique()
['low fat', 'no fat']
Categories (2, object): ['no fat', 'low fat']

Liste des valeurs de la colonne 'time'
df['time'].unique()
['1 min', '15 min', '30 min']
Categories (3, object): ['1 min', '15 min', '30 min']

Liste des valeurs de la colonne 'kind'
df['kind'].unique()
['rest', 'walking', 'running']
Categories (3, object): ['rest', 'walking', 'running']
'diet' est une variable binaire'kind' est une variable ordinale avec hiérarchie (rest < walking < running)'time' est une variable ordinale, mais extraire la valeur numérique qu'elle contient déjà



2. 2. Encodage 'diet' et 'kind'


Ordinal Encoder
diet_order = ['no fat', 'low fat']
kind_order = ['rest', 'walking', 'running']

encoder = OrdinalEncoder(
categories=[diet_order, kind_order],
handle_unknown='use_encoded_value',
unknown_value=-1
)
encoder.fit_transform(df[['diet', 'kind']])
    diet  kind
0    1.0   0.0
1    1.0   0.0
2    1.0   0.0
3    1.0   0.0
4    1.0   0.0
..   ...   ...
85   0.0   2.0
86   0.0   2.0
87   0.0   2.0
88   0.0   2.0
89   0.0   2.0

[90 rows x 2 columns]



3. 3. Encodage 'time'


Encodage de 'time'
df_time = df['time'].replace({'1 min':1, '15 min':15, '30 min':30})
0      1
1     15
2     30
3      1
4     15
      ..
85    15
86    30
87     1
88    15
89    30
Name: time, Length: 90, dtype: category
Categories (3, int64): [1, 15, 30]