TOPSIS+熵权法 python实现
时间: 2023-08-07 09:02:47 浏览: 176
熵权TOPSIS的Python代码
要在Python中实现TOPSIS和熵权法,你可以按照以下步骤进行操作:
1. 导入所需的库:
```python
import numpy as np
from sklearn.preprocessing import minmax_scale
```
2. 定义数据处理函数:
```python
def data_process(X, normalization_range):
# 归一化处理
X_normalized = minmax_scale(X, feature_range=normalization_range)
return X_normalized
```
3. 定义熵权法计算函数:
```python
def entropy_weight(X_normalized):
# 计算每个指标的熵值
entropy = -np.sum(X_normalized * np.log(X_normalized), axis=0)
# 计算每个指标的权重
weight = (1 - entropy) / np.sum(1 - entropy)
return weight
```
4. 定义TOPSIS计算函数:
```python
def topsis(X_normalized, weight):
# 计算最优方案和最劣方案
ideal_best = np.max(X_normalized, axis=0)
ideal_worst = np.min(X_normalized, axis=0)
# 计算各评价对象与最优方案和最劣方案的距离
distance_best = np.sqrt(np.sum((X_normalized - ideal_best) ** 2, axis=1))
distance_worst = np.sqrt(np.sum((X_normalized - ideal_worst) ** 2, axis=1))
# 计算各评价对象与最优方案的相对接近程度
relative_closeness = distance_worst / (distance_best + distance_worst)
# 根据相对接近程度排序
sorted_index = np.argsort(relative_closeness)
sorted_S = relative_closeness\[sorted_index\]
return sorted_S, sorted_index
```
5. 调用函数进行计算:
```python
# 第一步:导入数据
X = np.load('data_water_quality.npy')
# 第二步:数据处理
X_normalized = data_process(X, (0, 1))
# 第三步:熵权法计算
weight = entropy_weight(X_normalized)
# 第四步:TOPSIS法计算
sorted_S, sorted_index = topsis(X_normalized, weight)
```
这样,你就可以在Python中实现TOPSIS和熵权法了。请注意,这只是一个简单的实现示例,你可能需要根据你的具体需求进行适当的修改和调整。
#### 引用[.reference_title]
- *1* *2* *3* [TOPSIS和熵权法的应用(Matlab实现,包括数据预处理)](https://blog.csdn.net/qq_43650421/article/details/121024826)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文