Sklearn 卡方检验

6 篇文章 0 订阅
1 篇文章 0 订阅

见知乎

小白记录贴,侵删~感恩!

使用sklearn官方接口代码如下

  1. 首先import包和实验数据:
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2
from sklearn.datasets import load_iris
 
iris = load_iris()

2. 使用卡方检验来选择特征

model1 = SelectKBest(chi2, k=2)#选择k个最佳特征
model1.fit_transform(iris.data, iris.target)#iris.data是特征数据,iris.target是标签数据,该函数可以选择出k个特征 

3. 查看p-values和scores

model1.scores_  #得分  单个特征的卡方统计量值 得分越高,特征越重要
model1.pvalues_  #p-values  越小,置信度越高,特征越重要

至此,可以实现如何使用sklearn 的SelectKBest 利用chi2方法提取最优特征。但,对于不了解卡方检验的人可能不知道输出值到底是什么,此处建议阅读博客sklearn.feature_selection chi2基于卡方,特征筛选详解,文中详细阐述了sklearn的实现,并且简单明了的解释了卡方检验。

经典卡方检验-独立样本四格表:

重要代码如下:

# 计算观测值 结果为y里面每个类别的计数
observed = safe_sparse_dot(Y.T, X)          # n_classes * n_features
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)

但是截止到现在,文中只是阐述了离散型变量的卡方检验,但是对于上面给出的代码,我们对于连续型变量还是不理解。翻开sklearn的代码 我们可以看到第一步首先要验证X是否是sparse matrix,但是对于我们的输入,其实并不是离散变量呀。无法计算自由度,无法对照卡方检验表得到概率,自由度计算可简单对照这个帖子:自由度如何理解 - SPSS论坛 - 经管之家(原人大经济论坛)

不过一般情况下,还是不要用卡方检验进行连续性变量分析,可参考下图:

ps: 如果用SPSS软件分析,可以对两个变量进行相关性分析,参考贴如下:

https://jingyan.baidu.com/artic

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值