从 sklearn chi2 获取错误的 ch2 值

数据挖掘 机器学习 统计数据 特征选择
2022-02-23 06:32:42

我有一个看起来像这样的特征向量表-

在此处输入图像描述

这是一个包含 156 列或特征的表。我想在应用我的分类模型之前应用特征选择算法。

这就是我正在使用的 -

dataset = pd.read_csv('.csv')
X = dataset.iloc[:, 1:157].values
y = dataset.iloc[:,0].values

##normalize

scaler = MinMaxScaler()
scaler.fit(X)
MinMaxScaler(copy=True, feature_range=(0, 1))

X_normalized = scaler.transform(X)


##feature selection

sel = SelectKBest(chi2, k='all')


sel.fit_transform(X_normalized, y)

print(sel.scores_)

这是print(sel.scores_)我得到的结果-

在此处输入图像描述

可以看出,它们并不都在 0 和 1 之间。

我将这篇研究论文作为我的来源-

在此处输入图像描述

在此处输入图像描述

来源- http://courses.ischool.berkeley.edu/i256/f06/papers/yang97comparative.pdf

1个回答

我不知道您说卡方值应该在0和之间的消息来源是什么1想象一下,在图片中的那个等式中,两个术语总是同时出现,意思是t没有在其中的文档数)和在其中但没有的文档数)。这意味着 snap 中的方程减少到cD(t|~c)=0ctD(c|~t)=0ct

χ2(t,c)=N(AD)2/A2D2=N.

编辑1:

阅读您的评论后,我了解到您对“标准化”部分感到困惑。归一化值并不总是意味着 和 之间的缩放01Normalised value确实意味着一个为比较而适当缩放的值,在我看来,分母给出了可比较的效果您将此情况关联到的归一化类型是特征缩放检查归一化