楼主: 1790605268
4396 30

[学习资料] Python与学术研究系列---第2期.自制熵值法exe程序(无需打开excel复制数据) [推广有奖]

11
1790605268 学生认证  发表于 2021-9-6 12:08:22
1jian.fun 发表于 2021-9-6 10:07
谢谢分享
感谢您的认可

12
Edward6206 发表于 2021-9-6 13:49:26

13
540148604 发表于 2021-9-6 18:51:54 来自手机
真的好用,作者太棒了,顶!!!

14
myazure 发表于 2021-9-6 20:06:53

15
1790605268 学生认证  发表于 2021-9-6 20:22:22
想要体验的抓紧时间了,一元限购最后几个小时~~~~

16
512661101 发表于 2021-9-7 10:55:51

17
bzm100 发表于 2021-9-7 20:17:24

18
1790605268 学生认证  发表于 2021-9-7 23:03:32 来自手机
我第一期分享的标准化exe大家有需要也可以去看看,考虑正负向指标。

19
1790605268 学生认证  发表于 2021-9-8 10:24:31
前几日比较忙,没能把具体代码做一个分享,下面我就程序核心代码做一个讲解,也算是交流学习。如果有大神能提供更好的算法欢迎留言交流~~~~
  1. d=[]
  2. for i in list(data.columns):
  3.     #构造列之和
  4.     sum1=data[i].sum()
  5.     a1=[];a2=[]
  6.     #制造矩阵1:每个单元格与列之和相除
  7.     for j in data[i]:
  8.         a1.append(j/sum1)
  9.     data[i]=a1
  10.     #制造矩阵2:将除完的列再取对数
  11.     jiancha=1
  12.     for k in data[i]:
  13.         jiancha+=1
  14.         try:
  15.             a2.append(math.log(k,math.e))
  16.         except:
  17.             print("数据中存有为零的数值,请检查后再使用。检查提示:"+str(i)+'变量中第'+str(jiancha)+'行')
  18.     lndata[i]=a2
  19.     #制造矩阵3:将矩阵1的列与矩阵2的列相乘
  20.     data[i]=data[i]*lndata[i]
  21.     d.append(1-f*data[i].sum())
复制代码
这一串代码,就是熵值法中最核心的计算:我通过构造一个大循环嵌套两个小循环完成计算。主要思路就是取出一列原数据a1算他们的和,算完后立马让这一列a1每一个单元格除这一列的和,由此构成一个新的列a2,再对a2直接取对数得到新的列a3,最后用a2*a3得到新的列a4,通过外循环让每一列原数据经过这种计算得到一个新矩阵。其中try是用于检测是否存在0值,别切能够锁定列,但是想要知道行数我这里设置了一个递增的jiancha变量,每循环一次加一可以用来表示行数,目前没想到别的办法。

20
rsp444150 发表于 2021-9-8 11:01:09
首先没有标准化的过程,计算熵值法使用的全是标准化后的数据,程序只能手动改是0的数据?只能计算出权重还要手动评分?不能看到计算过程怎么知道没问题,不明白“自动”的价值在哪里

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2025-12-25 03:22