You need to enable JavaScript to run this app. 直接调用mutual_info_classif与SelectKBest得分差异原因分析
优惠活动
大模型
产品
解决方案
定价
更多

直接调用mutual_info_classif与SelectKBest得分差异原因分析

得分差异的核心原理

两次结果差异完全来自输入数据集的样本量不同,与SelectKBest框架、函数参数无关:

  • 直接调用mutual_info_classif时,输入为全量5个样本的特征与标签
  • 调用SelectKBest.fit前你执行了train_test_split,默认test_size=0.2会拆分出4个训练样本、1个测试样本,fit方法仅在4个训练样本上计算得分

注:两次计算的特征排序完全一致,仅得分数值不同,不会影响Top-K特征的筛选结果。若你将f_selector.fit(X, y)传入全量数据,且参数完全一致,得到的得分会和直接调用mutual_info_classif完全相同。
mutual_info_classif采用基于k近邻的Kraskov估计器,样本量越少估计偏差越大,因此4个训练样本上的估计值(0.83)与5个全量样本上的估计值(0.48)存在明显差异。


高维特征选择的选型建议
  • 严格避免数据泄露:特征选择只能使用训练集数据,绝对不能用包含测试集的全量数据计算得分。你当前拆分训练集后再用SelectKBest的流程符合规范,若用全量数据计算,测试集信息会被提前纳入建模,最终泛化能力评估会严重失真。
  • 高维场景前置减耗:60000个特征计算互信息开销较大,可先通过方差过滤移除所有样本取值完全一致的无效特征,再计算互信息,能大幅降低计算量。
  • 显式指定参数提升效率:若特征全部为连续型,显式设置discrete_features=False;若全部为离散型,设置discrete_features=True,比auto的自动类型判断效率更高。
  • 固定random_state参数,保证特征选择结果可复现,避免实验波动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.15 14:54:01