web-dev-qa-db-ja.com

scikit-learnのImputerモジュールを使用して欠損値を予測する

scikit-learn's Imputerクラスを使用して、データセットの欠損値を予測する非常に基本的なプログラムを作成しています。

NumPy配列を作成し、strategy = 'mean'でImputerオブジェクトを作成し、NumPy配列に対してfit_transform()を実行しました。

Fit_transform()を実行した後に配列を出力すると、「Nan」が残り、予測が得られません。

ここで何が間違っていますか?欠損値を予測するにはどうすればよいですか?

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
16
xennygrimmato

ドキュメントsklearn.preprocessing.Imputer.fit_transform新しい配列を返します。引数配列は変更しません。したがって、最小限の修正は次のとおりです。

X = imp.fit_transform(X)
27
jonrsharpe

新しい配列が変換関数から返されるため、値を変更するには同じ配列(X)に格納する必要があります

 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])
2
MD SAZID KHAN