scikit-learn使用RFE时报__init__()参数数量错误如何解决
问题原因
该报错由scikit-learn版本迭代后RFE类的传参规则变更导致:
- 早期版本的
sklearn.feature_selection.RFE构造函数支持将n_features_to_select作为第二个位置参数传入 - 0.22及以上版本中,RFE构造函数仅保留
estimator为唯一位置参数,其余参数必须通过关键字形式传递,你写的RFE(logreg, 20)相当于传入了3个位置参数(隐含的self、logreg、20),与当前版本的构造函数参数规则冲突,因此触发TypeError。
解决方案
优先选择改代码适配新版本规则,无需降级依赖,将原第7行代码:
rfe = RFE(logreg, 20)
修改为指定关键字参数即可:
rfe = RFE(logreg, n_features_to_select=20)
可选补充说明
如果运行后续拟合代码时出现LogisticRegression收敛警告,可在初始化逻辑回归时指定更大的迭代次数:
logreg = LogisticRegression(max_iter=1000)
内容的提问来源于stack exchange,提问作者Vadim
相关产品推荐
相关产品推荐

