简介

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

基础使用方法

代码示例

import pandas as pd
import 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 pd
import 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 pd
import seaborn as sns
import 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')

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

excel读取数据

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

示例代码

import pandas as pd
import 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_15785.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注