获得与 sklearn 函数不同的卡方值

数据挖掘 机器学习 统计数据 特征选择
2022-03-17 06:29:37

我有一个看起来像这样的数据集-

在此处输入图像描述

我正在尝试使用 chi2 作为其上的特征选择算法。这是代码

dataset = pd.read_csv('small_dataset.csv')
print(dataset.shape)


X = dataset.iloc[:, 1:106].values
y = dataset.iloc[:,0].values


print(sklearn.feature_selection.chi2(X, y))

我试图验证 sklearn 的答案和公式

在此处输入图像描述

在此处输入图像描述

所以我采用了第一个特征并计算了 ABCD,它们是 0 19 73 73,N 是 146。所以 X2 值是 21,但在 sklearn 中它是 579。

我究竟做错了什么?

1个回答

我在使用 Scipy 的chi2_contingency时遇到了类似的问题事实证明,Scipy 函数默认使用correction=True,而您显示的统计数据未使用更正。也许 sklearn 也chi2使用了更正,这就是你没有得到相同结果的原因。我建议尝试将 Scipy 的校正设置为 true 和 false,看看它是否与这两个结果匹配。