通过案例学习pandas计算相关系数

pandas计算相关系数

在数据分析和统计学中,相关系数是一种用于衡量两个变量之间关系强度的统计指标。它可以帮助我们了解两个变量之间的线性关系强度和方向。

Pandas是一个强大的Python库,提供了许多用于数据分析和处理的功能。在本文中,我们将介绍如何使用Pandas计算相关系数以及其原理。

导入pandas和数据

首先,我们需要导入Pandas库,用来分析我们的数据。
假设我们有一个包含5个变量XY的数据集,我们可以使用sklearn.datasetsmake_regression函数生成我们需要的数据。

以下是获取数据的示例代码:

import pandas as pd# 用sklearn制作一些数据
from sklearn.datasets import make_regressionX, y = make_regression(n_samples=100, n_features=5, noise=1, random_state=42)df = pd.DataFrame(data=X,columns=list("abcde"))
df["y"] = y

在这里插入图片描述

计算相关系数

接下来,我们可以使用Pandascorr函数计算相关系数。corr函数可以计算多个变量之间的相关系数,返回一个相关系数矩阵。

以下是计算相关系数的示例代码:

# 计算相关系数
corr = df.corr()

图2

相关系数矩阵是一个对称矩阵,其中每个元素表示两个变量之间的相关系数。对角线上的元素始终为1,因为每个变量与自身的相关系数为1。

相关系数矩阵美化

相关系数矩阵计算完成后,我们可以知道各个变量之间的强弱关系。但是由于数据太多,让人眼花缭乱的看不清楚。我们可以用pandas的表格美化工具,将相关系数低于-0.2和高于0.2的数据标红。

以下是表格数据标红的示例代码:

def highlight_max(s, props=''):return np.where((s >= 0.2)|(s<=-0.2), props, '')corr2.style.apply(highlight_max, props='color:white;background-color:red', axis=0)

图3

热力图可视化

我们还可以使用seabornheatmap函数可视化相关系数矩阵。heatmap函数可以根据相关系数的大小,将相关系数矩阵绘制为热力图。以下是绘制热力图的示例代码:

import warnings
warnings.filterwarnings("ignore")
from pylab import mpl 
import matplotlib.pyplot as plt
import seaborn as sns
# 防止中文显示为方格
mpl.rcParams['font.sans-serif']=['SimHei']f , ax = plt.subplots(figsize = (7, 7))
plt.title('Correlation of Numeric Features with Price',y=1,size=16)
sns.heatmap(corr2,square = True, annot=True, vmax=1,cmap='coolwarm')
plt.show()

图4

在上述代码中,我们使用seaborn库的heatmap函数绘制热力图,并使用matplotlib库的plt.show()函数显示图形。通过设置annot参数为True,可以在热力图上显示相关系数的值。通过设置cmap参数为coolwarm,可以将相关系数的值映射为不同的颜色。

通过以上步骤,我们可以使用Pandas轻松计算相关系数并可视化相关系数矩阵。这对于分析两个变量之间的关系非常有用,并可以帮助我们了解数据集的特征。

1. 相关系数的定义

相关系数是一个介于-1和1之间的值,表示两个变量之间的关联程度。相关系数为正表示两个变量呈正相关关系,即当一个变量增加时,另一个变量也增加;相关系数为负表示两个变量呈负相关关系,即当一个变量增加时,另一个变量减少;相关系数接近于0表示两个变量之间没有线性关系。

2. 相关系数的计算方法

常用的相关系数有皮尔逊相关系数和斯皮尔曼相关系数。

2.1 皮尔逊相关系数

皮尔逊相关系数是用来衡量两个连续变量之间线性关系强度的统计量。它的计算公式如下:

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 ˉ \bar{X} Xˉ Y ˉ \bar{Y} Yˉ分别表示两个变量的均值。

2.2 斯皮尔曼相关系数

斯皮尔曼相关系数是用来衡量两个变量之间的单调关系强度的统计量。它的计算公式如下:

ρ = 1 − 6 ∑ d i 2 n ( n 2 − 1 ) \rho = 1 - \frac{{6\sum{d_i^2}}}{{n(n^2-1)}} ρ=1n(n21)6di2

其中, d i d_i di表示两个变量的秩次差, n n n表示样本数量。

3. 相关系数的解释

相关系数的取值范围为-1到1,可以根据取值范围来解释两个变量之间的关系强度和方向。当相关系数接近于1时,表示两个变量之间存在强正相关关系;当相关系数接近于-1时,表示两个变量之间存在强负相关关系;当相关系数接近于0时,表示两个变量之间没有线性关系。

需要注意的是,相关系数只能衡量线性关系,不能衡量非线性关系。此外,相关系数只能衡量两个变量之间的关系,不能确定因果关系。

4. 相关系数的应用

相关系数在统计学和数据分析中有广泛的应用。它可以帮助我们了解变量之间的关系,从而进行预测和决策。

在金融领域,相关系数可以用来衡量不同股票之间的关联程度,从而进行投资组合的优化。

在医学研究中,相关系数可以用来衡量药物剂量与疗效之间的关系,从而确定最佳的治疗方案。

在市场营销中,相关系数可以用来衡量广告投入与销售额之间的关系,从而确定最有效的营销策略。

结论

相关系数是衡量两个变量之间关联程度的重要统计量。通过pandas计算相关系数,我们可以了解两个变量之间的线性关系强度和方向。相关系数的应用广泛,可以帮助我们进行预测和决策。然而,需要注意的是,相关系数只能衡量线性关系,不能确定因果关系。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

利用POM完成脚本分离实现企业级自动化(POM设计模式+页面的框架封装+测试报告截图)

利用POM完成脚本分离实现企业级自动化&#xff08;POM设计模式页面的框架封装测试报告截图&#xff09; 项目-测试-手工测试 项目-测试-手工测试 1.了解需求&#xff1b; 2.编写测试用例&#xff08;开始&#xff09;——功能测试组会去做的事情 3.执行测试用例——发送测试报…

【ES5和ES6】数组遍历的各种方法集合

一、ES5的方法 1.for循环 let arr [1, 2, 3] for (let i 0; i < arr.length; i) {console.log(arr[i]) } // 1 // 2 // 32.forEach() 特点&#xff1a; 没有返回值&#xff0c;只是针对每个元素调用func三个参数&#xff1a;item, index, arr &#xff1b;当前项&#…

Android 9.0 Vold挂载流程解析(上)

前言 我们分2篇文章来介绍Android 9.0中存储卡的挂载流程&#xff0c;本篇文章先介绍总体的挂载模块、Vold进程的入口main函数的详细分析&#xff0c;有了这些基础知识&#xff0c;下一篇中我们再详细介绍收到驱动层消息是怎么挂载和卸载存储卡的&#xff0c;还有framework层如…

vue实现穿梭框,ctrl多选,shift多选

效果图 代码 <template><div class"container"><!--左侧--><div><div class"title">{{ titles[0] }}</div><div class"layerContainer"><div v-for"item in leftLayerArray":key"…

实验三 nfs 服务器环境搭建

nfs 服务器环境搭建 nfs&#xff08;Network File System&#xff09;即网络文件系统&#xff0c;其基于UDP/IP 使用nfs能够在不同计算机之间通过网络进行文件共享&#xff0c;能使使用 者访问网络上其它计算机中的文件就像在访问自己的计算机一样。 【实验目的】 掌握 nfs 环…

Redis专题-秒杀

Redis专题-并发/秒杀 开局一张图&#xff0c;内容全靠“编”。 昨天晚上在群友里看到有人在讨论库存并发的问题&#xff0c;看到这里我就决定写一篇关于redis秒杀的文章。 1、理论部分 我们看看一般我们库存是怎么出问题的 其实redis提供了两种解决方案&#xff1a;加锁和原子操…

空洞卷积学习笔记

文章目录 1. 扩张卷积的提出2. 理解的难点 本片博客的主题思路来自于这篇文章——如何理解Dilated Convolutions(空洞卷积)&#xff0c;但是作者似乎是很久之前写的&#xff0c;文字的排版很混乱&#xff0c;自己来写一个新的。 1. 扩张卷积的提出 Multi-Scale Context Aggre…

JavaWeb_LeadNews_Day6-Kafka

JavaWeb_LeadNews_Day6-Kafka Kafka概述安装配置kafka入门kafka高可用方案kafka详解生产者同步异步发送消息生产者参数配置消费者同步异步提交偏移量 SpringBoot集成kafka 自媒体文章上下架实现思路具体实现 来源Gitee Kafka 概述 对比 选择 介绍 producer: 发布消息的对象称…

计算机视觉之三维重建(一)(摄像机几何)

针孔摄像机 添加屏障&#xff1a; 使用针孔(o光圈针孔摄像机中心)&#xff0c;实现现实与成像一对一映射&#xff0c;减少模糊。其中针孔与像平面的距离为f(焦距)&#xff1b;虚拟像平面位于针孔与真实物体之间&#xff0c;与像平面互为倒立关系。位置映射&#xff1a;利用相似…

【王道-进程与线程】

#pic_center R 1 R_1 R1​ R 2 R^2 R2 目录 知识框架No.0 引言No.1 进程的概念、组成、特征一、进程的概念二、进程的组成1、PCB进程控制块2、程序段/数据段 三、程序是如何运行的&#xff1f;四、进程的特征五、总结 No.2 进程的状态转换和组织一、进程的状态1、创建态、就绪态…

听GPT 讲Prometheus源代码--discovery

Prometheus是一个开源的系统监控和警报工具包&#xff0c;以下是Prometheus源代码中一些主要的文件夹及其作用&#xff1a; cmd/&#xff1a;这个目录包含了Prometheus主要的命令行工具&#xff0c;如prometheus/&#xff0c;promtool/等。每个子目录都代表一个可执行的命令行应…

常见前端基础面试题(HTML,CSS,JS)(三)

JS 中如何进行数据类型的转换&#xff1f; 类型转换可以分为两种&#xff0c;隐性转换和显性转换 显性转换 主要分为三大类&#xff1a;数值类型、字符串类型、布尔类型 三大类的原始类型值的转换规则我就不一一列举了 数值类型&#xff08;引用类型转换&#xff09; Numbe…

我和 TiDB 的故事 | 远近高低各不同

作者&#xff1a; ShawnYan 原文来源&#xff1a; https://tidb.net/blog/b41a02e6 Hi, TiDB, Again! 书接上回&#xff0c; 《我和 TiDB 的故事 | 横看成岭侧成峰》 &#xff0c;一年时光如白驹过隙&#xff0c;这一年我好似在 TiDB 上投入的时间总量不是很多&#xff0…

回归预测 | MATLAB实现CSO-SVM布谷鸟优化算法优化支持向量机多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现CSO-SVM布谷鸟优化算法优化支持向量机多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | MATLAB实现CSO-SVM布谷鸟优化算法优化支持向量机多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09;效果一…

redis 存储结构原理 2

咱们接着上一部分来进行分享&#xff0c;我们可以在如下地址下载 redis 的源码&#xff1a; https://redis.io/download 此处我下载的是 redis-6.2.5 版本的&#xff0c;xdm 可以直接下载上图中的 **redis-6.2.6 **版本&#xff0c; redis 中 hash 表的数据结构 redis hash …

RFID技术助力汽车零配件装配产线,提升效率与准确性

随着科技的不断发展&#xff0c;越来越多的自动化设备被应用到汽车零配件装配产线中。其中&#xff0c;射频识别&#xff08;Radio Frequency Identification&#xff0c;简称RFID&#xff09;技术凭借其独特的优势&#xff0c;已经成为了这一领域的重要技术之一。本文将介绍RF…

redis乐观锁+启用事务解决超卖

乐观锁用于监视库存&#xff08;watch&#xff09;&#xff0c;然后接下来就启用事务。 启用事务&#xff0c;将减库存、下单这两个步骤&#xff0c;放到一个事务当中即可解决秒杀问题、防止超卖。 但是&#xff01;&#xff01;&#xff01;乐观锁&#xff0c;会带来" …

C++运算符重载

C运算符重载 C运算符重载&#xff1a;使对象的运算表现得和编译器内置类型一样。 C实现复数类实现运算符重载 C类对象操作符重载函数函数时&#xff0c;会优先调用类的成员方法&#xff0c;没有找到再去全局去寻找对应的方法。 在调用某些操作符重载函数时&#xff0c;如果…

创建密码库/创建用户帐户/更新 Ansible 库的密钥/ 配置cron作业

目录 创建密码库 创建用户帐户 更新 Ansible 库的密钥 配置cron作业 创建密码库 按照下方所述&#xff0c;创建一个 Ansible 库来存储用户密码&#xff1a; 库名称为 /home/curtis/ansible/locker.yml 库中含有两个变量&#xff0c;名称如下&#xff1a; pw_developer&#…

YOLOv5、YOLOv8改进:S2注意力机制

目录 1.简介 2.YOLOv5改进 2.1增加以下S2-MLPv2.yaml文件 2.2common.py配置 2.3yolo.py配置 1.简介 S2-MLPv2注意力机制 最近&#xff0c;出现了基于 MLP 的视觉主干。与 CNN 和视觉Transformer相比&#xff0c;基于 MLP 的视觉架构具有较少的归纳偏差&#xff0c;在图像识…