首页 > 解决方案 > Ngboost 算法可以自动处理缺失值吗?

问题描述

我得到了一个由 stanfordmlgroup 发明的名为 Ngboost 的新 GBDT 算法。我想使用它并调用编码

pip install ngboost==0.2.0

安装它。然后我训练一个不估算或删除缺失值的数据集。但是我收到一个错误:

Input contains NaN, infinity or a value too large for dtype('float32').

这是否意味着 Ngboost 无法像 xgboost 那样自动处理缺失值?

标签: pythonalgorithmgradientboosting

解决方案


是 ngboost 的一位创建者对此的回应

嘿@omsuchak,谢谢你的建议。没有一种“自然”或好的方法可以通用地处理丢失的数据。如果 ngboost 为您执行此操作,我们将在幕后做出许多用户无法看到的选择。

如果我们将自己限制在基本学习器是回归树的用例(就像我们对特征重要性所做的那样),那么对于如何处理缺失数据,有一些合理的默认选择。在这里实施这些策略可能并不难做到,但这也不是一项简单的任务。无论哪种方式,我都希望用户对正在发生的事情有一个透明的选择。我愿意审查这方面的拉取请求,因为它们满足该要求,但这不是我计划在可预见的将来自己做的事情。我现在将关闭,但如果有人想尝试添加此内容,请随时发表评论。

然后您可以看到有关如何解决该问题的其他答案,例如使用 sklearn.impute.MissingIndicator 模块(向模型指示缺失的存在)或一些 Imputer 模块。

如果您需要一个实际示例,您可以尝试使用生存示例(位于repo中!)。


推荐阅读