我得到了由stanfordmlgroup发明的名为Ngboost的新GBDT算法。我想使用它并调用编码
pip install ngboost==0.2.0
进行安装。 然后,我训练不会插补或删除缺失值的数据集。 但是我得到一个错误:
Input contains NaN,infinity or a value too large for dtype('float32').
这是否意味着Ngboost无法像xgboost一样自动处理缺失值?
我得到了由stanfordmlgroup发明的名为Ngboost的新GBDT算法。我想使用它并调用编码
pip install ngboost==0.2.0
进行安装。 然后,我训练不会插补或删除缺失值的数据集。 但是我得到一个错误:
Input contains NaN,infinity or a value too large for dtype('float32').
这是否意味着Ngboost无法像xgboost一样自动处理缺失值?
此错误有两种可能。
1-您的价值很高。检查列的最大值。
2-该算法不支持NAN和inf类型,因此您必须像处理其他一些回归模型一样处理它们。
,Here是一位ngboost创作者对此的回应
嘿@omsuchak,谢谢您的建议。没有一种“自然”的或好的方法来处理丢失的数据。如果ngboost为您做到这一点,我们将在幕后做出很多选择,而这些选择会被用户所遮盖。
如果我们将自己限制为只使用基础学习者是回归树的情况(就像我们对功能重要性所做的那样),那么对于缺失数据的处理方式有一些合理的默认选择。在这里实施这些策略可能并非难事,但也不是一件容易的事。无论哪种方式,我都希望用户对正在发生的事情有一个透明的选择。我愿意在满足这一要求的同时审查拉动请求,但是我不打算在可预见的将来为自己工作。我现在将关闭,但如果有人想添加此内容,请随时发表评论。
然后您可以看到有关如何解决该问题的其他答案,例如使用sklearn.impute.MissingIndicator模块(向模型指示缺失的存在)或某个Imputer模块。
如果您需要实际示例,可以尝试生存示例(位于repo!)。