web-dev-qa-db-fra.com

Prédire les valeurs manquantes avec le module Imputer de scikit-learn

J'écris un programme très basique pour prédire les valeurs manquantes dans un jeu de données en utilisant scikit-learn's Imputer class. 

J'ai créé un tableau NumPy, créé un objet Imputer avec strategy = 'mean' et effectué fit_transform () sur le tableau NumPy.

Quand j'imprime le tableau après avoir effectué fit_transform (), les 'Nan restent, et je ne reçois aucune prédiction.

Qu'est-ce que je fais mal ici? Comment puis-je prédire les valeurs manquantes?

import numpy as np
from sklearn.preprocessing import Imputer

X = np.array([[23.56],[53.45],['NaN'],[44.44],[77.78],['NaN'],[234.44],[11.33],[79.87]])

print X

imp = Imputer(missing_values='NaN', strategy='mean', axis=0)
imp.fit_transform(X)

print X
14
xennygrimmato

Pour la documentation , sklearn.preprocessing.Imputer.fit_transform renvoie un nouveau tableau, il ne modifie pas le tableau d'arguments. Le correctif minimal est donc:

X = imp.fit_transform(X)
22
jonrsharpe

Comme le nouveau tableau est renvoyé par la fonction de transformation, je dois donc le stocker dans le même tableau (X) pour modifier les valeurs.

 from sklearn.preprocessing import Imputer
 imputer = Imputer(missing_values='NaN',strategy='mean',axis=0)  
 imputer = imputer.fit(X[:,1:3])
 X[:,1:3]= imputer.transform(X[:,1:3])
1
MD SAZID KHAN