python灰色关联度分析_灰色关联分析法步骤(python代码实现)

import pandas as pd

import numpy as np

# x = pd.DataFrame([[2000,0.732,0.836,0.628,0.743], [2001,0.758,0.883,0.688,0.787], [2002,0.859,0.914,0.781,0.929],[2003,1.0125,1.0440,1.0237,0.9847],[2004,1.2356,1.1069,1.2833,1.2363],[2005,1.4013,1.2152,1.5405,1.3182]])

# x=pd.read_excel(‘D:\date\winequality\winequality-red1.xlsx‘)

csv_file = "D:\date\winequality\winequality-red1.csv"

csv_data = pd.read_csv(csv_file, low_memory=False) # 防止弹出警告

x= pd.DataFrame(csv_data)

x=x.iloc[:,1:].T

# 1、数据均值化处理

x_mean=x.mean(axis=1)

for i in range(x.index.size):

x.iloc[i,:] = x.iloc[i,:]/x_mean[i]

# x.iloc[i,:] = x.iloc[i,:]/x_mean[i]  #i或者i+1不太明晰

# 2、提取参考队列和比较队列

ck=x.iloc[0,:]

cp=x.iloc[1:,:]

# 比较队列与参考队列相减

t=pd.DataFrame()

for j in range(cp.index.size):

temp=pd.Series(cp.iloc[j,:]-ck)

t=t.append(temp,ignore_index=True)

#求最大差和最小差

mmax=t.abs().max().max()

mmin=t.abs().min().min()

rho=0.5

#3、求关联系数

ksi=((mmin+rho*mmax)/(abs(t)+rho*mmax))

#4、求关联度

r=ksi.sum(axis=1)/ksi.columns.size

#5、关联度排序,得到结果r3>r2>r1

result=r.sort_values(ascending=False)

print(result)

实现Python中的灰色关联度分析热力图,可以按照以下步骤进行操作: 1. 安装必要的库:首先,确保已安装以下库:numpy、pandas和matplotlib。 2. 数据准备:准备用于灰色关联度分析的数据集。将数据集加载到Python中,并确保数据集包含数值型数据。 3. 数据标准化:对数据进行标准化处理,以确保不同特征之间的数值范围相似。你可以使用Min-Max标准化或Z-Score标准化等方。 4. 灰色关联度分析:使用相应的灰色关联度分析计算各个特征之间的关联度。常见的方包括灰色关联度分析1和灰色关联度分析2。 5. 构建热力图:使用matplotlib库中的heatmap函数来构建热力图。将灰色关联度矩阵作为输入,并设置合适的颜色映射方案。 下面是一个简单的示例代码,演示如何实现上述步骤: ```python import numpy as np import pandas as pd import matplotlib.pyplot as plt # 1. 安装必要的库 # 2. 数据准备 data = pd.read_csv('data.csv') # 假设数据保存在data.csv文件中 # 3. 数据标准化 data_normalized = (data - data.min()) / (data.max() - data.min()) # 4. 灰色关联度分析 def grey_correlation_analysis(data): n_columns = data.shape[1] corr_matrix = np.zeros((n_columns, n_columns)) for i in range(n_columns): for j in range(n_columns): x = data.iloc[:, i] y = data.iloc[:, j] min_x = np.min(x) max_x = np.max(x) min_y = np.min(y) max_y = np.max(y) delta_x = np.abs(x - x.shift(1)) / (max_x - min_x) delta_y = np.abs(y - y.shift(1)) / (max_y - min_y) rho = 0.5 # 灰色关联系数的权重因子 correlation = np.abs(delta_y - delta_x) / np.abs(delta_y + delta_x + rho) corr_matrix[i, j] = correlation.mean() return corr_matrix corr_matrix = grey_correlation_analysis(data_normalized) # 5. 构建热力图 plt.figure(figsize=(8, 6)) plt.imshow(corr_matrix, cmap='hot', interpolation='nearest') plt.colorbar() plt.xticks(range(data.shape[1]), data.columns) plt.yticks(range(data.shape[1]), data.columns) plt.title('Grey Correlation Analysis Heatmap') plt.show() ``` 请注意,上述代码仅为示例,具体实现可能需要根据你的数据集和需求进行适当调整。希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值