python - sklearn imputer 删除具有缺失值的列

标签 python scikit-learn imputation

我目前正在学习 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/

相关文章:

python - scikit-learn, linearsvc - 如何从经过训练的 SVM 中获取支持向量?

python - 用于 Python 的 Pandas : Exception: Data must be 1-dimensional

python - 如何使用正则表达式匹配包含两个反斜杠的字符串

python - 如何禁用 Kedro 中的日志

Python:显示光标中元组的第一个元素

python - 如何在 Python 中使用 sklearn 对模型进行单一预测?

python - 使用 fancyimpute 和 pandas 进行数据插补

r - 绘制多重插补结果

r - 按组用均值插补缺失数据

python - 使用csv文件作为输入在python中绘制直方图