0

我有一个包含大量列的数据集,我已经对我的应用程序进行了编程,如果给定列的任何值丢失,那么它将填充以均值作为 imputer 策略的 imputer 值。

但是,我有点担心,如果整个列的所有值都丢失了,那么 imputer 将如何执行,在这种情况下正确的方法是什么?

4

1 回答 1

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

在这种情况下,这种默认行为可能是正确的方法,因为无论如何都不能使用这个列(即这个特性)。

于 2016-12-26T11:32:38.057 回答