数据特征分析之 python相关性检验(转载学习)

article/2025/9/27 23:17:26

数据特征分析技能—— 相关性检验
相关性分析是指对两个或多个具备相关性的变量元素进行分析,从而衡量两个变量因素的相关密切程度 
一般常用四种方法: 
- 画图判断 
- pearson(皮尔逊)相关系数 
- sperman(斯皮尔曼)相关系数 
- Cosine similarity (余弦相关系数)

 

 

绘制图形判断

一般对于强相关性的两个变量,画图就能定性判断是否相关

(1)散点图向量分析干系 

#random产生高斯分布
#uniform产生均匀分布data1 = pd.Series(np.random.rand(50)*100).sort_values()
data2 = pd.Series(np.random.rand(50)*50).sort_values()
data3 = pd.Series(np.random.rand(50)*500).sort_values(ascending = False)
# 创建三个数据:data1为0-100的随机数并从小到大排列,data2为0-50的随机数并从小到大排列,data3为0-500的随机数并从大到小排列,fig = plt.figure(figsize = (10,4))
ax1 = fig.add_subplot(1,2,1)
ax1.scatter(data1, data2)
plt.grid()
# 正线性相关ax2 = fig.add_subplot(1,2,2)
ax2.scatter(data1, data3)
plt.grid()
# 负线性相关

(2)散点图矩阵初判多变量间关系

data = pd.DataFrame(np.random.randn(200,4)*100, columns = ['A','B','C','D'])
pd.plotting.scatter_matrix(data,figsize=(8,8),c = 'k',marker = '+',diagonal='hist',alpha = 0.8,range_padding=0.1)
data.head()

è¿éåå¾çæè¿°

pearson(皮尔逊)相关系数

要求样本满足正态分布 
- 两个变量之间的皮尔逊相关系数定义为两个变量之间的协方差和标准差的商,其值介于-1与1之间

 

data1 = pd.Series(np.random.rand(100)*100).sort_values()
data2 = pd.Series(np.random.rand(100)*50).sort_values()
data = pd.DataFrame({'value1':data1.values,'value2':data2.values})
print(data.head())
print('------')
# 创建样本数据u1,u2 = data['value1'].mean(),data['value2'].mean()  # 计算均值
std1,std2 = data['value1'].std(),data['value2'].std()  # 计算标准差
print('value1正态性检验:\n',stats.kstest(data['value1'], 'norm', (u1, std1)))
print('value2正态性检验:\n',stats.kstest(data['value2'], 'norm', (u2, std2)))
print('------')
# 正态性检验 → pvalue >0.05data['(x-u1)*(y-u2)'] = (data['value1'] - u1) * (data['value2'] - u2)
data['(x-u1)**2'] = (data['value1'] - u1)**2
data['(y-u2)**2'] = (data['value2'] - u2)**2
print(data.head())
print('------')
# 制作Pearson相关系数求值表r = data['(x-u1)*(y-u2)'].sum() / (np.sqrt(data['(x-u1)**2'].sum() * data['(y-u2)**2'].sum()))
print('Pearson相关系数为:%.4f' % r)
# 求出r
# |r| > 0.8 → 高度线性相关

结果为

     value1    value2
0  0.438432  0.486913
1  2.974424  0.663775
2  4.497743  1.417196
3  5.490366  2.047252
4  6.216346  3.455314------
value1正态性检验:KstestResult(statistic=0.07534983222255448, pvalue=0.6116837468934935)
value2正态性检验:KstestResult(statistic=0.11048646902786918, pvalue=0.1614817955196972)
------value1    value2  (x-u1)*(y-u2)    (x-u1)**2   (y-u2)**2
0  0.438432  0.486913    1201.352006  2597.621877  555.603052
1  2.974424  0.663775    1133.009967  2345.549928  547.296636
2  4.497743  1.417196    1062.031735  2200.319086  512.612654
3  5.490366  2.047252    1010.628854  2108.181383  484.479509
4  6.216346  3.455314     931.020494  2042.041746  424.476709
------
Pearson相关系数为:0.9937

 pd中包含内置的求解pearson系数方法函数

# Pearson相关系数 - 算法data1 = pd.Series(np.random.rand(100)*100).sort_values()
data2 = pd.Series(np.random.rand(100)*50).sort_values()
data = pd.DataFrame({'value1':data1.values,'value2':data2.values})
print(data.head())
print('------')
# 创建样本数据data.corr()
# pandas相关性方法:data.corr(method='pearson', min_periods=1) → 直接给出数据字段的相关系数矩阵
# method默认pearson

Sperman秩相关系数

皮尔森相关系数主要用于服从正太分布的连续变量,对于不服从正太分布的变量,分类关联性可采用Sperman秩相关系数,也称 等级相关系数

data = pd.DataFrame({'智商':[106,86,100,101,99,103,97,113,112,110],'每周看电视小时数':[7,0,27,50,28,29,20,12,6,17]})
print(data)
print('------')
# 创建样本数据data.sort_values('智商', inplace=True)
data['range1'] = np.arange(1,len(data)+1)
data.sort_values('每周看电视小时数', inplace=True)
data['range2'] = np.arange(1,len(data)+1)
print(data)
print('------')
# “智商”、“每周看电视小时数”重新按照从小到大排序,并设定秩次indexdata['d'] = data['range1'] - data['range2']
data['d2'] = data['d']**2
print(data)
print('------')
# 求出di,di2n = len(data)
rs = 1 - 6 * (data['d2'].sum()) / (n * (n**2 - 1))
print('Sperman秩相关系数为:%.4f' % rs)
# 求出rs

输出结果为: 

    智商  每周看电视小时数
0  106         7
1   86         0
2  100        27
3  101        50
4   99        28
5  103        29
6   97        20
7  113        12
8  112         6
9  110        17
------智商  每周看电视小时数  range1  range2
1   86         0       1       1
8  112         6       9       2
0  106         7       7       3
7  113        12      10       4
9  110        17       8       5
6   97        20       2       6
2  100        27       4       7
4   99        28       3       8
5  103        29       6       9
3  101        50       5      10
------智商  每周看电视小时数  range1  range2  d  d2
1   86         0       1       1  0   0
8  112         6       9       2  7  49
0  106         7       7       3  4  16
7  113        12      10       4  6  36
9  110        17       8       5  3   9
6   97        20       2       6 -4  16
2  100        27       4       7 -3   9
4   99        28       3       8 -5  25
5  103        29       6       9 -3   9
3  101        50       5      10 -5  25
------
Sperman秩相关系数为:-0.1758

pd中包含内置的求解spearman系数方法函数

# spearman相关系数 - 算法data = pd.DataFrame({'智商':[106,86,100,101,99,103,97,113,112,110],'每周看电视小时数':[7,0,27,50,28,29,20,12,6,17]})
print(data)
print('------')
# 创建样本数据data.corr(method='spearman')
# pandas相关性方法:data.corr(method='pearson', min_periods=1) → 直接给出数据字段的相关系数矩阵
# method默认pearson

此处转载自:https://blog.csdn.net/ICERON/article/details/80219603 

余弦待更.....一般余弦计算相似度比较多哈。

 

 

 


http://chatgpt.dhexx.cn/article/Id2Vr580.shtml

相关文章

相关性检验(二维列联表相关 协方差 Pearson相关 Spearman相关 相关性检验 相关可视化)

文章目录 相关二维列联表相关协方差Pearson相关Spearman相关相关性检验相关可视化 相关 二维列联表相关 data <- xtabs(~TreatmentImproved, data Arthritis) ## 生成二维列联表assocstats(data)协方差 states <- state.x77[,1:6] cov(states)Pearson相关 cor(state…

python实现Kendall相关性检验

python实现Kendall相关性检验 肯德尔相关性系数,又称肯德尔秩相关系数,它也是一种秩相关系数,不过它所计算的对象是分类变量。 分类变量可以理解成有类别的变量,可以分为 无序的,比如性别(男、女)、血型(A、B、O、AB); 有序的,比如肥胖等级(重度肥胖,中度肥…

R语言:相关性分析检验

相关性分析 相关性分析的检验衡量指标包括&#xff1a;Pearson相关系数、Spearman相关系数、Kendall相关系数、偏相关系数、多分格相关系数、多系列相关系数 默认使用Pearson相关系数 cor(data) #或者 cor(x,y,method c(“pearson”, “kendall”, “spearman”)) #x,y可以是…

python实现spearman相关性检验

python实现spearman相关性检验 Spearman秩相关系数 对原始变量的分布不做要求,适用范围较Pearson相关系数广,即使是等级资料,也可适用。但其属于非参数方法,检验效能较Pearson系数低。(适合含有等级变量或者全部是等级变量的相关性分析) 测试两个样本是否具有单调关系。…

多元数据的相关性检验——基于R

多元数据的相关性检验 检验方法&#xff1a;1.Pearson相关检验2.Spearman相关检验3.Kendall相关检验 cor.test函数案例分析&#xff1a; 对于多元数据&#xff0c;讨论变量间是否具有相关关系是很重要的&#xff0c;这里介绍三种相关检验—— Pearson相关检验&#xff0c;Spear…

时间序列之间的相关性检测

为了检测时间序列的相关性&#xff0c;我们经常使用自相关&#xff0c;互相关或归一化互相关。 互相关&#xff08;Cross-Correlation&#xff09; 互相关是两个不同时间序列的比较&#xff0c;以检测具有相同最大值和最小值的指标之间是否存在相关性。例如&#xff1a;“两个…

python实现pearson相关性检验

python实现pearson相关性检验 两个变量之间的相关性可以采用Pearson或Spearman相关分析方法进行分析。Pearson相关分析主要用来分析正态分布、非等间距测度的连续变量,而Spearman可用来分析不服从双变量正态分布或总体分布型未知以及原始数据是等级资料的数据。 测试两个样本是…

数据特征分析技能—— 相关性检验

数据特征分析技能—— 相关性检验 相关性分析是指对两个或多个具备相关性的变量元素进行分析&#xff0c;从而衡量两个变量因素的相关密切程度 一般常用四种方法&#xff1a; - 画图判断 - pearson&#xff08;皮尔逊&#xff09;相关系数 - sperman&#xff08;斯皮尔曼&a…

【相关性检验】

两个变量之间的相关性检验 1、皮尔森相关系数&#xff1a;它们之间的协方差cov(X,Y)除以它们各自标准差的乘积(σX, σY)。 要判断两个变量之间是否存在相关性&#xff1a;可以采用画散点图的方式&#xff0c;进行直观性的分析。使用python进行person检验 import pandas as p…

数学建模竞赛知识点汇总(四)——相关性检验

数学建模竞赛知识点汇总&#xff08;四&#xff09;——相关性检验 文章目录 数学建模竞赛知识点汇总&#xff08;四&#xff09;——相关性检验简介皮尔逊相关系数总体person相关系数样本person相关系数皮尔逊相关系数假设检验前提步骤流程 斯皮尔曼相关系数皮尔逊相关系数与斯…

scanf函数使用方法详解

scanf函数使用方法详解 一.scanf函数是什么&#xff1f;二.scanf函数的作用三.注意事项1.输入数据2.%c 四.字段宽度五.scanf函数的返回值 一.scanf函数是什么&#xff1f; 1.首先我们需要知道&#xff0c;scanf函数是一种格式化输入函数&#xff08;按照格式字符串的格式&…

scanf与scanf_s函数的使用 详解

1.scanf_s(是vs提供的函数&#xff09; a.代码1 int main() {char a 0;//scanf_s("%c", &a, 1);scanf_s("%c", &a, sizeof(a));return 0; } scanf_s有三个参数&#xff0c;最后一个是变量a所占据空间的大小&#xff08;单位为字节&#xff09;&…

【opencv4】opencv视频教程 C++(opencv教程)1、opencv介绍和环境搭建

下一讲&#xff1a;【opencv4】opencv视频教程 C&#xff08;opencv教程&#xff09;2、加载&#xff0c;修改&#xff0c;保存图像 [opencv_C] 入门强推&#xff01;&#xff01;&#xff01;【B站最全】 文章目录 opencv介绍和环境搭建opencv组成架构核心模块环境搭建&#…

Opencv的使用教程,opencv比较全的基础教程

*免责声明: 1\此方法仅提供参考 2\搬了其他博主的操作方法,以贴上路径. 3* 场景一:Opencv对图像视频的基本使用 场景二:Opencv对图像视频进一步处理 场景三:Opencv对图像视频高级处理 . . . 课程视频 课程视频2 ubuntu18下采用源码编译的方式安裝opencv / 简单方式安装 …

VC2015搭建OpenCV环境(超详细教程)

1、首先下载OpenCV源码库 ① https://sourceforge.net/projects/opencvlibrary/?sourcetyp_redirect ②双击运行.exe文件&#xff0c;导出源代码 2、windows环境变量设置&#xff08;测试环境是win7 64位&#xff09; ①找到系统高级设置path 右键计算机--》属性--》高级系…

OpenMV IDE安装使用教程

一、什么是OpenMV OpenMV是一个开源&#xff0c;低成本&#xff0c;功能强大的机器视觉模块。以STM32F427CPU为核心&#xff0c;集成了OV7725摄像头芯片&#xff0c;在小巧的硬件模块上&#xff0c;用C语言高效地实现了核心机器视觉算法&#xff0c;提供Python编程接口。使用者…

OpenMV使用技巧

目录 一、光照影响1. 光照过强2. 光照过弱 二、杂框影响1. threshold参数2. 长宽比 三、画图 一、光照影响 OpenMV在使用过程中可能会遇到光照太强或者光照太弱等影响图像识别的情况&#xff0c;尤其在跑神经网络模型时&#xff0c;光照太强或太弱对识别结果的影响是致命的。 …

VC++6.0配置opencv1.0教程(全网最详细)附加图文

VC6.0配置opencv1.0教程&#xff08;全网最详细&#xff09;附加图文 &#xff08;&#xff08;很多评论我没时间看&#xff0c;tiquma写出来了&#xff0c;有兴趣的同学自己找一找8&#xff09; 配置前 第一次写博客&#xff0c;激动٩(๑>◡<๑)۶&#xff0c;坐标武…

C/C++ vs2017 OpenCV简单入门

离职之际&#xff0c;自学一下图像相关的知识点&#xff0c;只是简单学了一点皮毛&#xff01; 目录 一、 OpenCV环境搭建 二、使用opencv 常用接口说明 使用案例 1. 图像色彩空间转换 2. Mat对象的创建与赋值 3. 图像像素的读写操作 4. 图像像素的算术操作 5. 滚动条…

VS2017搭建OpenCV环境(新手详细教程)

整体流程如下&#xff1a; 下载Visual Studio2017版本下载OpenCV3.4.1版本配置环境变量在Visual Studio2017中引入头文件、库文件、链接库环境测试 说明&#xff1a;没有必要根据博主的博客下载与博客相应的版本&#xff0c;不同版本之间只需要改一点点东西即可 1、下载安装V…