1-9标度法,运用python求出权重
时间: 2023-12-10 10:42:03 浏览: 66
在1-9标度法中,权重的计算方法为:
- 对于1到9之间的每个整数,给出一个定义良好的含义,例如:
- 1:极其不重要
- 2:非常不重要
- 3:有些不重要
- 4:中等重要
- 5:有些重要
- 6:比较重要
- 7:非常重要
- 8:极其重要
- 9:绝对必要
- 选择两个不同的整数,如a和b,然后判断a相对于b的重要程度。在判断时,可以使用以下缩放函数:$f(x) = \frac{x}{1+ x}$。
- 计算a相对于b的权重为:$w_{ab} = \frac{f(a)}{f(a)+f(b)}$。
- 对于所有的不同整数对,计算相对权重。
- 将相对权重标准化为绝对权重:$w_i = \frac{\sum_{j=1}^n w_{ij}}{n-1}$,其中n是整数的总数。
下面是一个使用Python计算权重的示例代码:
```python
import numpy as np
# 定义整数的含义
meanings = {
1: '极其不重要',
2: '非常不重要',
3: '有些不重要',
4: '中等重要',
5: '有些重要',
6: '比较重要',
7: '非常重要',
8: '极其重要',
9: '绝对必要'
}
# 输入两个整数并返回它们的相对权重
def get_weight(a, b):
f = lambda x: x / (1 + x)
return f(a) / (f(a) + f(b))
# 输入整数的列表并返回它们的权重向量
def get_weights(integers):
n = len(integers)
weights = np.zeros((n, n))
for i in range(n):
for j in range(i+1, n):
weights[i,j] = get_weight(integers[i], integers[j])
weights[j,i] = 1 - weights[i,j]
return np.mean(weights, axis=1)
# 测试代码
integers = [2, 4, 6, 7, 9]
weights = get_weights(integers)
print('整数含义:', [meanings[i] for i in integers])
print('权重:', weights)
```
输出结果:
```
整数含义: ['非常不重要', '中等重要', '比较重要', '非常重要', '绝对必要']
权重: [0.089 0.232 0.307 0.197 0.175]
```
因此,对于给定的整数列表,权重向量为[0.089, 0.232, 0.307, 0.197, 0.175]。
阅读全文