J'ai une fonctionnalité appelée smoking_status qui a 3 valeurs différentes:

1) fume

2) anciennement fumé

3) jamais fumé

La colonne d'entités (smoking_status) a plus de 3 valeurs ainsi que beaucoup de valeurs NaN comment puis-je traiter les valeurs NaN parce que mes données ne sont pas numériques, si elles étaient numériques, j'aurais pu les remplacer en utilisant { {X2}} ou mean. Comment puis-je remplacer les valeurs NaN dans mon cas?

enter image description here

-1
adi_tdkr 14 avril 2018 à 09:17

3 réponses

On dirait que la question concerne la méthodologie, pas le problème technique.

Vous pouvez donc essayer

1) La valeur la plus fréquente parmi ces trois;

2) Utilisez d'autres statistiques de champs catégoriques de votre ensemble de données (par exemple, le statut de fumeur le plus courant du groupe);

3) valeurs aléatoires;

4) Catégorie "INCONNU"

Ensuite, vous pouvez faire un codage à chaud et vérifier définitivement vos modèles lors de la validation croisée pour choisir la bonne façon.

Il existe également un moyen plus délicat: utilisez ce statut comme variable cible et essayez de prédire ces NaN avec scikit en utilisant toutes les autres données.

0
Stephen Docy 20 avril 2018 à 07:38

Exemple de données catégorielles:

ser = pd.Categorical(['non', 'non', 'never', 'former', 'never', np.nan])

Remplis-le:

ser.add_categories(['unknown']).fillna('unknown')

Vous donne:

[non, non, never, former, never, unknown]
Categories (4, object): [former, never, non, unknown]
0
John Zwinck 14 avril 2018 à 06:28

Vous ne disposez pas des données pour ces lignes. Vous pouvez simplement le remplir en valeur médiane ou moyenne, la valeur la plus courante dans cette fonction. Mais dans ce cas particulier, c'est une mauvaise idée compte tenu de la fonctionnalité.

Une meilleure approche serait de remplir une chaîne disant 'unknown' / 'na'

df['smoking_status'].fillna('NA')

Ensuite, vous pouvez étiqueter l'encoder ou convertir la colonne en un encodage à chaud.

0
Vikash Singh 14 avril 2018 à 06:25