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]