机器学习python实践——由特征选择引发的关于卡方检验的一些个人思考

最近在用python进行机器学习实践,在做到特征选择这一部分时,对于SelectPercentile和SelectKBest方法有些不理解,所以去了查看了帮助文档,但是在帮助文档的例子中出现了"chi2",没接触过,看过去就更懵了,查了一下资料知道"chi2"是在求卡方值,又没接触过,我整个人都裂了,但是还是耐着性子去查了资料,然后这篇文章主要想记录并分享一下关于卡方检验的一些个人思考,如果有误请见谅,欢迎大家一起前来探讨。当然,如果这篇文章还能入得了各位“看官”的法眼,麻烦点赞、关注、收藏,支持一下!

在引言中提到了SelectPercentile和SelectKBest所以先简单的啰嗦讲几句:

两个方法在我看来差不多,只不过一个是通过百分比来指定被选特征数量,一个是通过个数来指定被选特征数量,在帮助文档的例子中应该会看到 SelectKBest(chi2, k=2),这句语句的意思是我们将卡方值作为评分函数,然后选取分高的两个特征

特征选择的帮助文档的链接附上,有需要的小伙伴自取:1.13 特征选择-scikit-learn中文社区

下面我们进入正文,对卡方检验进行讲解:

一、卡方检验是什么?

个人感觉卡方检验主要是为了检验某个自变量/特征X和因变量/标签Y之间是否存在显著关系

二、卡方检验怎么做?

步骤1:先假定特征X与变量Y相互独立,即不存在显著关系

步骤2:根据上面假定算出理论值

步骤3:将理论值和观测值带入到Pearson公式中计算卡方值

步骤4:对计算出来的卡方值进行查表操作,以判断特征X和标签Y之间是否存在显著关系

三、独立样本2x2表格卡方检验计算举例

卡方值基本公式——Pearson公式

其中A代表着实际值或观测值,T表示理论值或期望

步骤1没啥好讲的,就是一个假定,所以直接从步骤2开始,对于如何求解理论值,举个例子,大家感受一下,例子来源百度百科,相关链接大家有需要可以去文末自取。

假定我们要检验性别与化妆是否有关系,所以自变量X的定义域为{X1,X2}={化妆,不化妆},因变量Y的值域为{Y1,Y2}={男,女},我们用一个2x2的表格表示,即如下所示:

PS:表格中的括号外的数据为观测值,括号内的数据为理论值

Y1:男

Y2:女

行总计

X1:化妆

15(55)

95(55)

X2:不化妆

85(45)

5(45)

列总计

表中15表示抽样时,男生化妆的数量,95表示女生化妆的数量,85表示男生不化妆的数量,5表示女生化妆的数量

先给出理论值公式

其中表示X=Xi,Y=Yj的理论值,即第i行j列的理论值;表示第i行总计,表示第j列总计 

将上述表格的数据带入到理论值公式中,就可以得到理论值,如下所示:

将所有的观测值和理论值带入到Pearson公式中,就可以得到卡方值,如下所示:

其中表示X=Xi,Y=Yj的观测值,即第i行j列的观测值

我们对下表进行查询,在下表中k值最大为10.828,而卡方值为129.29,所以我们可以知道卡方值大于10.828的概率是0.1%,也就是说性别与化妆与否不存在显著关系的概率最大仅有0.1%,即性别与化妆显著存在显著关系的概率大于99.9%,所以性别与化妆显著存在显著关系

由此可知,卡方值越大,两个变量之间存在显著关系的概率越大

 看到了上面的卡方值计算,可能大部分小伙伴都会觉得计算很复杂,那有没有简便的速算公式去直接套用呢?我的答案是:!!!下面给出:

对于2x2的表格,即特征数=2,标签数=2的情况,卡方值的速算公式如下:

我们将上面性别与化妆与否是否存在显著关系的数据带入到速算公式中检验一下,看看是否正确

经过速算公式算出的卡方值也是129.29,与Pearson公式结果一致,所以可证速算公式是正确的

四、多独立样本RxC表格卡方检验计算举例

可能很多小伙伴已经发现了,上面的例子是一个很特殊的情况,自变量或者特征的值只有两个,因变量或者标签的值也只有两个,那如果自变量或者因变量的值不止两个该怎么办呢?

两种办法:

1、按照上面给出的Pearson公式,先算出理论值,再把理论值带入到卡方值的公式中计算;

2、采用独立样本RxC表格的速算公式进行计算,具体公式如下所示:

下面给出一个3x2表格卡方检验的例子,如下所示:

无效有效行总计
外用膏药组26(13.805)118(130.195)144
物理疗法组7(19.748)199(186.252)206
药物治疗组18(17.447)164(164.553)182
列总计51481532

 将所有的观测值和理论值带入到Pearson公式中,就可以得到卡方值,如下所示:

 我们再用速算公式计算一下卡方值,如下所示:

惊喜的发现速算公式算出来的结果和Pearson公式一致,所以可证速算公式是正确的 

五、自由度说明

 当然有些小伙伴在看一些相关资料的时候会看到自由度,我这边也简单的提一嘴,自由度的公式非常简单,如下所示:

以本文第一张表格和第三张表格为例,R代表表格中的行数,C代表表格中的列数,对于第一张表格R=C=2,对于第三张表格R=3,C=2

为啥要求自由度?——也是为了查表,只是查的不是本文中的第二张表,而是一张叫做“卡方分布临界值”的表,具体怎么用这个表,有兴趣的小伙伴可以查看下面的视频链接:

【统计科普】七分钟轻松掌握卡方检验 - 卡方拟合度检验、卡方独立性检验_哔哩哔哩_bilibili

六、数值型变量说明

上面的例子中都是一些字符串式的“类型特征”,但是实际生活都是一群数值类型的“连续特征”,那么对于数值类型的“连续特征”该如何处理呢?

其实很简单,只用将数据离散,然后分段即可,并且各段之间互不相交,比如说特征X,他的取值范围是(1,10),然后抽样十次,十次的结果是[1,2,3,4,5,6,7,8,9,4],我们将X分成两段,其中,第一段A1=(1,5],第二段A2=(5,10),然后将抽样结果按照每段的取值范围放入相应的段中即可,即A1:{1,2,3,4,4,5};A2:{6,7,8,9}

七、应用条件

写到这里,有些乏了,不想手敲了,直接从网上截图

解释一下,样本含量对应本文中的n,理论频数对应本文中的

矫正公式的话,大家可以去看一下下面的文章:

卡方检验知识一文汇总 - 简书 (jianshu.com)

参考文章

卡方检验(Chi_square_test): 原理及python实现 - Leo_John - 博客园 (cnblogs.com)

卡方检验_百度百科 (baidu.com)

卡方检验x2什么意思_卡方检验和方差分析-腾讯云开发者社区-腾讯云 (tencent.com)

 卡方检验知识一文汇总 - 简书 (jianshu.com)

【统计科普】七分钟轻松掌握卡方检验 - 卡方拟合度检验、卡方独立性检验_哔哩哔哩_bilibili

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/732437.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MySQL存储管理(一):删数据

从表中删除数据 从表中删除数据,也即是delete过程。 什么是表空间 表空间可以看做是InnoDB存储引擎逻辑结构的最高层,所有的数据都存放在表空间中。默认情况下,InnoDB存储引擎有一个共享表空间idbdata1,即所有数据都存放在这个表…

20.Cargo和Crates.io

标题 一、采用发布配置自定义构建1.1 默认配置1.2 修改配置项 二、将crate发布到Crates.io2.1 编写文档注释2.2 常用(文档注释)部分2.3 文档注释作用测试2.4 为包含注释的项添加文档注释2.5 使用pub use导出公有API2.6 创建Crates.io账号2.7 发布2.8 版本…

基于STM8系列单片机驱动LCD12864液晶程序

1)单片机/ARM硬件设计小知识,分享给将要学习或者正在学习单片机/ARM开发的同学。 2)内容属于原创,若转载,请说明出处。 3)提供相关问题有偿答疑和支持。 LCD12864支持串行和并行的通信传输方式&#xff…

NeRF从入门到放弃3: EmerNeRF

https://github.com/NVlabs/EmerNeRF 该方法是Nvidia提出的,其亮点是不需要额外的2D、3Dbox先验,可以自动解耦动静field。 核心思想: 1. 动、静filed都用hash grid编码,动态filed比静态多了时间t,静态的hash编码输入是…

C语言笔试题:实现把一个无符号整型数字的二进制序列反序后输出

目录 题目 实例 方法一:直接交换 方法二:间接交换 拓展 题目 编写一个函数,将一个无符号整数的所有位逆序(在32位机器下) 实例 例如有一个无符号整数 unsigned int num 32; unsigned int 在32位系统中占4个字…

如何选择优质智慧公厕系统厂家?@光明源

随着智慧城市建设的推进,智慧公厕系统成为提升城市公共服务水平的重要一环。选择一家优质的智慧公厕系统厂家不仅能确保设备的先进性和可靠性,还能提升用户体验和管理效率。以下是选择优质智慧公厕系统厂家的关键要素。 1. 厂家资质和信誉 1.1 资质认证…

VS C++常用错误与解决方法

无法找到 v143 的生成工具(平台工具集 “v143”) 若要使用 v143 生成工具进行生成,请安装 v143 生成工具。或者,可以升级到当前 Visual Studio 工具,方式是通过选择“项目”菜单或右键单击该解决方案,然后选择“重定解决方案目标…

外星人Alienware m18R1 原厂Windows11系统

装后恢复到您开箱的体验界面,包括所有原机所有驱动AWCC、Mydell、office、mcafee等所有预装软件。 最适合您电脑的系统,经厂家手调试最佳状态,性能与功耗直接拉满,体验最原汁原味的系统。 原厂系统下载网址:http://w…

绝对值不等式——AcWing 104. 货仓选址

绝对值不等式 定义 与数学中的绝对值不等式定义一致,即含有绝对值符号的不等式。 运用情况 在一些需要根据数值与特定值的距离关系来进行判断和处理的算法中。用于对数据范围进行约束和界定。 注意事项 确保对绝对值的处理正确,尤其是在复杂的逻辑…

基于chatgpt-on-wechat搭建个人知识库微信群聊机器人

前言 啊,最近在别人微信群里看到一个聊天机器人,感觉挺好玩的。之前GPT刚出来的时候就知道有人把聊天机器人接入到微信或者QQ中来增加互动,但是当时没想那个想法。 很久没关注这块了,发现现在可以使用大模型知识库的方式来打造自…

【面试干货】Hashtable 与 HashMap 的区别

【面试干货】Hashtable 与 HashMap 的区别 1、线程安全性2、对null值的处理3、遍历方式4、遍历示例5、总结 💖The Begin💖点点关注,收藏不迷路💖 在Java中,Hashtable和HashMap都是基于哈希表实现的Map接口。然而&#…

[Django学习]前端+后端两种方式处理图片流数据

方式1:数据库存放图片地址,图片存放在Django项目文件中 1.首先,我们现在models.py文件中定义模型来存放该图片数据,前端传来的数据都会存放在Django项目文件里的images文件夹下 from django.db import modelsclass Image(models.Model):title models.C…

Windows10任务栏卡顿解决方案

一、重新启动任务资源管理器 右键底部任务栏选择“任务管理器”;按快捷键“CtrlShiftEsc”;搜索框搜索“任务管理器”并单击“打开”;“WinX”打开开始菜单附属菜单,在列表中选择“任务管理器” ;按下“ctrlaltdelete”…

24年安克创新社招入职自适应能力cata测评真题分享北森测评高频题库

第一部分:安克创新自适应能力cata测评 感谢您关注安克创新社会招聘,期待与您一起弘扬中国智造之美。 为对您做出全面的评估,现诚邀您参加我们的在线测评。 测评名称:社招-安克创新自适应能力cata测评 第二部分:安克…

容器之笔记本构件演示

代码&#xff1a; #include <gtk-2.0/gtk/gtk.h> #include <glib-2.0/glib.h> #include <gtk-2.0/gdk/gdkkeysyms.h> #include <stdio.h>void rotate_book(GtkButton *button, GtkNotebook *notebook) {gtk_notebook_set_tab_pos(notebook, (notebook…

Linux驱动开发(三)--新字符设备驱动开发 LED驱动开发升级

1、新字符设备驱动原理 使用 register_chrdev 函数注册字符设备的时候只需要给定一个主设备号即可&#xff0c;但是这样会 带来两个问题 需要我们事先确定好哪些主设备号没有使用 会将一个主设备号下的所有次设备号都使用掉&#xff0c;比如现在设置 LED 这个主设备号为200&…

这周,接连两位程序员猝死...

这周接连发生了两起不幸的事。俩位程序员去世的消息&#xff0c;深感悲伤和惋惜。 6月17号下午&#xff0c;一位负责研发的女员工在虾皮研发中心办公室猝死&#xff0c;年仅 30 岁。 官方通告&#xff1a; 同一天&#xff0c;另一位科大讯飞的高级测试工程师在家突发不适离世…

UDS服务——TransferData (0x36)

诊断协议那些事儿 诊断协议那些事儿专栏系列文章,本文介绍TransferData (0x36)—— 数据传输,用于下载/上传数据时用的,数据的传输方向由不同的服务控制:0x34服务表示下载,0x35服务表示上传。通过阅读本文,希望能对你有所帮助。 文章目录 诊断协议那些事儿传输数据服务…

Xshell7免费版下载安装使用

​一、下载安装​ 1.打开官网下载 https://www.xshell.com/zh/free-for-home-school/ 2.选择合适的下载路径&#xff0c;点击下载按钮&#xff0c;然后按照提示完成安装。 二、Xshell7的使用&#xff0c;Xhell连接Linux 1.连接之前&#xff0c;确保在Linux中开启SSH。参考&a…

VBA学习(15):工作表加密保护后却把密码忘记了?

今天把过去的一篇推文重新整理一下&#xff0c;提供两种解除工作表加密的方法。 一种是傻瓜模式的VBA&#xff0c;复制运行以下代码&#xff0c;即可抹除当前工作簿所有工作表的保护加密。 Sub UnProtct()MsgBox "破解提示&#xff1a;当要求输入密码时请点击取消&#…