1-熵值法赋权
轉(zhuǎn)載:https://blog.csdn.net/zhanghao12_34/article/details/79406211
一、基本原理?
在信息論中,熵是對不確定性的一種度量。信息量越大,不確定性就越小,熵也就越小;信息量越小,不確定性越大,熵也越大。 根據(jù)熵的特性,可以通過計算熵值來判斷一個事件的隨機性及無序程度,也可以用熵值來判斷某個指標(biāo)的離散程度,指標(biāo)的離散程度越大,該指標(biāo)對綜合評價的影響(權(quán)重)越大,其熵值越小。?
二、熵值法步驟?
1. 選取n個國家,m個指標(biāo),則為第i個國家的第j個指標(biāo)的數(shù)值(i=1, 2…,?n;?j=1,2,…,?m);?
2. 指標(biāo)的歸一化處理:異質(zhì)指標(biāo)同質(zhì)化?
由于各項指標(biāo)的計量單位并不統(tǒng)一,因此在用它們計算綜合指標(biāo)前,先要對它們進行標(biāo)準(zhǔn)化處理,即把指標(biāo)的絕對值轉(zhuǎn)化為相對值,并令,從而解決各項不同質(zhì)指標(biāo)值的同質(zhì)化問題。而且,由于正向指標(biāo)和負向指標(biāo)數(shù)值代表的含義不同(正向指標(biāo)數(shù)值越高越好,負向指標(biāo)數(shù)值越低越好),因此,對于高低指標(biāo)我們用不同的算法進行數(shù)據(jù)標(biāo)準(zhǔn)化處理。其具體方法如下: 正向指標(biāo): 負向指標(biāo): 則為第i個國家的第j個指標(biāo)的數(shù)值(i=1, 2…,?n;?j=1, 2,…,?m)。為了方便起見,歸一化后的數(shù)據(jù)仍記為;?
3. 計算第j項指標(biāo)下第i個國家占該指標(biāo)的比重:?
4. 計算第j項指標(biāo)的熵值: 其中. 滿足;?
5. 計算信息熵冗余度:?
6. 計算各項指標(biāo)的權(quán)值:?
7. 計算各國家的綜合得分:?
function [s, w] = shang(x) % x為原始數(shù)據(jù)矩陣, 一行代表一個記錄, 每列對應(yīng)一個指標(biāo) % s各行得分, w各列權(quán)重 [n,m]=size(x); % n=23個記錄, m=5個指標(biāo) % 數(shù)據(jù)的歸一化處理 % 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; % 歸一化后的極差,若不調(diào)整該值, 則逆運算會出錯 X=mapminmax(x',ps); % mapminmax('reverse',xx,ps); % 反歸一化, 回到原數(shù)據(jù) % [X,ps]=mapminmax(x',0,1); X=X'; % X為歸一化后的數(shù)據(jù), 23行, 5列(指標(biāo)) % 計算第j個指標(biāo)下,第i個記錄占該指標(biāo)的比重p(i,j) for i=1:nfor j=1:mp(i,j)=X(i,j)/sum(X(:,j));end end % 計算第j個指標(biāo)的熵值e(j) k=1/log(n); for j=1:me(j)=-k*sum(p(:,j).*log(p(:,j))); end d=ones(1,m)-e; % 計算信息熵冗余度 w=d./sum(d); % 求權(quán)值w s=w*p'; % 求綜合得分 end測試程序:
data.txt?數(shù)據(jù)如下:
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?
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
執(zhí)行代碼:
[code]x=load('data.txt');??%?讀入數(shù)據(jù) [s,w]=shang(x)[\code]
運行結(jié)果:
s =
??Columns 1 through 9
? ? 0.0431? ? 0.0103? ?0.0371? ? 0.0404? ? 0.0369? ? 0.0322? ?0.0507? ? 0.0229? ? 0.0397
??Columns 10 through 18
? ? 0.0693? ? 0.0878? ?0.0466? ? 0.0860? ? 0.0503? ? 0.0800? ?0.0234? ? 0.0456? ? 0.0536
??Columns 19 through 23
? ? 0.0272? ? 0.0181? ?0.0364? ? 0.0202? ? 0.0420
w =
? ? 0.1660? ? 0.0981? ?0.1757? ? 0.3348? ? 0.2254
?
轉(zhuǎn)載于:https://www.cnblogs.com/zhumengdexiaobai/p/9491484.html
《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
- 上一篇: 前端开发之JavaScript基础篇四
- 下一篇: nginx+keepalived高可用及