我目前正在学习 sklearn imputer我发现有一种策略没有被 imputers 实现。
我想构建一个管道,删除具有任何缺失值的列或删除所有具有缺失值的行。
我为什么要这个?
因为我想进行网格搜索并在我的 RMSE 或分类分数上找到任何插补方法的缺陷。
有什么方法可以用 sklearn 管道做到这一点?还是我应该创建自己的 imputer?
如果之前有人问过这个问题,请随时建议关闭问题并指出正确的资源。
有关更多上下文,我有 21 个特征和 1000 个数据点,只有一列有缺失值,这些缺失值占列中值的 50%。我只想探索缺失值插补方法对我的分类器的准确性和 f1 分数的影响。
最佳答案
我建议使用 autoimpute 库。它可能是目前处理具有缺失值的数据集的最佳工具。
它有一个功能可以完全按照您的要求执行,删除具有任何缺失值的行。
from autoimpute.imputations import MiceImputer, SingleImputer, listwise_delete
listwise_delete(df, inplace=True, verbose=False)
一般来说,sklearn 的 imputer 的用处非常有限,而 autoimpute 能够填补很多空白。更具体地说,它允许:
- 明确设置您希望在计算估算值时将其视为变量的列
- 为每列或一组列设置不同的插补算法
si_dict_col = SingleImputer(
strategy={"gender":"categorical", "salary": "pmm", "weight": "pmm"},
predictors={"gender": ["salary", "weight", "looks"], "salary": ["weight", "gender"])
- 有内置的方法来可视化不同插补方法的结果
plot_imp_scatter(data_het_miss, "x", "y", "least squares")
它也遵循 sklearn 的模式,可以在管道中替代 sklearn 自己的 imputer 函数。
关于python - sklearn imputer 删除具有缺失值的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70611608/