【发布时间】:2018-11-08 03:38:26
【问题描述】:
问题
我正在使用 sklearn.preprocessing.Imputer 类在列上使用 mean 策略来估算 NaN 值,即轴 = 0。我的问题是某些需要估算的数据 only 在其列中具有 NaN 值,例如当只有一个条目时。
import numpy as np
import sklearn.preprocessing import Imputer
data = np.array([[1, 2, np.NaN]])
data = Imputer().fit_transform(data)
这给出了array([[1., 2.]])的输出
很公平,显然 Imputer 无法计算一组全为 NaN 的值的平均值。但是,我不想删除该值,而是想回退到默认值,在我的例子中是 0。
目前的做法
为了解决这个问题,我首先检查一整列是否只包含 NaN 值,如果是,则将它们替换为我的默认值 0:
# Loop over all columns in data
for column in data.T:
# Check if all values in column are NaN
if all(np.isnan(value) for value in column):
# Fill the column with default value 0
column.fill(0)
问题
如果整个轴仅包含 NaN 值,是否有更优雅的方法来估算默认值?
【问题讨论】:
-
你能把
does not have non-NaN values in it's column改成does have NaN values in it's column吗?这将很容易理解
标签: python scikit-learn imputation