SKLearn 算法比处理原生 NaN 值

问题描述 投票:0回答:1

我有一个很大的数据集,其中有很多缺失值。我在这里看到了处理原生 NaN 值的 SKLearn 算法列表:https://scikit-learn.org/stable/modules/impute.html#estimators-that-handle-nan-values

此列表包括 RandomForestClassifier

但是,当我尝试使用这个大数据集在 SKLearn 中运行 RF 模型时,我收到以下错误消息:

ValueError: Input X contains NaN. RandomForestClassifier does not accept missing values encoded as NaN natively. For supervised learning, you might want to consider sklearn.ensemble.HistGradientBoostingClassifier and Regressor which accept missing values encoded as NaNs natively. Alternatively, it is possible to preprocess the data, for instance by using an imputer transformer in a pipeline or drop samples with missing values. See https://scikit-learn.org/stable/modules/impute.html You can find a list of all estimators that handle NaN values at the following page: https://scikit-learn.org/stable/modules/impute.html#estimators-that-handle-nan-values

有人对这个问题有深入的了解吗?也许 SKLearn 还没有更新其处理 NaN 值的算法列表?谢谢!

现在,我将尝试此列表中的一种或多种其他算法,从 HistGradientBoostingClassifier 开始。

scikit-learn random-forest missing-data
1个回答
0
投票

ValueError:输入 X 包含 NaN。 RandomForestClassifier 不接受原生编码为 NaN 的缺失值。

“经典”SkLearn 树模型中的缺失值支持是最近才添加的。

对于

DecisionTreeClassifier
,它从 SkLearn 1.3(.0) 起可用。对于
RandomForestClassifier
,它从 SkLearn 1.4(.0) 开始可用。请参阅发行说明了解更多详细信息。

检查您的 SkLearn 版本 (

print(sklearn.__version__)
),如果低于
1.4.0
,请升级您的安装。

© www.soinside.com 2019 - 2024. All rights reserved.