Pearson 相关系数的可视化辅助判断和怎么用

Pearson 相关系数的可视化辅助判断和怎么用

flyfish

Pearson 相关系数 是一种用于衡量两个连续型变量之间线性相关程度的统计量。其定义为两个变量协方差与标准差的乘积的比值。公式如下: r = ∑ ( x i − x ˉ ) ( y i − y ˉ ) ∑ ( x i − x ˉ ) 2 ∑ ( y i − y ˉ ) 2 r = \frac{\sum (x_i - \bar{x})(y_i - \bar{y})}{\sqrt{\sum (x_i - \bar{x})^2 \sum (y_i - \bar{y})^2}} r=(xixˉ)2(yiyˉ)2 (xixˉ)(yiyˉ)
其中:

  • x i x_i xi y i y_i yi 分别是变量 X 和 Y 的观测值。

  • x ˉ \bar{x} xˉ y ˉ \bar{y} yˉ 分别是 X 和 Y 的均值。

取值范围为 [-1, 1]:

  • 1 表示完全正相关。

  • -1 表示完全负相关。

  • 0 表示无线性相关。
    在这里插入图片描述

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# 生成样本数据
np.random.seed(0)
x = np.random.randn(100)
y1 = 2 * x + np.random.randn(100)  # 正相关
y2 = -2 * x + np.random.randn(100) # 负相关

data = pd.DataFrame({'x': x, 'y1': y1, 'y2': y2})

# 绘图
plt.figure(figsize=(12, 6))

# 正相关
plt.subplot(1, 2, 1)
sns.regplot(x='x', y='y1', data=data, scatter_kws={'color': 'blue'}, line_kws={'color': 'red'})
plt.title('Positive Correlation')

# 负相关
plt.subplot(1, 2, 2)
sns.regplot(x='x', y='y2', data=data, scatter_kws={'color': 'blue'}, line_kws={'color': 'red'})
plt.title('Negative Correlation')

plt.show()

在零均值化处理之后,Pearson 相关系数的计算公式与 Cosine 相似度的计算公式本质上变得相同

可视化辅助判断相关性

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.metrics.pairwise import cosine_similarity

# 生成样本数据
np.random.seed(0)
x = np.random.randn(100)
y1 = 2 * x + np.random.randn(100)  # 正相关
y2 = -2 * x + np.random.randn(100) # 负相关
y = 0.5 * x**2 + np.random.randn(100)  # 非线性相关

data = pd.DataFrame({'x': x, 'y1': y1, 'y2': y2, 'y': y})

# 绘图
plt.figure(figsize=(18, 6))

# 正相关
plt.subplot(1, 3, 1)
sns.regplot(x='x', y='y1', data=data, scatter_kws={'color': 'blue'}, line_kws={'color': 'red'})
plt.title('Positive Correlation')

# 负相关
plt.subplot(1, 3, 2)
sns.regplot(x='x', y='y2', data=data, scatter_kws={'color': 'blue'}, line_kws={'color': 'red'})
plt.title('Negative Correlation')

# 非线性相关
plt.subplot(1, 3, 3)
sns.scatterplot(x='x', y='y', data=data, color='blue')
plt.title('Nonlinear Correlation')

plt.show()

# 热图(Heatmap)
corr_matrix = data.corr()
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm', vmin=-1, vmax=1)
plt.title('Correlation Matrix Heatmap')
plt.show()

# 散点图矩阵(Pair Plot)
sns.pairplot(data)
plt.show()

# 计算 Pearson 相关系数与 Cosine 相似度
x_mean = x - np.mean(x)
y_mean = y1 - np.mean(y1)
pearson_corr = np.corrcoef(x, y1)[0, 1]
cosine_sim = cosine_similarity([x_mean], [y_mean])[0, 0]

print(f'Pearson 相关系数: {pearson_corr}')
print(f'Cosine 相似度: {cosine_sim}')

Pearson 相关系数与Cosine 相似度 的比较

Pearson 相关系数

Pearson 相关系数衡量的是两个变量之间的线性相关性,具体公式为:
r = ∑ ( x i − x ˉ ) ( y i − y ˉ ) ∑ ( x i − x ˉ ) 2 ∑ ( y i − y ˉ ) 2 r = \frac{\sum (x_i - \bar{x})(y_i - \bar{y})}{\sqrt{\sum (x_i - \bar{x})^2 \sum (y_i - \bar{y})^2}} r=(xixˉ)2(yiyˉ)2 (xixˉ)(yiyˉ)其中, x i x_i xi y i y_i yi 是变量 X X X Y Y Y 的观测值, x ˉ \bar{x} xˉ y ˉ \bar{y} yˉ 分别是 X X X Y Y Y 的均值。
Pearson 相关系数的取值范围是 [-1, 1]:

  • 1 表示完全正相关。

  • -1 表示完全负相关。

  • 0 表示没有线性相关性。

Cosine 相似度

Cosine 相似度主要用于衡量两个向量在向量空间中的方向相似度,公式为:
Cosine Similarity = ∑ x i y i ∑ x i 2 ∑ y i 2 \text{Cosine Similarity} = \frac{\sum x_i y_i}{\sqrt{\sum x_i^2 \sum y_i^2}} Cosine Similarity=xi2yi2 xiyi
取值范围是 [0, 1]:

  • 1 表示两个向量完全同向。

  • 0 表示两个向量完全不相关。

当向量经过零均值化处理后,对两个变量 X X X Y Y Y 进行零均值化处理(即将它们的均值减去),那么 Pearson 相关系数和 Cosine 相似度是相等的。

import numpy as np
from sklearn.metrics.pairwise import cosine_similarity

# 生成样本数据
np.random.seed(0)
x = np.random.randn(100)
y = 2 * x + np.random.randn(100)

# 0 均值化
x_mean = x - np.mean(x)
y_mean = y - np.mean(y)

# 计算 Pearson 相关系数
pearson_corr = np.corrcoef(x, y)[0, 1]

# 计算 Cosine 相似度
cosine_sim = cosine_similarity([x_mean], [y_mean])[0, 0]

print(f'Pearson 相关系数: {pearson_corr}')
print(f'Cosine 相似度: {cosine_sim}')
Pearson 相关系数: 0.9006752160894267
Cosine 相似度: 0.9006752160894267

Pearson 相关系数的使用条件

  1. 线性关系:
    Pearson 相关系数适用于度量两个变量之间的线性关系。如果变量之间的关系是非线性的,Pearson 相关系数可能无法准确反映它们的相关性。

  2. 连续变量:
    适用于连续型变量。对于分类变量或离散型变量,应该使用其他相关性度量方法,如 Spearman 相关系数或 Kendall 相关系数。

  3. 正态分布:
    变量应该大致符合正态分布。如果变量显著偏离正态分布,可以考虑进行数据变换(如对数变换)或使用非参数方法(如 Spearman 相关系数)。

  4. 独立性:
    变量应该是独立的。相关系数度量的是两个变量之间的关系,而不是因果关系。因此,两个变量的独立性是一个基本假设。

  5. 方差不为零:
    变量的方差不应该为零。如果一个变量的方差为零,那么所有观测值都是相同的,无法计算相关性。

Pearson 相关系数的使用注意事项

  1. 敏感性:
    Pearson 相关系数对异常值非常敏感。少量的异常值可能会显著影响相关系数的值,因此在计算相关系数之前,应处理异常值(如删除或平滑处理)。

  2. 线性相关性:
    Pearson 相关系数只能度量线性相关性。如果两个变量之间存在复杂的非线性关系,Pearson 相关系数可能无法准确反映它们的相关性。应结合散点图等可视化手段来判断是否存在线性关系。

  3. 范围限制:
    Pearson 相关系数的取值范围在 [-1, 1] 之间。绝对值接近 1 表示强线性相关性,接近 0 表示弱线性相关性。然而,接近 0 的相关系数并不一定意味着变量之间没有关系,可能存在非线性关系。

  4. 数据清洗:
    在计算相关系数之前,需对数据进行清洗,包括处理缺失值、异常值和确保数据满足正态分布等条件。

  5. 样本大小:
    Pearson 相关系数的可靠性依赖于样本大小。较小的样本可能导致不稳定的相关系数,因此需要足够大的样本量以获得可靠的估计。

  6. 因果关系:
    Pearson 相关系数只能反映变量之间的相关性,不能推断因果关系。即使两个变量之间存在高相关性,也不能直接说明一个变量导致了另一个变量的变化。

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

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

相关文章

328. 奇偶链表

https://leetcode.cn/problems/odd-even-linked-list/https://leetcode.cn/problems/odd-even-linked-list/ 解题思路: 把第一个和第二个节点分别作为奇数、偶数的头节点,当遇到奇节点,删除,并插入到奇数头节点后,这样…

【普中】基于51单片机的矩阵电子密码锁LCD1602液晶显示 proteus仿真+程序+设计报告+讲解视频

【普中】基于51单片机的矩阵电子密码锁LCD1602液晶显示设计 1.主要功能:讲解视频:2.仿真3. 程序代码4. 设计报告5. 设计资料内容清单&&下载链接资料下载链接: 【普中】基于51单片机的矩阵电子密码锁LCD1602液晶显示设计 ( proteus仿真…

如何切换手机的ip地址

在数字时代的浪潮中,智能手机已成为我们日常生活中不可或缺的一部分。然而,随着网络安全问题的日益凸显,保护个人隐私和数据安全变得尤为重要。其中,IP地址作为网络身份的重要标识,其安全性与隐私性备受关注。本文将详…

使用 Hugging Face 的 Transformers 库加载预训练模型遇到的问题

题意: Size mismatch for embed_out.weight: copying a param with shape torch.Size([0]) from checkpoint - Huggingface PyTorch 这个错误信息 "Size mismatch for embed_out.weight: copying a param with shape torch.Size([0]) from checkpoint - Hugg…

[高频 SQL 50 题(基础版)]第一千七百五十七题,可回收且低脂产品

题目: 表:Products ---------------------- | Column Name | Type | ---------------------- | product_id | int | | low_fats | enum | | recyclable | enum | ---------------------- product_id 是该表的主键(具有唯…

解决树形表格 第一列中文字没有对齐

二级分类与一级分类的文字没有对齐 <el-table:data"templateStore.hangyeList"style"width: 100%"row-key"id":tree-props"{ children: subData, hasChildren: hasChildren }" ><el-table-column prop"industryCode&quo…

Kettle常用参数配置

目录 一、时区二、时间戳三、tinyint类型转换 一、时区 Kettle链接mysql出现报错&#xff1a;Connection failed. Verify all connection parameters and confirm that the appropriate driver is installed. The server time zone value is unrecognized or represents more…

无人机之穿越机注意事项篇

一、检查设备 每次飞行前都要仔细检查穿越机的每个部件&#xff0c;确保所有功能正常&#xff0c;特别是电池和电机。 二、遵守法律 了解并遵循你所在地区关于无人机的飞行规定&#xff0c;避免非法飞行。 三、评估环境 在飞行前检查周围环境&#xff0c;确保没有障碍物和…

[激光原理与应用-102]:南京科耐激光-激光焊接-焊中检测-智能制程监测系统IPM介绍 - 6 - 激光焊接系统的组成

目录 一、激光焊接系统的组成概述 1.1、核心部件 1.2、焊接执行部件 1.3、辅助系统 1.4、控制系统 1.5、其他辅助设备 二、激光器 2.1 按出光类型分 1. 脉冲激光器 2. 连续激光器 3. 准连续激光器&#xff08;QCW&#xff09; 4. 其他常见激光器 5. 应用领域 2.2…

HTTP入门

目录 1. 原理介绍 2. HTTP协议简介 2.1简介 ​编辑 2.2基本工作原理 2.3HTTP三个要点 3. chrome浏览器和开发者工具 4. HTTP的消息结构 4.1主要流程和概念 4.2请求和响应例子 5. 完整的网页请求过程 6. 请求 6.1 请求行 6.2请求方法 6.3请求参数 GET请求的参数…

【问题记录】Windows中Node的express无法直接识别

问题描述 在使用express_generator的时候windows平台中出现无法识别express命令的问题&#xff0c;另外就算添加了全局环境变量也没用。 问题解决 查看官方文档发现在node版本8之前的时候使用的是express&#xff0c;但是之后的版本使用npx&#xff0c;这个工具的出现主要想…

头歌资源库(23)资源分配

一、 问题描述 某工业生产部门根据国家计划的安排&#xff0c;拟将某种高效率的5台机器&#xff0c;分配给所属的3个工厂A,B,C&#xff0c;各工厂在获得这种机器后&#xff0c;可以为国家盈利的情况如表1所示。问&#xff1a;这5台机器如何分配给各工厂&#xff0c;才能使国家盈…

Flutter 开启混淆打包apk,并反编译apk确认源码是否被混淆

第一步&#xff1a;开启混淆并打包apk flutter build apk --obfuscate --split-debug-info./out/android/app.android-arm64.symbols 第二步&#xff1a;从dex2jar download | SourceForge.net 官网下载dex2jar 下载完终端进入该文件夹&#xff0c;然后运行以下命令就会在该…

C语言程序题(一)

一.三个整数从大到小输出 首先做这个题目需要知道理清排序的思路&#xff0c;通过比较三个整数的值&#xff0c;使之从大到小输出。解这道题有很多方法我就总结了两种方法&#xff1a;一是通过中间变量比较和交换&#xff0c;二是可以用冒泡排序法&#xff08;虽然三个数字排序…

Go语言入门之基础语法

Go语言入门之基础语法 1.简单语法概述 行分隔符&#xff1a; 一行代表一个语句结束&#xff0c;无需写分号。将多个语句写在一行可以用分号分隔&#xff0c;但是不推荐 注释&#xff1a; // 或者/* */ 标识符&#xff1a; 用来命名变量、类型等程序实体。 支持大小写字母、数字…

【区块链+跨境服务】湾区金融科技人才链 | FISCO BCOS应用案例

湾区金融科技人才链于 2020 年 8 月正式发布&#xff0c;是全国首创的金融科技人才创新举措&#xff0c;对推动金融科技人才机制和认证标准建立&#xff0c;促进金融科技人才要素自由流通&#xff0c;推进产业 链、技术链、人才链深度融合具有重大意义。以深港澳金 融科技师专才…

部署前端项目

常见部署方式有&#xff1a;静态托管服务、服务器部署 1. 静态托管服务 使用平台部署代码&#xff0c;比如 GitHub。 | 创建一个仓库&#xff0c;仓库名一般是 yourGithubName.github.io。 | 将打包后的静态文件文件上传到仓库。 | 在“Settings”&#xff08;选项&#xff0…

Effective C++笔记之二十一:One Definition Rule(ODR)

ODR细节有点复杂&#xff0c;跨越各种情况。基本内容如下&#xff1a; ●普通&#xff08;非模板&#xff09;的noninline函数和成员函数、noninline全局变量、静态数据成员在整个程序中都应当只定义一次。 ●class类型&#xff08;包括structs和unions&#xff09;、模板&…

leetcode--验证二叉搜索树

leetcode地址&#xff1a;验证二叉搜索树 给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下&#xff1a; 节点的左 子树 只包含 小于 当前节点的数。 节点的右子树只包含 大于 当前节点的数。 所有左子树和右子树自身必…

基于与STM32的加湿器之雾化片驱动

基于与STM32的加湿器之雾化片驱动 加湿器是一种由电力驱动&#xff0c;用于增加环境湿度的家用电器。加湿器通过特定的方式&#xff08;如蒸发、超声波振动或加热&#xff09;将水转化为水蒸气&#xff0c;并将这些水蒸气释放到空气中&#xff0c;从而增加空气中的湿度。主要功…