python 层次分析法 多层权重
时间: 2023-10-29 10:57:47 浏览: 60
在Python中,可以使用层次分析法来计算多层权重。下面是一个示例代码:
```python
import numpy as np
# 构造判断矩阵
judgment_matrix = np.array([[1, 3, 5],
[1/3, 1, 2],
[1/5, 1/2, 1]])
# 计算相对权重
eigenvalues, eigenvectors = np.linalg.eig(judgment_matrix)
max_eigenvalue_index = np.argmax(eigenvalues)
weights = eigenvectors[:, max_eigenvalue_index / np.sum(eigenvectors[:, max_eigenvalue_index])
# 进行一致性检验
consistency_ratio = (np.max(eigenvalues) - judgment_matrix.shape - 1)
if consistency_ratio < 0.1:
# 通过一致性检验,计算权重
final_weights = weights
# 根据权重进行排序
sorted_indices = np.argsort(final_weights)[::-1]
sorted_weights = final_weights
相关问题
python层次分析法确定权重代码
层次分析法(AHP)是一种用于决策分析的方法,可以帮助我们确定各个因素的权重。下面是使用Python实现AHP的示例代码:
```python
import numpy as np
# 定义判断矩阵
A = np.array([[1, 3, 5],
[1/3, 1, 3],
[1/5, 1/3, 1]])
# 计算每列的平均值
col_avg = np.mean(A, axis=0)
# 计算归一化矩阵
norm_A = A / col_avg
# 计算每行的平均值
row_avg = np.mean(norm_A, axis=1)
# 计算权重
weight = row_avg / np.sum(row_avg)
print(weight)
```
在这个例子中,我们定义了一个3x3的判断矩阵A,其中每个元素表示对应因素之间的重要性比较。然后,我们计算每列的平均值,得到一个向量,用于归一化判断矩阵。接着,我们计算每行的平均值,用于确定每个因素的权重。最后,我们将每个权重除以它们的总和,得到一个归一化的权重向量。
需要注意的是,AHP方法的结果可能会受到判断矩阵的选择和数据质量的影响。因此,在使用AHP方法进行决策分析时,需要谨慎选择和处理数据。
层次分析法求权重python
以下是使用层次分析法求权重的Python代码:
```python
import pandas as pd
import numpy as np
# 按指定路径导入判断矩阵(文件路径需按实际情况更换)
matrix = pd.read_excel(r'C:/Users/AROUS/Desktop/综合评价数据.xlsx', index_col='判断矩阵', sheet_name='层次分析')
# 计算判断矩阵的特征向量
eig_val, eig_vec = np.linalg.eig(matrix)
max_eig_val = max(eig_val)
max_eig_val_index = np.where(eig_val == max_eig_val)[0][0]
weight = eig_vec[:, max_eig_val_index] / sum(eig_vec[:, max_eig_val_index])
# 输出权重
print('权重为:')
for i in range(len(weight)):
print(matrix.index[i], ':', weight[i])
```
其中,`matrix`是一个判断矩阵,`eig_val`和`eig_vec`分别是判断矩阵的特征值和特征向量,`max_eig_val`是特征值中的最大值,`max_eig_val_index`是最大特征值对应的特征向量的下标,`weight`是计算得到的权重向量。