熵权topsispython代码
时间: 2023-07-29 08:13:16 浏览: 117
熵权TOPSIS的Python代码
这里是一个使用Python实现熵权TOPSIS方法的代码示例:
```python
import numpy as np
def topsis(data, weights):
# 归一化处理
normalized_data = data / np.sqrt(np.sum(data**2, axis=0))
# 计算正理想解和负理想解
positive_ideal = np.max(normalized_data, axis=1)
negative_ideal = np.min(normalized_data, axis=1)
# 计算距离到正理想解和负理想解的欧氏距离
positive_distance = np.sqrt(np.sum((normalized_data - positive_ideal[:, np.newaxis])**2, axis=1))
negative_distance = np.sqrt(np.sum((normalized_data - negative_ideal[:, np.newaxis])**2, axis=1))
# 计算综合评分
performance = negative_distance / (positive_distance + negative_distance)
# 按照综合评分排序
sorted_indices = np.argsort(performance)[::-1]
return sorted_indices
# 示例数据
data = np.array([[3, 4, 5],
[2, 6, 8],
[4, 3, 9],
[5, 2, 7]])
# 权重向量
weights = np.array([0.4, 0.3, 0.3])
# 调用TOPSIS方法
sorted_indices = topsis(data, weights)
print("排序结果:")
for idx in sorted_indices:
print(f"数据 {idx+1}: {data[idx]}")
```
在上面的代码中,`data`是一个二维数组,表示待评估的数据,每一行代表一个样本,每一列代表一个评价指标。`weights`是一个一维数组,表示每个指标的权重。函数`topsis`会返回按照综合评分排序后的样本索引。
请注意,这只是一个简单的示例代码,你可以根据自己的需求进行修改和扩展。
阅读全文