微信用户_o2ILX55a_b014be06
2024-08-24 16:44关于熵权法的具体实现?
根据https://www.spsspro.com/help/ewm/?utm_source=baidu-ss 提出的熵权法,写出py代码,无法复现spsspro现在解出的数据,import pandas as pd import numpy as np
读取 Excel 文件
file_path = 'D:\建模\归一化1.xlsx' data = pd.read_excel(file_path)
提取数据列
columns = ['max', 'sum', '供货次数', '率', '平均距离'] data = data[columns]
对数据进行归一化处理
def normalize(df): min_val = df.min() max_val = df.max() return (df - min_val) / (max_val - min_val)
归一化后的数据
normalized_data = data.apply(normalize)
计算熵值
def calculate_entropy(column): n = len(column) p = column / column.sum()
避免对数计算零值,添加一个非常小的值
entropy = -np.sum(p * np.log(p + 1e-10))
k = 1 / np.log(n)
return k * entropy
计算每个指标的熵值
entropy_values = normalized_data.apply(calculate_entropy)
计算熵值冗余度
redundancy = 1 - entropy_values
计算权重
weights = redundancy / redundancy.sum()
将权重转换为百分比形式
weights_percentage = weights * 100
计算综合得分
def calculate_scores(normalized_data, weights): return (normalized_data * weights).sum(axis=1)
scores = calculate_scores(normalized_data, weights)
输出结果
print("归一化后的数据:") print(normalized_data) print("\n熵值:") print(entropy_values) print("\n熵值冗余度:") print(redundancy) print("\n指标权重(百分比):") print(weights_percentage) print("\n综合得分:") print(scores) ,这是我的求值指标权重(百分比): max 48.685018 sum 40.940942 供货次数 8.986705 率 1.211559 平均距离 0.175777, 以下是平台给出的求值,权重(%) 45.032 42.192 11.347 1.017 0.413,这是为什么,需要解答
1个回答
- 默认排序
- 时间排序
- 我下载的SPSSPRO客户端一直打不开, 更换了Windows的英文账号也不行,一直停留在正在加载界面?
- 纸质版证书最后一个填写邮箱地址的必须要学校邮政地址吗?可以填写自己的邮箱吗?
- 为什么充完会员后平台自带的那些模型就不能用了,一点开全空白,不是网的问题刷新了很多遍!?
- 为什么差分阶数是2阶平稳,自动寻优是arima(112)啊,?
- SPSS最后一项添加或更改操作未完成,并且将被抛弃。是什么原因?
- 为什么下载全部数据没有下载按钮,只有复制,但是复制的也是没有显示全的数据?
- SARIMA模型取优结果问题?
- 为什么没有固定效应模型?
- 聚类分析结果有bug,我用23个指标聚成10类,只显示14个指标的中心值?
- 为什么决策树的数据扩大10倍之后出来的图跟原数据不一样啊?有办法可以一样吗?