【问题标题】:Scikit Learn feature_selection giving different p-valuesScikit Learn feature_selection 给出不同的 p 值
【发布时间】:2016-11-22 18:58:19
【问题描述】:

当我使用 scikit learn 时,我得到了两组不同的 p 值

predKbest= SelectKBest(sklearn.feature_selection.f_regression, k=i).fit(X_train, y_train)

predKbest.pvalues_

predKbest= SelectKBest(sklearn.feature_selection.chi2, k=i).fit(X_train, y_train)    
predKbest.pvalues_

在相同的数据 X_train 和 y_train 上。它们应该是不同的p值吗?

【问题讨论】:

  • Chi2 进行 Chi2 测试,而 f_regression 是 fischer 测试。它们注定是不同的。
  • @MohamedALANI 我知道。我的问题是,如果在同一个函数 SelectKBest 中计算这两个选项的 pvalues 不同?
  • 我明白了,我没有很好地阅读您的问题,对此感到抱歉。我相信它们的计算方式相同。在您选择两个不同的特征后,您的变量数量是否相同?
  • @MohamedALANI,是的,它们是完全相同的数据。可能他们有不同的假设。但是,到目前为止,与这些功能相关的文档对我来说似乎还不清楚。

标签: scikit-learn feature-selection p-value


【解决方案1】:

SelectKBest 将根据您输入的测试按重要性选择前 i 个变量:Fischer 或 Chi2。

F_regression 用于回归,而 chi2 用于分类,所以很奇怪将它们都用于相同的输入变量。你应该退后一步,研究你真正想做的事情。 一切都在这里得到很好的解释:http://scikit-learn.org/stable/modules/feature_selection.html

f_regression p_value 将计算每个回归器和目标之间的线性依赖关系。

chi2 测试“测量随机变量之间的相关性,因此使用此函数“剔除”最有可能与类别无关且因此与分类无关的特征。” X 必须包含非负特征,例如布尔值或频率。

您打印的 p_values 是 chi2 和 f_regression 的结果,它们“转换”为 p_values,因此它们不同是 100% 正常的。

【讨论】:

    猜你喜欢
    • 2019-07-20
    • 2021-02-15
    • 2017-04-25
    • 2017-12-19
    • 2013-10-30
    • 2016-07-30
    • 1970-01-01
    • 1970-01-01
    • 2015-03-11
    相关资源
    最近更新 更多