广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python进行数据相关性分析的三种方式是什么
  • 344
分享到

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

2023-06-30 03:06:16 344人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

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

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

相关性实现

统计和数据科学通常关注数据集的两个或多个变量(或特征)之间的关系。数据集中的每个数据点都是一个观察值,特征是这些观察值的属性或属性。

这里主要介绍下面3种相关性的计算方式:

  • Pearson’s r

  • Spearman’s rho

  • Kendall’s tau

NumPy 相关性计算

np.corrcoef() 返回 Pearson 相关系数矩阵。

import numpy as npx = np.arange(10, 20)xarray([10, 11, 12, 13, 14, 15, 16, 17, 18, 19])y = np.array([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])yarray([ 2,  1,  4,  5,  8, 12, 18, 25, 96, 48])r = np.corrcoef(x, y)rarray([[1.        , 0.75864029],       [0.75864029, 1.        ]])

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

SciPy 相关性计算

import numpy as npimport scipy.statsx = np.arange(10, 20)y = np.array([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])scipy.stats.pearsonr(x, y)    # Pearson's r(0.7586402890911869, 0.010964341301680832)scipy.stats.spearmanr(x, y)   # Spearman's rhoSpearmanrResult(correlation=0.9757575757575757, pvalue=1.4675461874042197e-06)scipy.stats.kendalltau(x, y)  # Kendall's tauKendalltauResult(correlation=0.911111111111111, pvalue=2.9761904761904762e-05)

在检验假设时,您可以在统计方法中使用p 值。p 值是一项重要的衡量标准,需要深入了解概率和统计数据才能进行解释。

scipy.stats.pearsonr(x, y)[0]    # Pearson's r0.7586402890911869scipy.stats.spearmanr(x, y)[0]   # Spearman's rho0.9757575757575757scipy.stats.kendalltau(x, y)[0]  # Kendall's tau0.911111111111111

pandas 相关性计算

相对于来说计算比较简单。

import pandas as pdx = pd.Series(range(10, 20))y = pd.Series([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])x.corr(y)                     # Pearson's r0.7586402890911867y.corr(x)0.7586402890911869x.corr(y, method='spearman')  # Spearman's rho0.9757575757575757x.corr(y, method='kendall')   # Kendall's tau0.911111111111111

线性相关实现

线性相关性测量变量或数据集特征之间的数学关系与线性函数的接近程度。如果两个特征之间的关系更接近某个线性函数,那么它们的线性相关性更强,相关系数的绝对值也更高。

线性回归:SciPy 实现

线性回归是寻找尽可能接近特征之间实际关系的线性函数的过程。换句话说,您确定最能描述特征之间关联的线性函数,这种线性函数也称为回归线。

import pandas as pdx = pd.Series(range(10, 20))y = pd.Series([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])

使用scipy.stats.linregress()对两个长度相同的数组执行线性回归。

result = scipy.stats.linregress(x, y)scipy.stats.linregress(xy)LinregressResult(slope=7.4363636363636365, intercept=-85.92727272727274, rvalue=0.7586402890911869, pvalue=0.010964341301680825, stderr=2.257878767543913)result.slope # 回归线的斜率7.4363636363636365result.intercept # 回归线的截距-85.92727272727274result.rvalue # 相关系数0.7586402890911869result.pvalue #  p值0.010964341301680825result.stderr # 估计梯度的标准误差2.257878767543913

未来更多内容参考机器学习专栏中的线性回归内容。

等级相关

比较与两个变量或数据集特征相关的数据的排名或排序。如果排序相似则相关性强、正且高。但是如果顺序接近反转,则相关性为强、负和低。换句话说等级相关性仅与值的顺序有关,而不与数据集中的特定值有关。

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

图1和图2显示了较大的 x 值始终对应于较大的 y 值的观察结果,这是完美的正等级相关。图3说明了相反的情况即完美的负等级相关。

排名:SciPy 实现

使用 scipy.stats.rankdata() 来确定数组中每个值的排名。

import numpy as npimport scipy.statsx = np.arange(10, 20)y = np.array([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])z = np.array([5, 3, 2, 1, 0, -2, -8, -11, -15, -16])# 获取排名序scipy.stats.rankdata(x)  # 单调递增array([ 1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9., 10.])scipy.stats.rankdata(y)array([ 2.,  1.,  3.,  4.,  5.,  6.,  7.,  8., 10.,  9.])scipy.stats.rankdata(z) # 单调递减array([10.,  9.,  8.,  7.,  6.,  5.,  4.,  3.,  2.,  1.])

rankdata() 将nan值视为极大。

scipy.stats.rankdata([8, np.nan, 0, 2])array([3., 4., 1., 2.])

等级相关性:NumPy 和 SciPy 实现

使用 scipy.stats.spearmanr() 计算 Spearman 相关系数。

result = scipy.stats.spearmanr(x, y)resultSpearmanrResult(correlation=0.9757575757575757, pvalue=1.4675461874042197e-06)result.correlation0.9757575757575757result.pvalue1.4675461874042197e-06rho, p = scipy.stats.spearmanr(x, y)rho0.9757575757575757p1.4675461874042197e-06

等级相关性:Pandas 实现

使用 Pandas 计算 Spearman 和 Kendall 相关系数。

import numpy as npimport scipy.statsx = np.arange(10, 20)y = np.array([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])z = np.array([5, 3, 2, 1, 0, -2, -8, -11, -15, -16])x, y, z = pd.Series(x), pd.Series(y), pd.Series(z)xy = pd.DataFrame({'x-values': x, 'y-values': y})xyz = pd.DataFrame({'x-values': x, 'y-values': y, 'z-values': z})

计算 Spearman 的 rho,method=spearman。

x.corr(y, method='spearman')0.9757575757575757xy.corr(method='spearman')          x-values  y-valuesx-values  1.000000  0.975758y-values  0.975758  1.000000xyz.corr(method='spearman')          x-values  y-values  z-valuesx-values  1.000000  0.975758 -1.000000y-values  0.975758  1.000000 -0.975758z-values -1.000000 -0.975758  1.000000xy.corrwith(z, method='spearman')x-values   -1.000000y-values   -0.975758dtype: float64

计算 Kendall 的 tau, method=kendall。

x.corr(y, method='kendall')0.911111111111111xy.corr(method='kendall')          x-values  y-valuesx-values  1.000000  0.911111y-values  0.911111  1.000000xyz.corr(method='kendall')          x-values  y-values  z-valuesx-values  1.000000  0.911111 -1.000000y-values  0.911111  1.000000 -0.911111z-values -1.000000 -0.911111  1.000000xy.corrwith(z, method='kendall')x-values   -1.000000y-values   -0.911111dtype: float64

相关性的可视化

数据可视化在统计学和数据科学中非常重要。可以帮助更好地理解的数据,并更好地了解特征之间的关系。

这里使用 matplotlib 来进行数据可视化。

import matplotlib.pyplot as pltplt.style.use('ggplot')import numpy as npimport scipy.statsx = np.arange(10, 20)y = np.array([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])z = np.array([5, 3, 2, 1, 0, -2, -8, -11, -15, -16])xyz = np.array([[10, 11, 12, 13, 14, 15, 16, 17, 18, 19],                [2, 1, 4, 5, 8, 12, 18, 25, 96, 48],                [5, 3, 2, 1, 0, -2, -8, -11, -15, -16]])

带有回归线的 XY 图

使用 linregress() 获得回归线的斜率和截距,以及相关系数。

slope, intercept, r, p, stderr = scipy.stats.linregress(x, y)

构建线性回归公式。

line = f' y={intercept:.2f}+{slope:.2f}x, r={r:.2f}'line'y=-85.93+7.44x, r=0.76'

.plot() 绘图

fig, ax = plt.subplots()ax.plot(x, y, linewidth=0, marker='s', label='Data points')ax.plot(x, intercept + slope * x, label=line)ax.set_xlabel('x')ax.set_ylabel('y')ax.legend(facecolor='white')plt.show()

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

相关矩阵的热图 matplotlib

处理特征较多的相关矩阵用热图方式比较理想。

corr_matrix = np.corrcoef(xyz).round(decimals=2)corr_matrixarray([[ 1.  ,  0.76, -0.97],       [ 0.76,  1.  , -0.83],       [-0.97, -0.83,  1.  ]])

其中为了表示方便将相关的数据四舍五入后用 .imshow() 绘制。

fig, ax = plt.subplots()im = ax.imshow(corr_matrix)im.set_clim(-1, 1)ax.grid(False)ax.xaxis.set(ticks=(0, 1, 2), ticklabels=('x', 'y', 'z'))ax.yaxis.set(ticks=(0, 1, 2), ticklabels=('x', 'y', 'z'))ax.set_ylim(2.5, -0.5)for i in range(3):    for j in range(3):        ax.text(j, i, corr_matrix[i, j], ha='center', va='center',                color='r')cbar = ax.figure.colorbar(im, ax=ax, fORMat='% .2f')plt.show()

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

相关矩阵的热图 seaborn

import seaborn as snsplt.figure(figsize=(11, 9),dpi=100)sns.heatmap(data=corr_matrix,            annot_kws={'size':8,'weight':'normal', 'color':'#253D24'},#数字属性设置,例如字号、磅值、颜色                   )

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

读到这里,这篇“Python进行数据相关性分析的三种方式是什么”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网Python频道。

--结束END--

本文标题: Python进行数据相关性分析的三种方式是什么

本文链接: https://www.lsjlt.com/news/327228.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • Python进行数据相关性分析的三种方式是什么
    本文小编为大家详细介绍“Python进行数据相关性分析的三种方式是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python进行数据相关性分析的三种方式是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。相...
    99+
    2023-06-30
  • 详解Python进行数据相关性分析的三种方式
    目录相关性实现NumPy 相关性计算SciPy 相关性计算Pandas 相关性计算线性相关实现线性回归:SciPy 实现等级相关排名:SciPy 实现等级相关性:NumPy 和 Sc...
    99+
    2022-11-10
  • 如何用Python对数据进行相关性分析
    这期内容当中小编将会给大家带来有关如何用Python对数据进行相关性分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。在进行数据分析时,我们所用到的数据往往都不是一维的,而这些数据在分析时难度就增加了不少...
    99+
    2023-06-16
  • Python数据分析Numpy中常用相关性函数是什么
    今天小编给大家分享一下Python数据分析Numpy中常用相关性函数是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。摘要...
    99+
    2023-06-30
  • MySQL中有三种删除数据的方式分别是什么
    小编给大家分享一下MySQL中有三种删除数据的方式分别是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在 MySQL 中有三...
    99+
    2022-10-18
  • Spring配置数据源的三种方式是什么
    这篇文章主要介绍“Spring配置数据源的三种方式是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Spring配置数据源的三种方式是什么”文章能帮助大家解决问题。一、数据源的作用数据源(连接池)...
    99+
    2023-06-26
  • 进入Win7安全模式的三种方法分别是什么
    这期内容当中小编将会给大家带来有关进入Win7安全模式的三种方法分别是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。方法一、开机按F8键进入1、我们在重启或者电脑开机的时候,在进入Windows系统启...
    99+
    2023-06-05
  • 使用javascript解析二维码的三种方式分别是什么
    使用javascript解析二维码的三种方式分别是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、使用javascript解析二维码1、二维码是什么二维码就是将我们能...
    99+
    2023-06-25
  • Python数据分析的方法是什么
    本篇内容介绍了“Python数据分析的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!01 指标拆解TGI计算公式中,有三个关键点需...
    99+
    2023-06-16
  • FMDB使用的数据库的三种形式分别是什么
    今天就跟大家聊聊有关FMDB使用的数据库的三种形式分别是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。FMDB是iOS平台下一款优秀的第三方SQLite数据库框架。它以Objec...
    99+
    2023-06-04
  • Python的三大开源数据分析工具是什么
    本文小编为大家详细介绍“Python的三大开源数据分析工具是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python的三大开源数据分析工具是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。在大数据库领域...
    99+
    2023-06-02
  • Python爬虫解析网页的4种方式分别是什么
    本篇文章为大家展示了Python爬虫解析网页的4种方式分别是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。用Python写爬虫工具在现在是一种司空见惯的事情,每个人都希望能够写一段程序去互联网上...
    99+
    2023-06-16
  • Python 更快进行探索性数据分析的四个方法
    大家好,常用探索性数据分析方法很多,比如常用的 Pandas DataFrame 方法有 .head()、.tail()、.info()、.describe()、.plot() 和 ...
    99+
    2022-11-12
  • Python数据分析需要解答的三大问题是什么
    本篇文章给大家分享的是有关Python数据分析需要解答的三大问题是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Windows系统并没有自带Python工具,需要我们自己搭...
    99+
    2023-06-02
  • HTTP协议中需要知道的三种数据格式分别是什么
    今天就跟大家聊聊有关HTTP协议中需要知道的三种数据格式分别是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。实习中的一个主要工作就是分析 HTT...
    99+
    2022-10-19
  • python天气数据爬取与分析的方法是什么
    Python天气数据爬取与分析的方法主要包括以下几个步骤:1. 确定数据来源:选择一个合适的天气数据源,可以通过网站API获取天气数...
    99+
    2023-10-12
    python
  • 数据库缓存最终一致性的四种方案分别是什么
    这篇文章将为大家详细讲解有关数据库缓存最终一致性的四种方案分别是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。背景缓存是软件开发中一个非常有用的概念,数...
    99+
    2022-10-19
  • Python爬取天气数据及可视化分析的方法是什么
    这篇文章主要讲解了“Python爬取天气数据及可视化分析的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python爬取天气数据及可视化分析的方法是什么”吧!1、数据获取请求网站链...
    99+
    2023-07-06
  • 一行Python命令搞定前期数据探索性的方法是什么
    这篇文章主要讲解了“一行Python命令搞定前期数据探索性的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“一行Python命令搞定前期数据探索性的方法是什么”吧!对于每个从事和数据...
    99+
    2023-06-16
  • MySQL对数据表已有表进行分区表的实现方法是什么
    本篇内容介绍了“MySQL对数据表已有表进行分区表的实现方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!操作方式@1 可以使用ALT...
    99+
    2023-06-25
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作