我想要一个层次分析法求多指标权重的python代码
时间: 2024-02-04 20:03:48 浏览: 70
好的,以下是一个使用层次分析法计算多指标权重的Python代码:
```python
import numpy as np
# 定义一个函数来计算权重
def get_weight(data):
# 构建判断矩阵
n = len(data)
A = np.zeros((n, n))
for i in range(n):
for j in range(n):
A[i][j] = data[i] / data[j]
# 计算特征向量
w, v = np.linalg.eig(A)
idx = w.argmax()
w = v[:, idx].real
w = w / w.sum()
return w
# 例子,假设我们有三个指标,分别为a、b、c
# 我们需要对它们进行比较,得到它们的权重
# 构建判断矩阵
data = [1, 2, 5]
w = get_weight(data)
print(w)
```
在这个例子中,我们构建了一个3x3的判断矩阵,其中第i行第j列表示指标i与指标j的比较。在这个例子中,我们假设a比b重要,b比c重要,a比c更重要。因此,判断矩阵如下:
```
[[1 1/2 1/5]
[2 1 1/2]
[5 2 1]]
```
然后,我们计算该判断矩阵的特征向量,并将其归一化,以获得每个指标的权重。在这个例子中,得到的权重为:
```
[0.722, 0.239, 0.039]
```
这意味着,a的权重为0.722,b的权重为0.239,c的权重为0.039。
阅读全文