当我使用scikit learn's
时,我得到两组不同的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值吗?
答案 0 :(得分: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在这里是被“转换”成p_values的chi2和f_regression的结果,所以它们是100%正常,它们是不同的。