这些 F 分数是啥意思?使用 SelectKBest 功能
Posted
技术标签:
【中文标题】这些 F 分数是啥意思?使用 SelectKBest 功能【英文标题】:What do these F scores mean ? Using SelectKBest feature这些 F 分数是什么意思?使用 SelectKBest 功能 【发布时间】:2018-08-19 05:16:53 【问题描述】:我是统计新手。我正在尝试选择最佳特征来对我的数据集进行分类,我选择通过运行 scikitlearn 中的 SelectKbest 来实现。
这是我的代码:
import sklearn.feature_selection as fs
kb = fs.SelectKBest(k=10)
kb.fit(X, y)
names = X.columns.values[kb.get_support()]
scores = kb.scores_[kb.get_support()]
names_scores = list(zip(names, scores))
ns_df = pd.DataFrame(data = names_scores, columns=
['Feat_names','F_Scores'])
ns_df_sorted = ns_df.sort_values(['F_Scores','Feat_names'], ascending =
[False, True])
print(ns_df_sorted)
这给出了这样的输出
Feat_names F_Scores
4 go_out 29.870218
8 fun1_2 27.374212
6 fun1_1 26.470766
3 date 25.035227
7 shar1_1 17.629153
2 imprace 11.331197
0 order 11.290014
5 sinc1_1 8.309805
9 shar1_2 5.009775
1 field_cd 4.515538
我不确定这里的 F 分数意味着什么以及我可以从中解释什么。
【问题讨论】:
这些是方差分析 f 分数。见here 和here。 【参考方案1】:您可以将 F 分数理解为衡量每个特征对您的数据集的信息量的衡量标准。
正如the method documentation 中所述,执行 F 检验来评估每个功能。 F 分数是F-test 的检验统计量,它们基本上代表了解释方差与未解释方差之间的比率。
因此,在您的示例中,在使用特征选择方法后,您可以选择所有 k=10
信息最多的特征,或者您可以使用分数来优化您的选择(例如,仅选择 F 分数为高于某个阈值)。
【讨论】:
以上是关于这些 F 分数是啥意思?使用 SelectKBest 功能的主要内容,如果未能解决你的问题,请参考以下文章