webentwicklung-frage-antwort-db.com.de

Vorhersage fehlender Werte mit dem Imputer-Modul von scikit-learn

Ich schreibe ein sehr einfaches Programm, um fehlende Werte in einer Datenmenge mithilfe der Klasse scikit-learn's Imputervorherzusagen. 

Ich habe ein NumPy-Array erstellt, ein Imputer-Objekt mit Strategie = 'mean' erstellt und fit_transform () für das NumPy-Array ausgeführt.

Wenn ich das Array nach dem Ausführen von fit_transform () drucke, bleiben die 'Nan's und ich erhalte keine Vorhersage.

Was mache ich hier falsch? Wie gehe ich vor, um die fehlenden Werte vorherzusagen?

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

Per die Dokumentation , sklearn.preprocessing.Imputer.fit_transform gibt ein neues Array zurück, das Argumentarray wird dadurch nicht geändert. Der minimale Fix ist daher:

X = imp.fit_transform(X)
22
jonrsharpe

Da das neue Array von der Transformationsfunktion zurückgegeben wird, muss ich es daher in demselben Array (X) speichern, um die Werte zu ändern

 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