具有多个值的 scikit-learn Imputer



有没有办法让Scikit-learn估算器寻找并替换被认为是"缺失值"的多个值?

例如,我想做类似的事情

imp = Imputer(missing_values=(7,8,9))

但根据文档,missing_values参数只接受单个整数:

missing_values:整数或"NaN",可选(默认值="NaN"(

缺失值的占位符。所有missing_values的出现都将被推算。对于编码为 np.nan 的缺失值,请使用字符串值"NaN"。

为什么不在原始数据集中手动执行此操作?假设您正在使用pd.DataFrame则可以执行以下操作:

import numpy as np
import pandas as pd
from sklearn.preprocessing import Imputer
df = pd.DataFrame({'A': [1, 2, 3, 8], 'B': [1, 2, 5, 3]})
df_new = df.replace([1, 2], np.nan)
df_imp = Imputer().fit_transform(df_new)

这导致df_imp

array([[ 5.5,  4. ],
[ 5.5,  4. ],
[ 3. ,  5. ],
[ 8. ,  3. ]])

如果要使其成为管道的一部分,则只需实现具有类似逻辑的自定义转换器。

您可以在管道中链接多个插补器,但这可能很快就会变得忙碌,我不确定这有多高效。

pipeline = make_pipeline(
SimpleImputer(missing_values=7, strategy='constant', fill_value=10),
SimpleImputer(missing_values=8, strategy='constant', fill_value=10),
SimpleImputer(missing_values=9, strategy='constant', fill_value=10)
)

相关内容

  • 没有找到相关文章

最新更新