Roulitoo / cours_iae

5 stars 4 forks source link

Questions #15

Open ElieCht opened 8 months ago

ElieCht commented 8 months ago

Bonjour Monsieur,

Tout d'abord, bonne année et meilleurs voeux.

Nous avions quelques petites questions à vous poser.

Premièrement, notre target est très déséquilibrée. Nous avons donc effectué un sous-échantillonage. Cependant, nous ne savons pas où placer cette partie : au tout début de l'analyse ou alors dans la partie des statistiques univariées (sachant que nous n'avons pas de NAs donc la variable n'est pas modifiée par la suite). Lors de la suppression de valeurs atypiques, la distribution change et devient 55.8% et 44.2%.

Ensuite, nous ne sommes pas sûrs quant aux types de nos variables. Certaines variables possèdent pas mal de modalités donc nous avons essayé un OneHotEncoder comme dans votre cours mais nous perdons environ 90% de nos données. Nous avons donc effectué un get_dummies. Ainsi, nous obtenons une variable par catégorie (je vous met le code que nous avons fait pour que vous puissiez visualiser).


health_mapping = {1: 'Excellent', 2: 'Very good', 3: 'Good', 4: 'Fair', 5: 'Poor'}

df_balanced['GenHealth'] = df_balanced['GenHealth'].replace(health_mapping)

df_encoded = pd.get_dummies(df_balanced, columns=['GenHealth'], prefix='GenHealth')

df_encoded.rename(columns={ 'GenHealth_Excellent': 'Excellent', 'GenHealth_Very good': 'Very_good', 'GenHealth_Good': 'Good', 'GenHealth_Fair': 'Fair', 'GenHealth_Poor': 'Poor' }, inplace=True)

Ensuite, nous avons recoder les variables en format "int32". Le problème est que cela nous crée énormément de variables (nous en avons 38 suite à ces transformations). Nous voulions savoir si nous avions bien fait, ou alors peut-être aurions-nous dû simplement les mettre en format "object" ?

Notre dernière question concerne les valeurs atypiques. Pour toutes nos variables quantitatives il y a largement plus de 10 valeurs atypiques donc nous avons fait un test ESD en reprenant le code de l'année dernière mais quand nous vérifions il reste énormément de valeurs atypiques. Nous avons fait un autre code qui, après vérification, enlève toutes les valeurs atypiques sauf pour deux variables, doit-on les supprimer ?

Merci d'avance pour votre réponse.

Cordialement,

Lou-Ann & Elie

Roulitoo commented 8 months ago

Bonjour à tous les deux et meilleurs voeux,

Question Target déséquilibrée

Je réaliserai cet échantillonage après lapartie analyse statistiques. Le choix intervient après l'analyse et servira uniquement pour votre modélisation. La stratégie sampling doit intervenir après le train_test_split ( regarder aussi stratified sampling) et uniquement sur le jeu d'entrainement.

One hot ou get_dummies

Pour moi ces 2 fonctions sont similaires donc je ne comprends pas votre message

Trop de variables catégorielles

C'est le problème inhérentde la stratégie one hot encoding. Cela augmente considérablement les dimensions. Vous pouvez faire :

Outliers

Vous pouvez supprimer les valeurs atypiques ou alors imputer une nouvelle valeur pour ne pas supprimer la ligne. A vous de juger si la ligne doit être retirée ou alors s'il faut remplacer la valeur. Vous pouvez également discrétiser la variable et créer des catéogies basées sur des bornes [valeur1,valeur2[ [valeur2,valeur3] etc

Si ce n'est pas clair je peux compléter

ElieCht commented 8 months ago

Donc si j'ai bien compris, on effectue le souséchantillonnage seulement sur le jeu d'entraînement ( X_train et y_train ?). Ensuite, stratified sampling que la distribution des classes reste proportionnelle à celle de l'ensemble des données. Mais du coup on doit traiter les outliers avant sauf qu'après ce sous-échantillonnage, il peut quand même rester des outliers non ?