IterativeImputer - 返回 -0 和其他奇怪的结果

数据挖掘 机器学习 scikit-学习 数据清理
2022-01-30 11:13:23

IterativeImputer用来估算我的数据集。

from sklearn.experimental import enable_iterative_imputer  
from sklearn.impute import IterativeImputer

imp = IterativeImputer(random_state=0, max_iter=100, verbose=10)
imp.fit(hosp)

hosp_imputed = pd.DataFrame(imp.transform(hosp), columns=cols)

在此处输入图像描述

我有一个布尔列“ICU”,其中包含 8 个缺失值。但是在插补之后,它会输出非常奇怪的结果。请参阅随附的屏幕截图。你能告诉我我做错了什么吗?

1个回答

尽管我不确定为什么会这样,但这似乎很正常。请参阅 sklearn 文档中的示例:https ://scikit-learn.org/stable/modules/impute.html#multivariate-feature-imputation

import numpy as np
from sklearn.experimental import enable_iterative_imputer
from sklearn.impute import IterativeImputer
imp = IterativeImputer(max_iter=10, random_state=0)
imp.fit([[1, 2], [3, 6], [4, 8], [np.nan, 3], [7, np.nan]])

X_test = [[np.nan, 2], [6, np.nan], [np.nan, 6]]
# the model learns that the second feature is double the first
print(np.round(imp.transform(X_test)))

他们np.round最后使用来获得结果:

array([[ 1.,  2.],
       [ 6., 12.],
       [ 3.,  6.]])

在不四舍五入的情况下运行此代码会产生与您类似的结果:

array([[ 1.00007297,  2.        ],
       [ 6.        , 12.00002754],
       [ 2.99996145,  6.        ]])

尝试np.round在投射之前添加pd.DataFrame以查看是否有帮助。