文章详情

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

请输入下面的图形验证码

提交验证

短信预约提醒成功

Spearman 相关性分析法,以及python的完整代码应用

2023-09-09 17:21

关注

简介

Spearman 相关性分析法是一种针对两个变量之间非线性关系的相关性计算方法,同时,它不对数据的分布进行假设。该方法的基本思想是将两个(也可以多个)变量的值进行排序,并计算它们之间的等级相关性(Spearman 相关系数)。Spearman 相关系数的范围在 -1 到 1 之间,取值为 -1 表示完全负相关,取值为 1 表示完全正相关,取值为 0 则表示两个变量之间没有相关性。

基础使用方法

代码示例

import pandas as pdimport seaborn as sns# 构造数据data = {    'x': [1, 3, 5, 7, 9],    'y': [10, 8, 6, 4, 2]}df = pd.DataFrame(data)# Spearman 相关性分析corr = df.corr(method='spearman')print(corr)# 绘制相关系数热力图sns.heatmap(corr, annot=True, cmap="YlGnBu")

参数说明

method: 相关性分析方法,这里需要指定为 spearman

函数返回值

sns.heatmap(corr, annot=True, cmap="YlGnBu") 会绘制出相关系数热力图,其中:

引入多个变量

import pandas as pdimport seaborn as sns# 构造数据data = {    'x1': [1, 3, 5, 7, 9],    'x2': [10, 8, 6, 4, 2],    'x3': [9, -7, 5.4, -3, 1],    'x4': [2, 4, 6, 8, 10]}df = pd.DataFrame(data)# Spearman 相关性分析corr = df.corr(method='spearman')print(corr)# 绘制相关系数热力图sns.heatmap(corr, annot=True, cmap="YlGnBu")

在上面的示例代码中,我们构造了一个包含了 4 个变量的数据集,包括 ‘x1’、‘x2’、‘x3’ 和 ‘x4’,然后使用 Spearman 相关性分析法计算了这些变量之间的 Spearman 相关系数矩阵,并绘制了相关系数的热力图。
结果图

生成热力图的保存

import pandas as pdimport seaborn as snsimport matplotlib.pyplot as plt# 构造数据(可以使用你的数据)data = {    'x1': [1, 3, 5, 7, 9],    'x2': [10, 8, 6, 4, 2],    'x3': [9, -7, 5.4, -3, 1],    'x4': [2, 4, 6, 8, 10]}df = pd.DataFrame(data)# Spearman 相关性分析corr = df.corr(method='spearman')print(corr)# 绘制相关系数热力图sns.heatmap(corr, annot=True, cmap="YlGnBu")# 保存热力图plt.savefig('heatmap.png', dpi=300, bbox_inches='tight')

在这个示例代码中,使用了 Matplotlib 的 savefig() 函数来保存热力图。这个函数的第一个参数是文件的名称和路径。在这个示例中,我们指定了 "heatmap.png" 作为文件名,并将热力图保存在当前工作目录下。dpi 参数设定每英寸像素点数(dots per inch),默认为 100,一般可以设定为 300,以获得更高的分辨率。bbox_inches='tight' 参数用来紧缩图像区域,以避免被裁剪,可以根据需要进行调整。

从excel读取数据

从 Excel 表中获取各个变量的数据,可以使用 Python 中的 Pandas 库。Pandas 可以读取 Excel 表中的数据,并将其转换为 Pandas DataFrame 对象,以便进行数据分析和可视化。

示例代码:

import pandas as pdimport seaborn as sns# 读取 Excel 表中的数据df = pd.read_excel('data.xlsx')# Spearman 相关性分析corr = df.corr(method='spearman')print(corr)# 绘制相关系数热力图sns.heatmap(corr, annot=True, cmap="YlGnBu")

其中,read_excel() 函数用于读取 Excel 文件,其参数指定 Excel 文件的名称和路径。默认情况下,它读取文件中的第一个工作表,并将其转换为 Pandas DataFrame 对象。如果 Excel 文件中有多个工作表,可以使用 sheet_name 参数将指定的工作表读取为 DataFrame 对象。

假设你的 Excel 文件中每一列数据代表一个变量,可以使用以下代码将 Excel 表中的每列数据分离成新的 DataFrame 对象:

# 将列分离成新的 DataFrame 对象var_dict = {}for column in df:    var_dict[column] = df[column]# 输出各个变量的数据for key, value in var_dict.items():    print(key, value.tolist())

df[column] 返回一个 Pandas Series 对象,其中包含 Excel 表中某一列的数据。将其存储在一个 Python 的字典对象 var_dict 中,可以使用 tolist() 函数将其转换为 Python 列表以输出各个变量的数据。

然后,可以使用上面的示例代码,在所述的每一列中提取来自幻灯片的各个变量数据,并使用 Spearman 相关性分析法计算它们之间的关系,最后生成相关系数热力图。
较复杂的热力图

来源地址:https://blog.csdn.net/weixin_67016521/article/details/129863814

阅读原文内容投诉

免责声明:

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

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

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯