gpt4 book ai didi

python - 使用 chi2 测试进行具有连续特征的特征选择 (Scikit Learn)

转载 作者:太空宇宙 更新时间:2023-11-03 14:45:26 25 4
gpt4 key购买 nike

我正在尝试从许多连续特征中预测二元(分类)目标,并希望在进入模型拟合之前缩小特征空间。我注意到 SKLearn 的特征选择包中的 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 检验来检验分类变量是否依赖于连续变量吗?

最佳答案

带有 chi2 检验的 SelectKBest 函数仅适用于分类数据。事实上,只有当特征只有 1 和 0 时,测试的结果才有意义。

如果你稍微检查一下 chi2 的实现您会看到代码只对每个特征应用总和,这意味着该函数只需要二进制值。另外,接收chi2函数的参数表示如下:

def chi2(X, y):
...

X : {array-like, sparse matrix}, shape = (n_samples, n_features_in)
Sample vectors.
y : array-like, shape = (n_samples,)
Target vector (class labels).

这意味着该函数期望接收带有所有样本的特征向量。但稍后在计算预期值时,您会看到:

feature_count = X.sum(axis=0).reshape(1, -1)
class_prob = Y.mean(axis=0).reshape(1, -1)
expected = np.dot(class_prob.T, feature_count)

只有当 X 和 Y 向量只有 1 和 0 时,这些代码行才有意义。

关于python - 使用 chi2 测试进行具有连续特征的特征选择 (Scikit Learn),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49847493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com