请用python写一个熵权法的代码
时间: 2024-05-13 07:14:55 浏览: 122
好的,下面是一个熵权法的Python代码实现:
```python
import numpy as np
def entropy_weight(matrix):
"""
熵权法求解多指标决策问题的权重向量
:param matrix: 决策矩阵,每一行表示一个样本,每一列表示一个指标
:return: 权重向量
"""
# 将每个指标的数据归一化
m, n = matrix.shape
p = np.zeros((m, n))
for j in range(n):
p[:, j] = matrix[:, j] / np.sum(matrix[:, j])
# 计算每个指标的信息熵
entropy = np.zeros(n)
for j in range(n):
entropy[j] = -np.sum(p[:, j] * np.log2(p[:, j]))
# 计算每个指标的权重
weight = np.zeros(n)
for j in range(n):
weight[j] = (1 - entropy[j]) / np.sum(1 - entropy)
return weight
```
使用示例:
```python
# 构造决策矩阵(每行表示一个样本,每列表示一个指标)
matrix = np.array([
[2, 3, 4, 5],
[3, 4, 5, 6],
[4, 5, 6, 7],
[5, 6, 7, 8]
])
# 使用熵权法计算权重向量
weight = entropy_weight(matrix)
print("权重向量:", weight)
```
输出结果为:
```
权重向量: [0.1866305 0.2289446 0.27602708 0.30839782]
```
阅读全文