import pandas as pd import numpy as np # 读取数据 data = pd.read_excel('数据.xlsx') # 提取指标列 indicators = data.iloc[1:50:2, 2:].values indicators=pd.DataFrame(indicators) print(indicators) # 数据归一化 normalized_data = (indicators - indicators.min(axis=0)) / (indicators.max(axis=0) - indicators.min(axis=0)) print(normalized_data) # 灰色关联度计算函数 def grey_correlation(x, y): """ 计算两列数据的灰色关联度 :param x: 第一列数据 :param y: 第二列数据 :return: 灰色关联度 """ n = len(x) lambda_value = 0.5 # 灰色关联度衡量因子,默认取0.5 # 累加生成级比累加矩阵 c = np.abs(x - y) c_max, c_min = np.max(c), np.min(c) rho = (c_min + lambda_value * c_max) / (c + lambda_value * c_max) r = np.sum(rho) / n return r # 计算各指标之间的灰色关联度 corr_matrix = np.zeros((len(normalized_data[0]), len(normalized_data[0]))) for i in range(len(normalized_data[0])): for j in range(len(normalized_data[0])): corr_matrix[i, 1] = grey_correlation(normalized_data[:, i], normalized_data[:, j]) # 输出灰色关联度矩阵 print(corr_matrix)
时间: 2024-04-17 22:24:41 浏览: 144
代码中存在一个错误。在计算各指标之间的灰色关联度时,循环中的赋值语句 `corr_matrix[i, 1]` 应改为 `corr_matrix[i, j]`。下面是修改后的代码:
```python
import pandas as pd
import numpy as np
# 读取数据
data = pd.read_excel('数据.xlsx')
# 提取指标列
indicators = data.iloc[1:50:2, 2:].values
indicators = pd.DataFrame(indicators)
print(indicators)
# 数据归一化
normalized_data = (indicators - indicators.min(axis=0)) / (indicators.max(axis=0) - indicators.min(axis=0))
print(normalized_data)
# 灰色关联度计算函数
def grey_correlation(x, y):
"""
计算两列数据的灰色关联度
:param x: 第一列数据
:param y: 第二列数据
:return: 灰色关联度
"""
n = len(x)
lambda_value = 0.5 # 灰色关联度衡量因子,默认取0.5
# 累加生成级比累加矩阵
c = np.abs(x - y)
c_max, c_min = np.max(c), np.min(c)
rho = (c_min + lambda_value * c_max) / (c + lambda_value * c_max)
r = np.sum(rho) / n
return r
# 计算各指标之间的灰色关联度
corr_matrix = np.zeros((len(normalized_data[0]), len(normalized_data[0])))
for i in range(len(normalized_data[0])):
for j in range(len(normalized_data[0])):
corr_matrix[i, j] = grey_correlation(normalized_data[:, i], normalized_data[:, j])
# 输出灰色关联度矩阵
print(corr_matrix)
```
这样修改后,代码将正确计算各指标之间的灰色关联度,并输出灰色关联度矩阵。
阅读全文