topsis熵权法python案例
时间: 2023-08-18 09:13:34 浏览: 262
熵权法python
3星 · 编辑精心推荐
当然,我可以为您提供一个基于Python的TOPSIS(Technique for Order of Preference by Similarity to Ideal Solution)熵权法的案例。
首先,您需要安装NumPy和Pandas库,因为我们将使用它们来进行数据处理和计算。您可以使用以下命令安装这些库:
```
pip install numpy pandas
```
下面是一个示例代码,展示了如何使用TOPSIS熵权法对一个给定的决策矩阵进行排序:
```python
import numpy as np
import pandas as pd
def topsis(df):
# 数据预处理
normalized_matrix = df.iloc[:, 1:].values / np.sqrt(np.sum(df.iloc[:, 1:].values**2, axis=0))
weights = df.iloc[:, 0].values / np.sum(df.iloc[:, 0].values)
# 计算正理想解和负理想解
positive_ideal_solution = np.max(normalized_matrix, axis=0)
negative_ideal_solution = np.min(normalized_matrix, axis=0)
# 计算距离
positive_distances = np.sqrt(np.sum((normalized_matrix - positive_ideal_solution)**2, axis=1))
negative_distances = np.sqrt(np.sum((normalized_matrix - negative_ideal_solution)**2, axis=1))
# 计算相对接近度
closeness = negative_distances / (positive_distances + negative_distances)
# 排序并返回结果
df['Closeness'] = closeness
df.sort_values(by='Closeness', ascending=False, inplace=True)
return df
# 示例数据
data = {
'Criteria': ['C1', 'C2', 'C3', 'C4'],
'A1': [3, 2, 5, 4],
'A2': [4, 6, 8, 7],
'A3': [2, 4, 6, 5],
'A4': [5, 7, 9, 8]
}
# 创建DataFrame
df = pd.DataFrame(data)
# 调用TOPSIS函数
result = topsis(df)
# 打印排序结果
print(result)
```
在以上示例中,我们使用一个4个决策准则和4个方案的示例数据。您可以根据自己的需求修改决策准则和方案的数量和值。
希望这个案例对您有所帮助!如有任何疑问,请随时提问。
阅读全文