求python 熵值法实现代码一、基本原理
在信息论中,熵是对不确定性的一种度量 。信息量越大,不确定性就越?。?熵也就越?。恍畔⒘吭叫 。?不确定性越大,熵也越大 。
根据熵的特性 , 可以通过计算熵值来判断一个事件的随机性及无序程度,也可以用熵值来判断某个指标的离散程度,指标的离散程度越大,该指标对综合评价的影响(权重)越大 , 其熵值越小 。
二、熵值法步骤
1. 选取n个国家 , m个指标,则为第i个国家的第j个指标的数值(i=1, 2…, n; j=1,2,…, m);
2. 指标的归一化处理:异质指标同质化
由于各项指标的计量单位并不统一 , 因此在用它们计算综合指标前,先要对它们进行标准化处理 , 即把指标的绝对值转化为相对值,并令,从而解决各项不同质指标值的同质化问题 。而且,由于正向指标和负向指标数值代表的含义不同(正向指标数值越高越好,负向指标数值越低越好) , 因此,对于高低指标我们用不同的算法进行数据标准化处理 。其具体方法如下:
正向指标:
负向指标:
则为第i个国家的第j个指标的数值(i=1, 2…, n; j=1, 2,…, m) 。为了方便起见,归一化后的数据仍记为;
3. 计算第j项指标下第i个国家占该指标的比重:
4. 计算第j项指标的熵值:
其中. 满足;
5. 计算信息熵冗余度:
6. 计算各项指标的权值:
7. 计算各国家的综合得分:
[code]function [s,w]=shang(x)
% 函数shang.m, 实现用熵值法求各指标(列)的权重及各数据行的得分
% x为原始数据矩阵, 一行代表一个国家, 每列对应一个指标
% s返回各行得分, w返回各列权重
[n,m]=size(x); % n=23个国家, m=5个指标
%% 数据的归一化处理
% Matlab2010b,2011a,b版本都有bug,需如下处理. 其它版本直接用[X,ps]=mapminmax(x',0,1);即可
[X,ps]=mapminmax(x');
ps.ymin=0.002; % 归一化后的最小值
ps.ymax=0.996; % 归一化后的最大值
ps.yrange=ps.ymax-ps.ymin; % 归一化后的极差,若不调整该值, 则逆运算会出错
X=mapminmax(x',ps);
% mapminmax('reverse',xx,ps); % 反归一化, 回到原数据
X=X';% X为归一化后的数据, 23行(国家), 5列(指标)
%% 计算第j个指标下 , 第i个记录占该指标的比重p(i,j)
for i=1:n
for j=1:m
p(i,j)=X(i,j)/sum(X(:,j));
end
end
%% 计算第j个指标的熵值e(j)
k=1/log(n);
for j=1:m
e(j)=-k*sum(p(:,j).*log(p(:,j)));
end
d=ones(1,m)-e;% 计算信息熵冗余度
w=d./sum(d);% 求权值w
s=w*p';% 求综合得分[\code]
测试程序:
data.txt 数据如下:
114.6 1.1 0.71 85.0 346
55.3 0.96 0.4 69.0 300
132.4 0.97 0.54 73.0 410
152.1 1.04 0.49 77.0 433
103.5 0.96 0.66 67.0 385
81.0 1.08 0.54 96.0 336
179.3 0.88 0.59 89.0 446
29.8 0.83 0.49 120.0 289
92.7 1.15 0.44 154.0 300
248.6 0.79 0.5 147.0 483
115.0 0.74 0.65 252.0 453
64.9 0.59 0.5 167.0 402
163.6 0.85 0.58 220.0 495
【计算熵函数python python熵值法计算权重】95.7 1.02 0.48 160.0 384
139.5 0.70 0.59 217.0 478
89.9 0.96 0.39 105.0 314
76.7 0.95 0.51 162.0 341
121.8 0.83 0.60 140.0 401
42.1 1.08 0.47 110.0 326
78.5 0.89 0.44 94.0 280
77.8 1.19 0.57 91.0 364
90.0 0.95 0.43 89.0 301
100.6 0.82 0.59 83.0 456
执行代码:
[code]x=load('data.txt');% 读入数据
[s,w]=shang(x)[\code]
运行结果:
s =
Columns 1 through 9
0.04310.01030.03710.04040.03690.03220.05070.02290.0397
Columns 10 through 18
0.06930.08780.04660.08600.05030.08000.02340.04560.0536
Columns 19 through 23
0.02720.01810.03640.02020.0420
w =
0.16600.09810.17570.33480.2254
提取颜色特征并计算熵,使用python实现正好学到这,练下手 。比较晚了 , 所以写的比较简单,不明白了明天再说
交叉熵损失函数是什么?平滑函数 。
交叉熵损失函数 , 也称为对数损失或者logistic损失 。当模型产生了预测值之后,将对类别的预测概率与真实值(由0或1组成)进行不比较,计算所产生的损失 , 然后基于此损失设置对数形式的惩罚项 。
在神经网络中,所使用的Softmax函数是连续可导函数,这使得可以计算出损失函数相对于神经网络中每个权重的导数(在《机器学习数学基础》中有对此的完整推导过程和案例,这样就可以相应地调整模型的权重以最小化损失函数 。
扩展资料:
注意事项:
当预测类别为二分类时,交叉熵损失函数的计算公式如下图,其中y是真实类别(值为0或1),p是预测类别的概率(值为0~1之间的小数) 。
计算二分类的交叉熵损失函数的python代码如下图,其中esp是一个极小值 , 第五行代码clip的目的是保证预测概率的值在0~1之间,输出的损失值数组求和后,就是损失函数最后的返回值 。
参考资料来源:百度百科-交叉熵
参考资料来源:百度百科-损失函数
关于计算熵函数python和python熵值法计算权重的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- 安卓大师摄影主题桌面设计,安卓专业摄影
- 模拟厅游戏,模拟游戏推荐
- g510怎么更换显卡,g510加装固态硬盘教程
- 怎么能把mysql卸干净 mysql80如何卸载干净
- 最恐怖的20个sap,十大最恐怖的
- html5下拉框可编辑,html5下拉框可输入
- c语言的一个函数 在c语言中一个函数有哪几部分组成
- oracle数据库表单备份文件后缀名,oracle数据库备份格式
- html5有哪些新特性,html5有哪些新特性和优点