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

使用sklearn做逻辑回归时调用accuracy_score报样本数不一致错误如何解决

错误原因

该报错和train_test_split按50%比例拆分样本无关,18151是奇数,拆分后训练集9075条、测试集9076条属于正常逻辑。
报错的核心原因是你计算准确率时传入的两组数据样本量不匹配:

  • 传入accuracy_score的第一个参数是y2_test,对应测试集标签,共9076条
  • 第二个参数是select.estimator_.predict(X2_train),是训练集特征的预测结果,共9075条
    两组数据数量不一致,自然触发样本量校验报错。

修复方案

根据你要计算的准确率类型,统一传入同一数据集的特征和标签即可:

方案1:计算训练集准确率

将标签替换为训练集对应的y2_train:

print("训练集准确率 {0:2%}".format(accuracy_score(y2_train, select.estimator_.predict(X2_train))))

方案2:计算测试集准确率(更推荐,用于评估模型泛化能力)

将预测用的特征替换为测试集对应的X2_test:

print("测试集准确率 {0:2%}".format(accuracy_score(y2_test, select.estimator_.predict(X2_test))))

额外优化建议

  • 定义y2时不需要用reshape(-1,1)转为二维数组,scikit-learn分类器的标签参数默认接收一维数组,二维格式可能触发额外警告,可直接写为y2=df["diab_inc"].values。
  • 若你使用SelectFromModel的目的是筛选重要特征,建议用select.transform(X2_train)提取筛选后的特征重新训练模型,当前直接调用estimator_得到的是全量特征训练的结果,和特征选择的目标不符。

内容的提问来源于stack exchange,提问作者Víctor de la O Pascual

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 20:36:04