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
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)
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])