You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中RFECV.fit()不接受X、y参数报TypeError如何解决?

问题原因及解决方案

1 直接报错的核心原因

初始化RFECV时,cv参数传入的是StratifiedKFold类本身,而非该类的实例化对象,sklearn无法识别未实例化的类作为交叉验证拆分器,因此触发了你遇到的类型错误。

2 其余逻辑错误说明

你当前的任务属于回归预测(因变量Tenure是连续数值,前期也用了ols线性回归模型),但后续选择的工具全部适配分类任务,存在逻辑错配:

  • SVC是支持向量分类器,无法用于回归任务
  • StratifiedKFold是分类任务专用的分层交叉验证工具,要求标签为离散分类值,不支持连续的回归标签
  • scoring="accuracy"是分类任务的准确率指标,完全不适用于回归场景

3 修正后的代码

替换为回归任务适配的工具即可正常运行:

# 引入回归模型、回归适用的KFold、回归评估指标
from sklearn.svm import SVR
from sklearn.model_selection import KFold
from sklearn.feature_selection import RFECV

# 实例化KFold交叉验证拆分器,替换SVC为支持向量回归SVR,替换评估指标为回归适用的r2
svr = SVR(kernel="linear")
rfecv = RFECV(estimator = svr, step = 1, cv = KFold(n_splits=5, shuffle=True, random_state=0), scoring = "r2")
# 用squeeze()把单列二维DataFrame转为一维Series,适配sklearn的fit要求
rfecv.fit(X_train_df, y_train_df.squeeze())

4 额外优化建议

  • 你之前构建了包含StandardScaler的管道,但RFECV训练时没有用到标准化逻辑,建议把标准化和回归模型整合到同一个Pipeline里再传入RFECV的estimator,避免数据泄露
  • 如果要和前期的线性回归模型逻辑对齐,也可以直接用sklearn.linear_model.LinearRegression作为RFECV的estimator,特征选择结果和ols模型的适配性更高。

内容的提问来源于stack exchange,提问作者Yehudis Bensinger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 23:36:03