我试图从许多连续特征中预测二元(分类)目标,并希望在进入模型拟合之前缩小特征空间 . 我注意到SKLearn的Feature Selection包中的SelectKBest类在Iris数据集上有以下示例(它还预测来自连续特征的二进制目标):
from sklearn.datasets import load_iris
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2
iris = load_iris()
X, y = iris.data, iris.target
X.shape
(150, 4)
X_new = SelectKBest(chi2, k=2).fit_transform(X, y)
X_new.shape
(150,2)
该示例使用chi2测试来确定应在模型中使用哪些功能 . 然而,据我所知,chi2测试严格意味着在我们具有预测分类性能的分类特征的情况下使用 . 我不认为chi2测试可以用于这样的场景 . 我的理解错了吗?是否可以使用chi2检验来检验分类变量是否依赖于连续变量?
1 回答
具有chi2测试的SelectKBest功能仅适用于分类数据 . 实际上,如果该特征仅具有1和0,则测试的结果仅具有实际意义 .
如果你稍微检查一下chi2的实现,你会发现代码只在每个特征上应用了一个和,这意味着该函数只需要二进制值 . 此外,接收chi2函数的参数表示以下内容:
这意味着函数期望接收包含所有样本的特征向量 . 但是稍后当计算出预期值时,您会看到:
如果X和Y向量只有1和0,那么这些代码行才有意义 .