机器学习——特征工程之数据相关性_特征工程相关性分析_macan_dct的博客-程序员秘密

技术标签: 机器学习  特征工程  数据相关性  

前言

在样本属性很多的数据集中,一定会存在一些与标签关系不那么强的属性,将这些属性drop掉,可以提高模型的准确性。如何评价两样本之间的相关性?个人总结了四种方法:画图、协方差、相关系数、信息熵(重点说明相关系数中的皮尔逊相关系数)。

图表相关性

图是最直观的数据表达方式,但也是最不精确的一种方法,因为基于图只能看到大概趋势,并没有像相关系数这样精准的值。
在这里插入图片描述
上图就说明了这两个样本具有一定的相关性。
(数据有噪声点,不过不影响原理)
而下面的图说明这两个数据的相关性不是那么强:
在这里插入图片描述当然也可以使用直方图等其他表现形式。

协方差和协方差矩阵

公式:
在这里插入图片描述协方差用来衡量两个变量的总体误差:

  • 如果协方差为正,则说明两个变量的变化趋势一致,两个变量正相关
  • 如果协方差为负,则说明两个变量的变化趋势相反,两个变量负相关
  • 如果协方差等于0,则说明两个变量相互独立,两个变量不相关。
    协方差只能对两组数据进行相关性分析,当有两组以上数据时,就需要使用协方差矩阵。下面是三组数据x,y,z的协方差矩阵计算公式:
    在这里插入图片描述n组数据,其协方差矩阵大小为n*n。

代码实现

   #未进行使用说明
    import numpy as np
    np.cov(x)	#这里面的x可以是多组样本数据

相关系数

协方差只能说明数据间是否有相关以及是哪种相关方式(正相关,负相关),而无法说明其密切程度,所以当样本数据很多时,无法说明哪些样本相关性最高,而相关系数可以解决这一问题。

1、皮尔逊相关系数( Pearson correlation coefficient)

定义:
在这里插入图片描述
其中rxy表示样本相关系数,由于是样本协方差和样本标准差,因此分母使用的是n-1
Sxy表示样本协方差:
在这里插入图片描述
Sx表示X的样本标准差:
在这里插入图片描述
Sy表示y的样本标准差,:
在这里插入图片描述
关于rxy的使用:

  • rxy的值域在-1和1之间;
  • |rxy|越接近于1,说明数据相关性越强;
  • 与协方差相同,若rxy>0,则是正相关;rxy<0,则负相关。

代码实现:

#未进行使用说明
############第一种方法###########
 import pandas  as pd
 x = pd.DataFrame(a)
 x.corr() #默认值时计算的时皮尔逊相关系数

############第二种方法###########
import numpy as np
co = np.corrcoef(x, y)

############第三种方法###########
from scipy.stats import pearsonr
pccs = pearsonr(x, y)

from scipy.stats import pearsonr
import numpy as np
import pandas as pd

co_use_pandas = pd.DataFrame(pd.concat([LotArea,salePrice],axis =1,ignore_index = True)).corr()
co_use_numpy = np.corrcoef(LotArea,salePrice)
co_use_scipy = pearsonr(LotArea,salePrice)

print("pandas库中的皮尔逊系数:",co_use_pandas)
print("numpy库中的皮尔逊系数:",co_use_numpy)
print("sccipy库中的皮尔逊系数:",co_use_scipy)

打印结果如下:

pandas库中的皮尔逊系数:         
  0         1
0  1.000000  0.263843
1  0.263843  1.000000
numpy库中的皮尔逊系数:
 [[1.         0.26384335]
 [0.26384335 1.        ]]
sccipy库中的皮尔逊系数:
 (0.2638433538714056, 1.1231391549187896e-24)

2、斯皮尔曼相关性系数、秩相关系数(spearman correlation coefficient)

适用范围较Pearson相关系数广,经常被称为非参数相关系数,不是衡量线性相关的,而是衡量秩序的相关性的。

设有两组序列X和Y
			
其秩序为R(X)和R(Y),(这里R(Xi)=k代表Xi是序列X中的第k大(或第k小))

则SROCC(X, Y) = PLCC(R(X), R(Y)),其中PLCC是Pearson线性相关系数。
SROCC被认为是最好的非线性相关指标,这是因为,SROCC只与序列中元素的排序有关。
因此即使X或Y被任何单调非线性变换作用(如对数变换、指数变换),都不会对SROCC造成任何影响,因为不会影响元素的排序。
也可以称秩相关系数为单调性相关,也就是只要在X和Y具有单调的函数关系的关系,那么X和Y就是完全Spearman相关的,这与Pearson相关性不同,后者只有在变量之间具有线性关系时才是完全相关的,其次,斯皮尔曼不需要先验知识(也就是说,知道其参数)便可以准确获取XandY的采样概率分布。

上面的看不懂耶无所谓,只需要知道该系数的使用场景比皮尔逊广,其值规律也与皮尔逊系数相同。
代码实现:

x = pd.DataFrame(a)
x.corr("spearman")

3、Kendall Rank(肯德尔等级)相关系数

此处不谈详细数学公式,只给出使用例子和实现代码:
举个例子:比如评委对选手的评分(优、中、差等),我们想看两个(或者多个)评委对几位选手的评价标准是否一致;或者医院的尿糖化验报告,想检验各个医院对尿糖的化验结果是否一致,这时候就可以使用肯德尔相关性系数进行衡量。
代码实现:

x = pd.DataFrame(a)
x.corr("kendall")

信息熵和互信息

上面介绍的方法都针对数值型数据,对文本数据需要使用信息熵和互信息。
定义:度量文本特征值之间的相关关系的方法就是互信息。
(理论详情:https://blog.csdn.net/BigData_Mining/article/details/81279612)
或者说当值不连续时候,此时无论是一元统计回归还是相关系数都有些不合适,此时利用互信息,通过这种方法我们可以发现哪一类特征与最终的结果关系密切
代码示例:

#计算互信息
from sklearn import metrics as mr  
mr.mutual_info_score(data['Class'],data['V1'])#计算‘Class’和V1之间的一个互信息,如果互信息越高,说明V1对最终分类的状态影响越大
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42211626/article/details/100099799

智能推荐

ESP8266的网页web交互界面_esp8266 网页_苏哲学长的博客-程序员秘密

ESP8266的网页web交互界面和一些esp8266编程的技巧

全面综述:图像特征提取与匹配技术_小白学视觉的博客-程序员秘密

点击上方“小白学视觉”,选择加&#34;星标&#34;或“置顶”重磅干货,第一时间送达本文转自|视觉算法特征提取和匹配是许多计算机视觉应用中的一个重要任务,广泛运用在运动结构、图像检...

分布式存储简介_沐阳zz的博客-程序员秘密

一、概述分布式文件系统是分布式领域的一个基础应用,其中最著名的毫无疑问是 HDFS/GFS 。如今该领域已经趋向于成熟,但了解它的设计要点和思想,对我们将来面临类似场景/问题时,具有借鉴意义。并且,分布式文件系统并非只有 HDFS/GFS 这一种形态,在它之外,还有其他形态各异、各有千秋的产品形态,对它们的了解,也对扩展我们的视野有所俾益。分布式存储 GlusterFS 介绍与部署本文试图分析和思考,在分布式文件系统领域,我们要解决哪些问题、有些什么样的方案、以及各自的选择依据。二、过去的样

Hbase 2.0 OpenTSDB 部署异常_mihaidong的博客-程序员秘密

由于更新了最新的Hbase为2.0,在其基础上部署OpenTSDB会导致异常:Exception in thread &quot;main&quot; java.lang.RuntimeException: Initialization failed    at net.opentsdb.tools.TSDMain.main(TSDMain.java:237)Caused by: com.stumbleupo...

计算机二级试题计算教授学时数,2014年3月计算机二级Office高级应用真题及答案..._时机-稍纵即逝的博客-程序员秘密

Excel操作计算机基础室2012年度课时费统计表序号 年度 系 教研室 姓名 职称 课时标准 学时数 课时费1 2012 计算机系 计算机基础室 陈国庆 教授 1208 2012 计算机系 计算机基础室 陈清河 讲师 803 2012 计算机系 计算机基础室 崔咏絮 副教授 1004 2012 计算机系 计算机基础室 龚自飞 副教授 10019 2012 计算机系 计算机基础室 蒋山农 助教 6...

R语言dplyr包获取dataframe分组聚合汇总统计值实战(group_by() and summarize() ):均值、中位数、分位数、IQR、MAD、count、unique_summarize 中位数_Data+Science+Insight的博客-程序员秘密

R语言dplyr包获取dataframe分组聚合汇总统计值实战(group_by() and summarize() ):均值、中位数、分位数、IQR、MAD、count、unique目录R语言dplyr包获取dataframe分组聚合汇总统计值实战(group_by() and summarize() ):均值、中位数、分位数、IQR、MAD、count、unique#导入包和数据#dplyr包获取dataframe分组聚合汇总统计值语法#dplyr包获取dataframe分组聚合

随便推点

Spring 项目 web.xml 出错问题解决方案_web.xml报错,却找不到原因_小草mlc的博客-程序员秘密

web.xml会莫名其妙的报错下面这种错误:Multiple annotations found at this line: - Attribute "xmlns:xsi" must be declared for element type "web-app". - Attribute "xsi:schemaLocation" must be declared for element ty

国务院颁发信息安全条例,国密SM2算法势在必行_财经科技社的博客-程序员秘密

国务院日前颁发《关键信息基础设施安全保护条例》(以下简称《条例》),条例内容自2021年9月1日起施行。当前,关键信息基础设施面临的安全形势严峻,网络攻击威胁事件频发。党中央、国务院高度重视关键信息基础设施安全保护工作。关键信息基础设施是经济社会运行的神经中枢,是网络安全的重中之重。制定出台《条例》,建立专门保护制度,明确各方责任,提出保障促进措施,有利于进一步健全关键信息基础设施安全保护法律制度体系。为保障重要经济系统密码应用安全,也为从根本上摆脱对国外密码技术和产品的过度依赖,国产密码SM2算法已.

jenkins与git结合,自动部署_jenkins gitsha_histjxg1224的博客-程序员秘密

一、jenkins是一个持续集成和持续部署的一个工具:二、原理如下图所示:jenkin是一个从git拉代码,并且自动build,拷贝到指定的服务器上,并且部署。的一款工具一配置一个新项目如果要是jenkins从远程拉代码,需要配置ssh key现在你的本地电脑安装git ,运行git hashssh-keygen -t rsa -C &quot;your_account&quot;可以是你的邮箱,执行完之后,会生成一...

苹果内购买笔记_weixin_30802273的博客-程序员秘密

苹果内购买包括4种类型:1.消耗性; 2.非消耗性;3.自动续订订阅;4.非续订订阅.首先需要有一个itunesconnect上协议、税务和银行业务模块中有银行卡绑定同时遵守了各种苹果协议的开发帐号;(具体如何申请填写网上百度一堆)然后代码前记得添加协议&lt;SKPaymentTransactionObserver,SKProductsRequestDelegate,SKReque...

使用 pdb 进行调试_傻呆的博客-程序员秘密

原文章 https://www.ibm.com/developerworks/cn/linux/l-cn-pythondebugger/使用 pdb 进行调试pdb 是 python 自带的一个包,为 python 程序提供了一种交互的源代码调试功能,主要特性包括设置断点、单步调试、进入函数调试、查看当前代码、查看栈片段、动态改变变量的值等。pdb 提供了一些常用的调试命令,详

推荐文章

热门文章

相关标签