Scikit-learn Imputer具有多个值

时间:2018-06-11 21:33:28

标签: python scikit-learn imputation

是否有办法让Scikit-learn Imputer查找并替换被视为“缺失值”的多个值?

例如,我想做类似

的事情
imp = Imputer(missing_values=(7,8,9))

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

  

missing_values:整数或“NaN”,可选(默认=“NaN”)

     

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

1 个答案:

答案 0 :(得分:1)

为什么不在原始数据集中手动执行此操作?假设您使用的是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. ]])

如果您想将此作为管道的一部分,您只需要实现具有类似逻辑的自定义转换器。