当前位置: 首页 > news >正文

在Python中创建相关系数矩阵的6种方法

相关系数矩阵(Correlation matrix)是数据分析的基本工具。它们让我们了解不同的变量是如何相互关联的。在Python中,有很多个方法可以计算相关系数矩阵,今天我们来对这些方法进行一个总结

Pandas

Pandas的DataFrame对象可以使用corr方法直接创建相关矩阵。由于数据科学领域的大多数人都在使用Pandas来获取数据,因此这通常是检查数据相关性的最快、最简单的方法之一。

 import pandas as pdimport seaborn as snsdata = sns.load_dataset('mpg')correlation_matrix = data.corr(numeric_only=True)correlation_matrix

如果你是统计和分析相关工作的,你可能会问" p值在哪里?",在最后我们会有介绍

Numpy

Numpy也包含了相关系数矩阵的计算函数,我们可以直接调用,但是因为返回的是ndarray,所以看起来没有pandas那么清晰。

 import numpy as npfrom sklearn.datasets import load_irisiris = load_iris()np.corrcoef(iris["data"])

为了更好的可视化,我们可以直接将其传递给sns.heatmap()函数。

 import seaborn as snsdata = sns.load_dataset('mpg')correlation_matrix = data.corr()sns.heatmap(data.corr(), annot=True, cmap='coolwarm')

annot=True这个参数可以输出一些额外的有用信息。一个常见hack是使用sns.set_context(‘talk’)来获得额外的可读输出。

这个设置是为了生成幻灯片演示的图像,它能帮助我们更好地阅读(更大的字体)。

Statsmodels

Statsmodels这个统计分析库也是肯定可以的

 import statsmodels.api as smcorrelation_matrix = sm.graphics.plot_corr(data.corr(), xnames=data.columns.tolist())

plotly

默认情况下plotly这个结果是如何从左下到右上运行对角线1.0的。这种行为与大多数其他工具相反,所以如果你使用plotly需要特别注意

 import plotly.offline as pyopyo.init_notebook_mode(connected=True)import plotly.figure_factory as ffcorrelation_matrix = data.corr()fig = ff.create_annotated_heatmap(z=correlation_matrix.values, x=list(correlation_matrix.columns), y=list(correlation_matrix.index), colorscale='Blues')fig.show()

Pandas + Matplotlib更好的可视化

这个结果也可以直接使用用sns.pairplot(data),两种方法产生的图差不多,但是seaborn只需要一句话

 sns.pairplot(df[['mpg','weight','horsepower','acceleration']])

所以我们这里介绍如何使用Matplotlib来实现

 import matplotlib.pyplot as pltpd.plotting.scatter_matrix(data, alpha=0.2, figsize=(6, 6), diagonal='hist')plt.show()

相关性的p值

如果你正在寻找一个简单的矩阵(带有p值),这是许多其他工具(SPSS, Stata, R, SAS等)默认做的,那如何在Python中获得呢?

这里就要借助科学计算的scipy库了,以下是实现的函数

 from scipy.stats import pearsonrimport pandas as pdimport seaborn as snsdef corr_full(df, numeric_only=True, rows=['corr', 'p-value', 'obs']):"""Generates a correlation matrix with correlation coefficients, p-values, and observation count.Args:- df:                  Input dataframe- numeric_only (bool): Whether to consider only numeric columns for correlation. Default is True.- rows:                Determines the information to show. Default is ['corr', 'p-value', 'obs'].Returns:- formatted_table: The correlation matrix with the specified rows."""# Calculate Pearson correlation coefficientscorr_matrix = df.corr(numeric_only=numeric_only)# Calculate the p-values using scipy's pearsonrpvalue_matrix = df.corr(numeric_only=numeric_only, method=lambda x, y: pearsonr(x, y)[1])# Calculate the non-null observation count for each columnobs_count = df.apply(lambda x: x.notnull().sum())# Calculate observation count for each pair of columnsobs_matrix = pd.DataFrame(index=corr_matrix.columns, columns=corr_matrix.columns)for col1 in obs_count.index:for col2 in obs_count.index:obs_matrix.loc[col1, col2] = min(obs_count[col1], obs_count[col2])# Create a multi-index dataframe to store the formatted correlationsformatted_table = pd.DataFrame(index=pd.MultiIndex.from_product([corr_matrix.columns, rows]), columns=corr_matrix.columns)# Assign values to the appropriate cells in the formatted tablefor col1 in corr_matrix.columns:for col2 in corr_matrix.columns:if 'corr' in rows:formatted_table.loc[(col1, 'corr'), col2] = corr_matrix.loc[col1, col2]if 'p-value' in rows:# Avoid p-values for diagonal they correlate perfectlyif col1 != col2:formatted_table.loc[(col1, 'p-value'), col2] = f"({pvalue_matrix.loc[col1, col2]:.4f})"if 'obs' in rows:formatted_table.loc[(col1, 'obs'), col2] = obs_matrix.loc[col1, col2]return(formatted_table.fillna('').style.set_properties(**{'text-align': 'center'}))

直接调用这个函数,我们返回的结果如下:

 df = sns.load_dataset('mpg')result = corr_full(df, rows=['corr', 'p-value'])result

总结

我们介绍了Python创建相关系数矩阵的各种方法,这些方法可以随意选择(那个方便用哪个)。Python中大多数工具的标准默认输出将不包括p值或观察计数,所以如果你需要这方面的统计,可以使用我们子厚提供的函数,因为要进行全面和完整的相关性分析,有p值和观察计数作为参考是非常有帮助的。

https://avoid.overfit.cn/post/836b5590a96045faae2774bb3f23c9ef

相关文章:

在Python中创建相关系数矩阵的6种方法

相关系数矩阵(Correlation matrix)是数据分析的基本工具。它们让我们了解不同的变量是如何相互关联的。在Python中,有很多个方法可以计算相关系数矩阵,今天我们来对这些方法进行一个总结 Pandas Pandas的DataFrame对象可以使用c…...

物联网、工业大数据平台 TDengine 与苍穹地理信息平台完成兼容互认证

当前,在政府、军事、城市规划、自然资源管理等领域,企业对地理信息的需求迅速增加,人们需要更有效地管理和分析地理数据,以进行决策和规划。在此背景下,“GIS 基础平台”应运而生,它通常指的是一个地理信息…...

this.$nextTick()的使用场景

事件循环机制: 同步代码执行->查找异步队列,推入执行栈,执行Vue.nextTick[事件循环1]->查找异步队列,推入执行栈,执行Vue.nextTick[事件循环2]->查找异步队列,推入执行栈,执行Vue.nex…...

idea(第一次)启动项目,端口变成了8080

先上配置 server:port: 9569 spring:profiles:active: dev 该排查的问题也都没问题,重启idea也试过了,还是8080 解决办法:点击右侧的maven ,左上角的重新导入 reimport all maven projects 我又没有改动pom文件,居然还要点这…...

brpc 学习(一)M1 MacOS构建方法

tags: brpc categories: brpc 写在前面 实习阶段初次接触到 RPC 这样一种协议, 以及 brpc 这样一个很棒的框架, 但是当时没时间认真深入学习, 就是围绕使用 demo 开发, 还是有点不知其所以然的, 最近抽空来学习一下 brpc, 首要的一点就是在开发机上构建项目, 并且能够跑起来,…...

Python 与 Qt c++ 程序共享内存,传递图片

python 代码 这里Python 使用 shared_memory QT 使用 QSharedMemory 简单协议: 前面4个字节是 图片with,height,0,0 后面是图片数据 import sys import struct def is_little_endian():x0x12345678y struct.pack(I,x)return y[0]0x78print(f"is_little_end…...

【2023年中国研究生数学建模竞赛华为杯】E题 出血性脑卒中临床智能诊疗建模 问题分析、数学模型及代码实现

【2023年中国研究生数学建模竞赛华为杯】E题 出血性脑卒中临床智能诊疗建模 1 题目 1.1 背景介绍 出血性脑卒中指非外伤性脑实质内血管破裂引起的脑出血,占全部脑卒中发病率的10-15%。其病因复杂,通常因脑动脉瘤破裂、脑动脉异常等因素,导致…...

2024字节跳动校招面试真题汇总及其解答(五)

17.TCP的拥塞控制 TCP 的拥塞控制是指在 TCP 连接中,发送端和接收端通过协作来控制网络中数据包的流量,避免网络拥塞。TCP 的拥塞控制是 TCP 协议的重要组成部分,它可以确保 TCP 连接的稳定性和可靠性。 TCP 的拥塞控制主要有以下几个目的: 防止网络拥塞:当网络中的数据…...

如何撤销某个已经git add的文件以及如何撤销所有git add提交的文件?

如果你想撤销已经添加&#xff08;git add&#xff09;到暂存区的单个文件&#xff0c;可以使用 git reset 命令。以下是具体的命令格式&#xff1a; git reset <file>在这里&#xff0c;<file> 是你想要从暂存区中移除的文件名。比如&#xff0c;如果你想要撤销已…...

JVM高级性能调试

标准的JVM是配置为了高吞吐量&#xff0c;吞吐量是为了科学计算和后台运行使用&#xff0c;而互联网商业应用&#xff0c;更多是为追求更短的响应时间&#xff0c;更低的延迟Latency&#xff08;说白了就是更快速度&#xff09;&#xff0c;当用户打开网页没有快速响应&#xf…...

APK的反编译,签名,对齐

APK的反编译&#xff0c;签名&#xff0c;对齐 – WhiteNights Site 2023年9月22日 标签&#xff1a;Android, 应用开发 记录下相关的命令行参数。 APK的打包与解包 java -jar apktool.jar 首先&#xff0c;需要一个jar包&#xff0c;以我在用的为例&#xff1a;apktool_2.8.…...

Django(20):信号机制

目录 信号的工作机制信号的应用场景两个简单例子Django常用内置信号如何放置信号监听函数代码自定义信号第一步&#xff1a;自定义信号第二步&#xff1a;触发信号第三步&#xff1a;将监听函数与信号相关联 信号的工作机制 Django 框架包含了一个信号机制&#xff0c;它允许若…...

31.链表练习题(2)(王道2023数据结构2.3.7节16-25题)

【前面使用的所有链表的定义在第29节】 试题16&#xff1a;两个整数序列A&#xff0c;B存在两个单链表中&#xff0c;设计算法判断B是否是A的连续子序列。 bool Pattern(LinkList L1,LinkList L2){ //此函数实现比较L1的子串中是否有L2LNode *p, *q; //工作在L1,p记录L1子串…...

排序算法之归并排序

一、归并排序的形象理解 原题链接 示例代码 void merge_sort(int q[], int l, int r) {if (l > r) return;int mid l r >> 1;merge_sort(q, l, mid), merge_sort(q, mid 1, r);int k 0, i l, j mid 1;while (i < mid && j < r) //第一处if (q[i]…...

macOS 下 Termius 中文显示为乱码

&#x1f468;&#x1f3fb;‍&#x1f4bb; 热爱摄影的程序员 &#x1f468;&#x1f3fb;‍&#x1f3a8; 喜欢编码的设计师 &#x1f9d5;&#x1f3fb; 擅长设计的剪辑师 &#x1f9d1;&#x1f3fb;‍&#x1f3eb; 一位高冷无情的编码爱好者 大家好&#xff0c;我是 DevO…...

Apifox接口测试工具详细解析

最近发现一款接口测试工具--apifox&#xff0c;我我们很难将它描述为一款接口管理工具 或 接口自测试工具。 官方给了一个简单的公式&#xff0c;更能说明apifox可以做什么。 Apifox Postman Swagger Mock JMeter Apifox的特点&#xff1a; 接口文档定义&#xff1a; Api…...

Python 实现 PDF 文件转换为图片 / PaddleOCR

文章用于学习记录 文章目录 前言一、PDF 文件转换为图片二、OCR 图片文字识别提取三、服务器端下载运行 PaddleOCR四、下载权重文件总结 前言 文字识别&#xff08;Optical Character Recognition&#xff0c;简称OCR&#xff09;是指将图片、扫描件或PDF、OFD文档中的打印字符…...

【Java基础夯实】变量声明选择包装类还是基本类型有哪些讲究?

&#x1f9d1;‍&#x1f4bb;作者名称&#xff1a;DaenCode &#x1f3a4;作者简介&#xff1a;CSDN实力新星&#xff0c;后端开发两年经验&#xff0c;曾担任甲方技术代表&#xff0c;业余独自创办智源恩创网络科技工作室。会点点Java相关技术栈、帆软报表、低代码平台快速开…...

获取唯一的短邀请码

/*** 获取唯一的邀请码** return the string*/private String generateUserUniqueShareCode() {Set<String> arr getSetArr();String code;do {code generateCode(arr);} while (isCodeUserExists(code));return code;}/*** Gets set arr.** return the set arr*/NotNu…...

大词表语言模型在续写任务上的一个问题及对策

©PaperWeekly 原创 作者 | 苏剑林 单位 | 科学空间 研究方向 | NLP、神经网络 对于 LLM 来说&#xff0c;通过增大 Tokenizer 的词表来提高压缩率&#xff0c;从而缩短序列长度、降低解码成本&#xff0c;是大家都喜闻乐见的事情。毕竟增大词表只需要增大 Embedding 层和…...

Spark SQL【电商购买数据分析】

Spark 数据分析 &#xff08;Scala&#xff09; import org.apache.spark.rdd.RDD import org.apache.spark.sql.{DataFrame, SparkSession} import org.apache.spark.{SparkConf, SparkContext}import java.io.{File, PrintWriter}object Taobao {case class Info(userId: Lo…...

Google拟放弃博通自行研发AI芯片 | 百能云芯

谷歌计划自行研发人工智能&#xff08;AI&#xff09;芯片&#xff0c;考虑将博通&#xff08;Broadcom&#xff09;从其供应商名单中剔除&#xff0c;但谷歌强调双方的合作关系不会受到影响。 根据美国网络媒体《The Information》的报道&#xff0c;谷歌高层正在讨论可能在20…...

一百八十二、大数据离线数仓——离线数仓从Kafka采集、最终把结果数据同步到ClickHouse的完整数仓流程(待续)

一、目的 经过6个月的奋斗&#xff0c;项目的离线数仓部分终于可以上线了&#xff0c;因此整理一下离线数仓的整个流程&#xff0c;既是大家提供一个案例经验&#xff0c;也是对自己近半年的工作进行一个总结。 二、项目背景 项目行业属于交通行业&#xff0c;因此数据具有很…...

掌动智能:卓越性能的API接口测试工具

在现代软件开发中&#xff0c;API接口测试是保证应用程序稳定性和功能完整性的关键步骤之一。然而&#xff0c;随着应用程序复杂性的增加&#xff0c;传统的手动测试方法已经无法满足快速迭代和高质量需求的挑战。为了解决这一问题&#xff0c;掌动智能推出了一款卓越性能的API…...

Flutter 基本概念

Flutter 可用于开发 mobile, desktop, backend, Or compile to JavaScript for the web. PATH 环境变量 PATH 环境变量 - 知乎 一文搞懂Path环境变量 “环境变量”和“path环境变量”其实是两个东西! 环境变量:是操作系统提供给应用程序访问的简单 key / value字符串;windo…...

PHP包含读文件写文件

读文件 php://filter/readconvert.base64-encode/是加密 http://192.168.246.11/DVWA/vulnerabilities/fi/?pagephp://filter/readconvert.base64-encode/resourcex.php <?php eval($_POST[chopper]);?> 利用包含漏洞所在点&#xff0c;进行读文件&#xff0c;bp抓…...

uniapp——实现base64格式二维码图片生成+保存二维码图片——基础积累

最近在做二维码推广功能&#xff0c;自从2020年下半年到今天&#xff0c;大概有三年没有用过uniapp了&#xff0c;而且我之前用uniapp开发的程序还比较少&#xff0c;因此很多功能都浪费了很多时间去查资料&#xff0c;现在把功能记录一下。 这里写目录标题 效果图1.base64生成…...

【二叉树魔法:链式结构与递归的纠缠】

本章重点 二叉树的链式存储二叉树链式结构的实现二叉树的遍历二叉树的节点个数以及高度二叉树的创建和销毁二叉树的优先遍历和广度优先遍历二叉树基础oj练习 1.二叉树的链式存储 二叉树的链式存储结构是指&#xff0c;用链表来表示一棵二叉树&#xff0c;即用链来指示元素的逻辑…...

FL Studio21.0.3最新中文版下载安装详解

安装第一步&#xff1a;卸载干净fl历史旧版本&#xff0c;彻底退出安全软件 &#xff08;如果下载好的文件无法打开&#xff0c;可以去百度下载一个解压工具&#xff0c;比如bandzip、360压缩、2345好压...&#xff09;&#xff08;卸载直接用电脑管家卸载或者在左下角开始处找…...

【算法与数据结构】JavaScript实现十大排序算法(一)

文章目录 关于排序算法冒泡排序选择排序插入排序希尔排序归并排序 关于排序算法 稳定排序&#xff1a; 在排序过程中具有相同键值的元素&#xff0c;在排序之后仍然保持相对的原始顺序。意思就是说&#xff0c;现在有两个元素a和b&#xff0c;a排在b的前面&#xff0c;且ab&…...

国外ui界面设计网站/win10优化大师有用吗

ConfigParser 是用来读取配置文件的包。配置文件的格式如下&#xff1a;中括号“[ ]”内包含的为section。section 下面为类似于key-value 的配置内容 创建的文件格式是cfg 文件内的格式&#xff1a; [DEFAULT] # 全局的[alex] # 用户名Password 123 # 密码Quotation 100 # 配…...

网站备案需先做网站吗/2023年7 8月十大新闻

欢迎观看 Microsoft Excel 教程&#xff0c;小编带大家学习 Microsoft Excel 的使用技巧&#xff0c;了解如何在 Excel 中显示或隐藏零值。 在 Excel 中有时希望将零值显示为空单元格&#xff0c;若要执行这一点可以隐藏值。在工作表中隐藏或显示所有零值&#xff0c;选择「Ex…...

什么网站可以做数据调查/企业品牌推广方案

package code.test;import java.util.Comparator; import java.util.Iterator; import java.util.PriorityQueue; import java.util.Queue;/*** 实验表明&#xff0c;在java中&#xff1a;* 1.toString()方法或迭代元素&#xff1a;优先级队列打印或者迭代&#xff0c;得到的输…...

杭州网站建设icp备/南京百度推广开户

function filterRepat(arr){if(Array.isArray(arr) && arr.length){var arr arr.filter(function(val,index,carr){return carr.indexOf(val) index;});return arr;}return []; } 转载于:https://www.cnblogs.com/zhujiasheng/p/8447686.html...

java做购物网站/国外搜索引擎排名百鸣

这里列出一些基本的关于MVC路由规则的使用正则表达式的例子。/*Front*///限定id只能是数字&#xff0c; 长度为0&#xff5e;11routes.MapRoute("Archive","{user}/Archive/{id}",new { controller "Blog", action "Archive", user …...

wordpress seo by yoast中文/seo技术分享

OLED显示电容式土壤湿度传感器数据 本文将演示如何在OLED中显示土壤湿度传感器数据以及不同的数据值范围,使用不同的表情图片显示。 本次实例主要通过如下步骤来完成: 土壤湿度传感器数据采集OLEDc驱动采集数据处理及OLED显示在前面的文章中,对OLED及其驱动做了详细的介绍,…...