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

为何Yellowbrick的RFECV可视化器得出的最优特征数超训练集特征数?

问题解决:RFECV可视化显示最优特征数大于实际特征数

问题分析

你用yellowbrick.model_selection.RFECV做特征选择时,训练集明明只有48个特征,但可视化结果却显示最优特征数为49,这是Yellowbrick的RFECV可视化组件的显示刻度bug——它的x轴刻度会比实际可选择的特征数多1,真实的最优特征数需要通过代码属性获取,而非仅看可视化图表。

解决步骤

  • 确认真实最优特征数:在fit之后,直接调用visualizer_xgb.n_features_,这个属性返回的是经过交叉验证选出的真实最优特征数量,不会受可视化显示影响。
    print("真实最优特征数:", visualizer_xgb.n_features_)
    
  • 验证训练集特征数:先确认训练集的特征数量确实是48,避免数据本身的问题:
    print("训练集特征数:", X_train.shape[1])
    
  • 手动绘制可视化结果(可选):如果需要准确的可视化,可基于RFECV的交叉验证得分自行绘制,避开Yellowbrick的显示问题:
    import matplotlib.pyplot as plt
    
    # 获取不同特征数对应的交叉验证得分
    scores = visualizer_xgb.cv_scores_
    # 特征数范围是1到48
    n_features_range = range(1, X_train.shape[1]+1)
    
    plt.plot(n_features_range, scores)
    plt.xlabel("保留的特征数")
    plt.ylabel("ROC-AUC得分")
    plt.title("RFECV特征选择结果")
    plt.show()
    
  • 调整step参数(可选):当前设置step=3,每次迭代移除3个特征,若担心迭代逻辑影响,可将step设为1(虽然会增加运行时间,但结果更精细):
    visualizer_xgb = RFECV(xgboost_base_model, step=1, cv=3, scoring='roc_auc')
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 03:10:38