TOPSIS Python 代码
时间: 2024-05-24 22:08:28 浏览: 213
TOPSIS(Technique for Order Preference by Similarity to Ideal Solution)是一种多属性决策分析方法,它可以用来评价一组备选方案,从而确定最佳方案。在Python中,我们可以使用numpy库和pandas库实现TOPSIS算法。
以下是一份简单的TOPSIS Python代码示例:
```python
import numpy as np
import pandas as pd
# 数据预处理
data = pd.read_csv('data.csv') # 读入数据
X = data.iloc[:, 1:].values # 取得数据矩阵
w = [0.25, 0.25, 0.25, 0.25] # 权重向量
n = X.shape # 样本数量
m = X.shape # 属性数量
# 归一化矩阵
for j in range(m):
X[:, j] = X[:, j] / np.sqrt(sum(X[:, j] ** 2))
# 确定最优与最劣方案
ideal_best = []
ideal_worst = []
for j in range(m):
if data['优化指标'][j] == 'max':
ideal_best.append(max(X[:, j]))
ideal_worst.append(min(X[:, j]))
else:
ideal_best.append(min(X[:, j]))
ideal_worst.append(max(X[:, j]))
# 计算距离
S_best = np.sqrt(np.sum((X - ideal_best) ** 2, axis=1))
S_worst = np.sqrt(np.sum((X - ideal_worst) ** 2, axis=1))
# 计算相对接近度
C = S_worst / (S_best + S_worst)
# 输出排序结果
rank = pd.DataFrame({'方案名称': data['方案名称'], 'C值': C})
rank = rank.sort_values(by='C值', ascending=False)
print(rank)
```
以上代码中,我们首先读入数据并处理成样本矩阵。然后,我们使用权重向量将数据矩阵归一化。接下来,我们确定最优与最劣方案,并计算每个备选方案到最优方案和最劣方案的距离。最后,我们计算每个备选方案的相对接近度,并按照相对接近度从大到小进行排序输出结果。
阅读全文