当我使用 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 值吗?
最佳答案
SelectKBest 将根据您输入的测试:Fischer 或 Chi2,按重要性选择前 i 个变量。
F_regression 用于回归,而 chi2 用于分类,因此将它们与相同的输入变量一起使用是很奇怪的。你应该退后一步,研究一下你真正想做的事情。 一切都在这里得到了很好的解释:http://scikit-learn.org/stable/modules/feature_selection.html
f_regression p_value 将计算每个回归量与目标之间的线性依赖性。
chi2 测试“测量随机变量之间的依赖性,因此使用此函数“淘汰”最有可能独立于类别并因此与分类无关的特征。” X 必须包含非负特征,例如 bool 值或频率。
您打印的 p_values 是 chi2 和 f_regression “转换”为 p_values 的结果,因此它们不同是 100% 正常的。
关于scikit-learn - Scikit Learn feature_selection 给出不同的 p 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40749638/