卡方检验是一种确定两个分类变量之间是否存在显着相关性的统计方法。 这两个变量应该来自相同的人口,他们应该是类似 - 是/否,男/女,红/绿等。
例如,我们可以建立一个观察人们的冰淇淋购买模式的数据集,并尝试将一个人的性别与他们喜欢的冰淇淋的味道相关联。 如果发现相关性,我们可以通过了解访问的人的性别的数量来计划适当的味道库存。
python版:
sklearn 测试如下(检验测试集中自变量对因变量的相关性==>特征选取):
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2
from sklearn.datasets import load_iris
#导入IRIS数据集
iris = load_iris()
# print(iris.data)#查看数据
#选择k个最佳特征
model1 = SelectKBest(chi2, k=2)
#iris.data是特征数据,iris.target是标签数据,该函数可以选择出k个特征
print(model1.fit_transform(iris.data, iris.target))
#得分
print(model1.scores_)
# 查看训练集特征
print(iris.data)
[[5.1 3.5 1.4 0.2]
[4.9 3. 1.4 0.2]
[4.7 3.2 1.3 0.2]
[4.6 3.1 1.5 0.2]
[5. 3.6 1.4 0.2]
[5.4 3.9 1.7 0.4]
[4.6 3.4 1.4 0.3]
# 查看训练集因变量标签
print(iris.target)
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
2 2]
结果:
runfile('D:/Workspace/spyder/test/check_kf.py', wdir='D:/Workspace/spyder/test')
[[1.4 0.2]
[1.4 0.2]
[1.3 0.2]
[1.5 0.2]
[1.4 0.2]
[1.7 0.4]
[1.4 0.3]
[1.5 0.2]
[1.4 0.2]
查看各个特征分数:
print(model1.scores_)
[ 10.81782088 3.59449902 116.16984746 67.24482759]
model1.pvalues_
Out[13]: array([4.47651499e-03, 1.65754167e-01, 5.94344354e-26, 2.50017968e-15])
得出最后两个特征对于结果的相关性影响分数比较高