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