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

scikit-learn中RFECV的cv_results属性排序规则咨询

关于RFECV的cv_results_排序逻辑说明

首先明确:rfecv.cv_results_里的结果是按特征数升序排列的,也就是你看到的先14、再19、24…最后154的顺序,这和递归消除的执行顺序完全相反。

核心原因

递归消除的实际执行流程是从全量特征(154个)开始,每次删除5个特征,直到特征数接近min_features_to_select(你设置的是10,最后停在14是因为14-5=9<10,触发终止条件)。但sklearn在整理cv_results_时,会把所有测试过的特征子集按特征数量从小到大排序,而非执行时的从多到少顺序。

行号与特征数的对应关系

  • DataFrame第1行:对应特征数最少的子集(14个)
  • DataFrame最后1行:对应全量特征子集(154个)

验证方式

你可以直接提取cv_results_中的n_features字段确认顺序,代码如下:

import pandas as pd

df_cv = pd.DataFrame(rfecv.cv_results_)
# 打印特征数的排列顺序
print(df_cv['n_features'].tolist())

输出结果会是[14,19,24,...,149,154],和mean_test_score的顺序完全匹配。

调整顺序的方法

如果需要按照递归执行的顺序(从多到少)查看结果,只需对DataFrame按n_features降序排序:

df_cv_sorted = df_cv.sort_values(by='n_features', ascending=False)

内容的提问来源于stack exchange,提问作者Arturo Sbr

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 19:05:56