我的编程空间,编程开发者的网络收藏夹
学习永远不晚

怎样用Python进行相关性分析

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

怎样用Python进行相关性分析

今天就跟大家聊聊有关怎样用Python进行相关性分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

1.相关和因果是一回事吗

相关性不等于因果。用x1和x2作为两个变量进行解释,相关意味着x1和x2是逻辑上的并列相关关系,而因果联系可以解释为因为x1所以x2(或因为x2所以x1)的逻辑关系,二者是完全不同的。

用一个运营示例来说明二者的关系:做商品促销活动时,通常都会以较低的价格进行销售,以此来实现较高的商品销量;随着商品销售的提升,也给线下物流配送体系带来了更大的压力,在该过程中通常会导致商品破损量的增加。

本案例中,商品低价与破损量增加并不是因果关系,即不能说因为商品价格低所以商品破损量增加;二者的真实关系是都是基于促销这个大背景下,低价和破损量都是基于促销产生的。

相关性的真实价值不是用来分析“为什么”的,而是通过相关性来描述无法解释的问题背后真正成因的方法。相关性的真正的价值是能知道“是什么”,即无论通过何种因素对结果产生影响,最终出现的规律就是二者会一起增加或降低等。

仍然是上面的案例,通过相关性分析我们可以知道,商品价格低和破损量增加是相伴发生的,这意味着当价格低的时候(通常是做销售活动,也有可能产品质量问题、物流配送问题、包装问题等),我们就想到破损量可能也会增加。但是到底由什么导致的破损量增加,是无法通过相关性来得到的。

2.相关系数低就是不相关吗

R(相关系数)低就是不相关吗?其实不是。

R的取值可以为负,R=-0.8代表的相关性要高于R=0.5。负相关只是意味着两个变量的增长趋势相反,因此需要看R的绝对值来判断相关性的强弱。

即使R的绝对值低,也不一定说明变量间的相关性低,原因是相关性衡量的仅仅是变量间的线性相关关系,变量间除了线性关系外,还包括指数关系、多项式关系、幂关系等,这些“非线性相关”的相关性不在R(相关性分析)的衡量范围之内。

3.代码实操:Python相关性分析

本示例中,将使用Numpy进行相关性分析。源文件data5.txt位于“附件-chapter3”中。附件下载地址:

http://www.dataivy.cn/book/python_book_v2.zip

import numpy as np # 导入库 data = np.loadtxt('data5.txt', delimiter='\t') # 读取数据文件 x = data[:, :-1] # 切分自变量 correlation_matrix = np.corrcoef(x, rowvar=0) # 相关性分析 print(correlation_matrix.round(2)) # 打印输出相关性结果

示例中实现过程如下:

  1. 先导入Numpy库;

  2. 使用Numpy的loadtxt方法读取数据文件,数据文件以tab分隔;

  3. 矩阵切片,切分出自变量用来做相关性分析;

  4. 使用Numpy的corrcoef方法做相关性分析,通过参数rowvar = 0控制对列做分析;

  5. 打印输出相关性矩阵,使用round方法保留2位小数。结果如下:

[[ 1. -0.04 0.27 -0.05 0.21 -0.05 0.19 -0.03 -0.02]  [-0.04 1. -0.01 0.73 -0.01 0.62 0. 0.48 0.51]  [ 0.27 -0.01 1. -0.01 0.72 0. 0.65 0.01 0.02]  [-0.05 0.73 -0.01 1. 0.01 0.88 0.01 0.7 0.72]  [ 0.21 -0.01 0.72 0.01 1. 0.02 0.91 0.03 0.03]  [-0.05 0.62 0. 0.88 0.02 1. 0.03 0.83 0.82]  [ 0.19 0. 0.65 0.01 0.91 0.03 1. 0.03 0.03]  [-0.03 0.48 0.01 0.7 0.03 0.83 0.03 1. 0.71]  [-0.02 0.51 0.02 0.72 0.03 0.82 0.03 0.71 1. ]]

相关性矩阵的左侧和顶部都是相对的变量,从左到右、从上到下依次是列1到列9。从结果看出:

  • 第5列和第7列相关性较高,系数达到0.91。

  • 第4列和第6列相关性较高,系数达到0.88。

  • 第8列和第6列相关性较高,系数达到0.83。

为了更好地展示相关性结果,我们可以配合Matplotlib展示图像。代码如下:

fig = plt.figure() # 调用figure创建一个绘图对象 ax = fig.add_subplot(111) # 设置1个子网格并添加子网格对象 hot_img = ax.matshow(np.abs(correlation_matrix), vmin=0, vmax=1)  # 绘制热力图,值域从0到1 fig.colorbar(hot_img) # 为热力图生成颜色渐变条 ticks = np.arange(0, 9, 1) # 生成0~9,步长为1 ax.set_xticks(ticks) # 生成x轴刻度 ax.set_yticks(ticks) # 设置y轴刻度 names = ['x' + str(i) for i in range(x.shape[1])] # 生成坐标轴标签文字 ax.set_xticklabels(names) # 生成x轴标签 ax.set_yticklabels(names) # 生成y轴标签

上述代码的功能都已经在注释中注明。有以下几点需要注意:

  • 由于相关性结果中看的是绝对值的大小,因此需要对correlation_matrix做取绝对值操作,其对应的值域会变为[0, 1]。

  • 原始数据中由于没有列,因此这里使用列表推导式生成从x0到x8代表原始的9个特征。

展示结果如图所示。

怎样用Python进行相关性分析

从图像中配合颜色可以看出:颜色越亮(彩色颜色为越黄),则相关性结果越高,因此从左上角到右下角呈现一条黄色斜线;而颜色较亮的第5列和第7列、第4列和第6列及第8列和第6列分别对应x4和x6、x3和x5、x7和x5。

上述过程中,主要需要考虑的关键点是:如何理解相关性和因果关系的差异,以及如何应用相关性。相关性分析除了可以用来分析不同变量间的相关伴生关系以外,也可以用来做多重共线性检验。

看完上述内容,你们对怎样用Python进行相关性分析有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网行业资讯频道,感谢大家的支持。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

怎样用Python进行相关性分析

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

怎样用Python进行相关性分析

今天就跟大家聊聊有关怎样用Python进行相关性分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1.相关和因果是一回事吗相关性不等于因果。用x1和x2作为两个变量进行解释,相关意味
2023-06-16

用Python对数据进行相关性分析

这些维度关系的分析就需要用一些方法来进行衡量,相关性分析就是其中一种。本文就用python来解释一下数据的相关性分析。

如何用Python对数据进行相关性分析

这期内容当中小编将会给大家带来有关如何用Python对数据进行相关性分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。在进行数据分析时,我们所用到的数据往往都不是一维的,而这些数据在分析时难度就增加了不少
2023-06-16

使用SPSS进行相关性分析的相关步骤

IBM SPSS Statistics为用户提供了三种相关性分析的方法,分别是双变量分析、偏相关分析和距离分析,三种相关分析方法各针对不同的数据情况,接下来我们将为大家介绍如何使用SPSS相关性分析中的距离分析。 一、数据简述 距离分析和其他两类相关分析方法的
使用SPSS进行相关性分析的相关步骤
2016-11-12

如何用Python进行回归分析与相关分析

这篇文章主要介绍了如何用Python进行回归分析与相关分析,这两部分内容会放在一起讲解,文中提供了解决思路以及部分实现代码,需要的朋友可以参考下
2023-03-22

Python进行数据相关性分析的三种方式是什么

本文小编为大家详细介绍“Python进行数据相关性分析的三种方式是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python进行数据相关性分析的三种方式是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。相
2023-06-30

python进行词性分析

表示python的nltk包真的很好用,本来想着自己从字典里面抓数据的,后来师兄建议用nltk包,http://www.nltk.org/install.html按照方法安装了包,接下来 import nltknltk.download()
2023-01-31

怎样进行Python数据结构分析

怎样进行Python数据结构分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Python数据结构数据结构引言: 数据结构是组织数据的方式,以便能够更好的存储和获取数
2023-06-02

怎样进行Node.js的分析

这篇文章给大家介绍怎样进行Node.js的分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、关于 Node.js1.Node.js 是什么Node.js® is a JavaScript runtime built
2023-06-04

怎样进行Visual Studio分析

本篇文章为大家展示了怎样进行Visual Studio分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。现在人们更关心的是早一些时候发布的Whidbey。但是对于Orcas,微软强调指出该版本将能够
2023-06-17

用Python进行简单的文本相似度分析

学习目标:利用gensim包分析文档相似度使用jieba进行中文分词了解TF-IDF模型环境:Python 3.6.0 |Anaconda 4.3.1 (64-bit)工具:jupyter notebook注:为了简化问题,本文没有剔除停用
2023-01-31

怎样分析MySQL中锁的相关问题

这篇文章给大家介绍怎样分析MySQL中锁的相关问题,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。锁分类:从对数据操作的粒度分 :表锁:操作时,会锁定整个表。行锁:操作时,会锁定当前操作行。从对数据操作的类型分:读锁(共
2023-06-22

怎样利用Python对心脏病数据集进行分析

这篇文章将为大家详细讲解有关怎样利用Python对心脏病数据集进行分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。我们都很害怕生病,但感冒发烧这种从小到大的疾病我们已经麻木了,因为一星期他
2023-06-16

如何进行Ruby线程相关知识点分析

这期内容当中小编将会给大家带来有关如何进行Ruby线程相关知识点分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Ruby语言一款完全面向对象的解释型脚本语言。对于这样的一款新型编程语言,其特性对于程序员
2023-06-17

ADO.NET Framework怎样进行数据分析

ADO.NET Framework怎样进行数据分析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。如果你坚持在.NET世界中使用ADO.NET Framework
2023-06-17

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录