西安网站群公司,网站开发基础课程,邢台网,临沂网站公众号建设#x1f506; 文章首发于我的个人博客#xff1a;欢迎大佬们来逛逛
熵权法
构建原始矩阵 D a t a Data Data 形状为 m ∗ n m *n m∗n #xff0c;其中 m m m 为评价对象#xff0c; n n n 为评价指标。对 D a t a Data Data矩阵的指标进行正向化处理#xff0c;得到… 文章首发于我的个人博客欢迎大佬们来逛逛
熵权法
构建原始矩阵 D a t a Data Data 形状为 m ∗ n m *n m∗n 其中 m m m 为评价对象 n n n 为评价指标。对 D a t a Data Data矩阵的指标进行正向化处理得到矩阵 X X X.计算每一个指标在每一个对象下的所占该指标的比重然后我们便得到了变异值矩阵 P P P p i j Y y ¨ ∑ i 1 m Y i j , i 1 , ⋯ , m , j 1 , ⋯ , n \begin{aligned}p_{ij}\frac{Y_{\ddot{y}}}{\sum_{i1}^m Y_{ij}},i1,\cdots,m,j1,\cdots,n\end{aligned} pij∑i1mYijYy¨,i1,⋯,m,j1,⋯,n
求各指标的信息熵 E E E E j − ln ( m ) − 1 ∑ i 1 m p i j ln p i j E_j-\ln(m)^{-1}\sum_{i1}^mp_{ij}\ln p_{ij} Ej−ln(m)−1i1∑mpijlnpij
通过信息熵计算各个指标的权重 W W W 其中 k k k 是指标的个数即 k n k n kn w j 1 − E j k − Σ E j ( j 1 , 2 , … , n ) w_j\dfrac{1-E_j}{k-\Sigma E_j}(j1,2,\ldots,n) wjk−ΣEj1−Ej(j1,2,…,n)
也可以通过计算信息冗余度来计算权重 W W W本代码采取这种方法 D j 1 − E j w j D j ∑ j 1 m D j \begin{aligned}D_j1-E_j\\\\w_j\frac{D_j}{\sum_{j1}^mD_j}\end{aligned} Djwj1−Ej∑j1mDjDj
计算每一个对象的最终得分 Z i ∑ j 1 n X i j W j i ∈ ( 1 , 2 , 3 , . . . m ) Z_{i}\mathrm{}\sum_{j1}^{n}X_{ij}W_{j}i\in(1,2,3, ... m) Zij1∑nXijWji∈(1,2,3,...m)
代码实现
function [Score,W]mfunc_entropyMethod(data)% 熵权法求解每个指标的权重% paramts: % data: 原始数据矩阵,(m,n) m为评价对象n为评价指标% returns:% Score每个评价对象的综合得分% W: 所有指标的权重%数据标准化到0.002-1区间data2mapminmax(data,0.002,1);data2data2;%得到信息熵[m,n]size(data2); % m个对象n个指标pzeros(m,n);for j1:n% 计算第j列的每一列指标在该指标中所占的比例p(:,j)data2(:,j)/sum(data2(:,j));end for j1:n% 计算每个指标的信息熵E(j)-1/log(m)*sum(p(:,j).*log(p(:,j)));end%计算权重W(1-E)/sum(1-E); % 通过信息冗余度计算%计算得分sdata2*W;Score100*s/max(s);
end