0

多数の列を持つデータセットがあります。欠落していると、それはimputer戦略としてmeanを持つimputer値で満たされます。sklearnの入力ベクトルに列のすべての値がない場合、Imputerはどのように機能するのですか?

しかし、列全体の値がすべて不足していると、コンピュータがどのように機能するのか、そのような場合には正しい方法は何でしょうか。

答えて

1

特定の列にすべてのデータがない場合、Imputerはその列を破棄します。ここ

は、欠落値を有する一つのサンプルと、4つのサンプル及び2列に、一例である:

X = np.array([[1,1],[1,2],[1,1],[1,2],[1,np.nan]]) 
imputer = Imputer(missing_values='NaN', strategy='mean', axis=0) 
print(imputer.fit_transform(X)) 

第二の列内のすべてのデータ場合、これは、しかし

[[ 1. 1. ] 
[ 1. 2. ] 
[ 1. 1. ] 
[ 1. 2. ] 
[ 1. 1.5]] 

をプリントアウト欠落しています。

X = np.array([[1,np.nan],[1,np.nan],[1,np.nan],[1,np.nan],[1,np.nan]]) 
imputer = Imputer(missing_values='NaN', strategy='mean', axis=0) 
print(imputer.fit_transform(X)) 

我々は得る:

[[ 1.] 
[ 1.] 
[ 1.] 
[ 1.] 
[ 1.]] 

このデフォルトの動作は、この列が(、つまりこの機能)とにかく使用できないため、この場合の正しいアプローチです。

+0

予測の入力ベクトルはどのようになりますか。 ?新しい入力ベクトルにその特定の値の値があるとすると、モデルは機能しますか? –

+0

私はそれがここの複数のものに依存していると思う: - あなたの新しい入力ベクトルがトレーニングセットで使用されるならば、あなたはこの与えられた列のこの1つの値が役に立たないと考えるか、元のデータセットのimputerを使用して、この列の値を残りのベクトルに代入します(データセット全体でこの列に値が1つのみの場合は危険な方法) - 新しい入力ベクトルがテストに含まれている場合モデルはこの特定のフィーチャの値を使用して訓練されていないため、この列を削除する必要があります。 – KevinD