数学建模之熵权法(EWM)matlab实例实现

这篇具有很好参考价值的文章主要介绍了数学建模之熵权法(EWM)matlab实例实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文参考http://blog.sina.com.cn/s/blog_710e9b550101aqnv.html

熵权法是一种客观赋值的方法,即它通过数据所包含的信息量来确定权重,形象的说如果每个人考试都能考100分,那么这个指标对于这些人的评价是毫无意义的,因为没有任何区分度,熵权法就是通过区分度来确定对于特征的权值,从而能够对事物进行综合的评价。

一般来说,若某个指标的信息熵指标权重确定方法之熵权法越小,表明指标值得变异程度越大,提供的信息量越多,在综合评价中所能起到的作用也越大,其权重也就越大。相反,某个指标的信息熵指标权重确定方法之熵权法越大,表明指标值得变异程度越小,提供的信息量也越少,在综合评价中所起到的作用也越小,其权重也就越小。

基于此熵权法步骤如下:

首先需要将数据标准化即让数据分布在0-1之间,方式有多种
例如归一化,即 当前特征元素-当前特征列的最小值/当前特征列的最大值-当前特征列的最小值(本文采用此方法):
数学建模之熵权法(EWM)matlab实例实现
或者标准化
数学建模之熵权法(EWM)matlab实例实现

然后计算各指标的信息熵
pij表示的是当前元素在当前特征列的占比
Ej代表此特征的信息熵
且规定0ln0 = 0
数学建模之熵权法(EWM)matlab实例实现

最后就是确定各指标的权重
由于信息熵越大,其所代表的数据不确定性越大
因此信息熵越小,代表其区分度越高,即说明此特征越重要
因此需要1-Ei来获取对应特征的实际重要程度
再通过除以所有特征重要程度之和,即能计算出,此特征在所有特征中的重要程度占比,从而计算出对应特征的权重。
数学建模之熵权法(EWM)matlab实例实现

下边展示一道例题:
数学建模之熵权法(EWM)matlab实例实现
由于从题目中能够看出,各指标都是正向指标,因此最终特征值*特征权重求和也都是包含正向因素,值越大代表评价越高,但是如果包含负向评价的话,我认为,可能特征值取反应该就能转变成正向评价了吧。

第一步先进行归一化处理

data = [100,90,100,84,90,100,100,100,100
    100,100,78.6,100,90,100,100,100,100
    75,100,85.7,100,90,100,100,100,100
    100,100,78.6,100,90,100,94.4,100,100
    100,90,100,100,100,90,100,100,80
    100,100,100,100,90,100,100,85.7,100
    100,100,78.6,100,90,100,55.6,100,100
    87.5,100,85.7,100,100,100,100,100,100
    100,100,92.9,100,80,100,100,100,100
    100,90,100,100,100,100,100,100,100
    100,100,92.9,100,90,100,100,100,100];
[Y,PS] = mapminmax(data',0,1);%由于此函数是按行进行归一化的,因此先转置再转回来就好了
to_one = Y';

结果如下:
数学建模之熵权法(EWM)matlab实例实现
第二步求特征元素占比

ele_weight = [];
sum_col = sum(to_one); %默认按列求和
[row, col] = size(to_one); %获取原数据矩阵的行和列
for i = 1:row
    for j = 1:col
        ele_weight(i,j) = to_one(i,j)/sum_col(j); %计算出归一化后每个元素在所在特征列的占比
    end
end

第三步求各元素信息熵
数学建模之熵权法(EWM)matlab实例实现

E_ele = [];
for i = 1:row
    for j = 1:col
        if ele_weight(i,j) == 0 %规定0*ln(0) = 0,不赋值默认为0
            continue
        end
        E_ele(i,j) = -ele_weight(i,j)*log(ele_weight(i,j));%计算信息熵,matlab中log即取ln
    end
end
E = sum(E_ele./log(row));%计算此特征的信息熵
sum_E = sum(E)

最后一步通过特征信息熵求出特征权重并计算分数
数学建模之熵权法(EWM)matlab实例实现

W = (1-E)./(col-sum_E);%通过信息熵计算对应特征的权重,列数即为特征数
W = W';%转置便于矩阵乘法直接计算出对应的评价分数

data * W

matlab完整代码如下:文章来源地址https://www.toymoban.com/news/detail-402735.html

clc,clear
data = [100,90,100,84,90,100,100,100,100
    100,100,78.6,100,90,100,100,100,100
    75,100,85.7,100,90,100,100,100,100
    100,100,78.6,100,90,100,94.4,100,100
    100,90,100,100,100,90,100,100,80
    100,100,100,100,90,100,100,85.7,100
    100,100,78.6,100,90,100,55.6,100,100
    87.5,100,85.7,100,100,100,100,100,100
    100,100,92.9,100,80,100,100,100,100
    100,90,100,100,100,100,100,100,100
    100,100,92.9,100,90,100,100,100,100];
[Y,PS] = mapminmax(data',0,1);%由于此函数是按行进行归一化的,因此先转置再转回来就好了
to_one = Y';

ele_weight = [];
sum_col = sum(to_one); %默认按列求和
[row, col] = size(to_one); %获取原数据矩阵的行和列
for i = 1:row
    for j = 1:col
        ele_weight(i,j) = to_one(i,j)/sum_col(j); %计算出归一化后每个元素在所在特征列的占比
    end
end

E_ele = [];
for i = 1:row
    for j = 1:col
        if ele_weight(i,j) == 0 %规定0*ln(0) = 0,不赋值默认为0
            continue
        end
        E_ele(i,j) = -ele_weight(i,j)*log(ele_weight(i,j));%计算信息熵
    end
end

E = sum(E_ele./log(row));%计算此特征的信息熵
sum_E = sum(E);
W = (1-E)./(col-sum_E);%通过信息熵计算对应特征的权重
W = W';%转置便于矩阵乘法直接计算出对应的评价分数

data * W

到了这里,关于数学建模之熵权法(EWM)matlab实例实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 《零基础数学建模》——TOPSIS+熵权法

    本文大部分是对于数学建模清风老师的课程学习总结归纳而来,我的理解可能有错误,大家发现错误可以在评论区批评指正,课程地址:《数学建模清风》   TOPSIS法(Technique for Order Preference by Similarity to Ideal Solution)可翻译为逼近理想解排序法,国内常简称为优劣解距离法

    2023年04月09日
    浏览(38)
  • 基于熵权法的topsis分析(包含matlab源码以及实例)

                 目录 一、算法简述          1.topsis分析法          2.熵权法          3.两种算法的结合 二、算法步骤          1.判断指标类型          2.数据正向化          3.正向化矩阵标准化          4.计算概率矩阵P          5.计算各个指标的信息熵

    2024年01月16日
    浏览(37)
  • 【建模算法】熵权法(Python实现)

    熵权法是通过寻找数据本身的规律来赋权重的一种方法。 熵是热力学单位,在数学中,信息熵表示事件所包含的信息量的期望。根据定义,对于某项指标,可以用熵值来判断某个指标的离散程度,其熵值越小,指标的离散程度越大,该指标对综合评价的影响(权重)越大。

    2024年02月04日
    浏览(38)
  • 建模笔记——熵权法(Python实现)

    熵权法是一种通过对已知数据的处理,从而获得影响因子权重的方法,其基本思路是根据指标变异性的大小来确定客观权重。 熵权法的优点在于其根据各项指标指标值的变异程度来确定指标权数的,是一种客观赋权法,避免了人为因素带来的偏差。相对那些主观赋值法,精度较

    2024年02月16日
    浏览(42)
  • TOPSIS法(熵权法)(模型+MATLAB代码)

    TOPSIS可翻译为逼近理想解排序法,国内简称为优劣解距离法 TOPSIS法是一种常用的 综合评价方法 , 其能充分利用原始数据的信息,其结果能精确地反映各评价方案之间的距离 极大型指标(效益型指标)  :越高(大)越好 极小型指标(成本型指标)  :越少(小)越好 中间

    2024年02月21日
    浏览(44)
  • 12.9建模复盘——EXCEL批量处理数据、查找数据、熵权法、可视化

    以下是一些可以查询英国国家数据的网站: 1. 英国政府网站(www.gov.uk):提供各个政府部门的数据和统计信息,包括经济、人口、教育、健康、环境等领域。 2. 英国国家统计局(www.ons.gov.uk):英国的官方统计机构,提供广泛的统计数据和报告,涵盖经济、劳动力、人口、

    2024年02月05日
    浏览(45)
  • 【数学建模实例之SEIR】

    在我们日常生活中,数学建模(Mathematical Modeling)是一个非常重要的工具,它帮助我们理解复杂的问题,并找到解决这些问题的方法。在这篇博客中,我们将探讨数学建模的基本概念,并通过一些实例,展示如何使用Python进行数学建模。 数学建模是一种使用数学语言和技术来

    2024年02月15日
    浏览(31)
  • 【数学建模】经典简单例题实例1

    例1 某人平时下班总是按预定时间到达某处,然然后他妻子开车接他回家。有一天,他比平时提早了三十分钟到达该处,于是此人就沿着他朋友来接他的方向步行回去并在途中遇到了她,这一天,他比 平时 提前了十分钟到家,问此人共步行了多长时间? 该问题求解涉及到对

    2023年04月21日
    浏览(42)
  • 2023年数学建模:旅行商问题:数学建模与MATLAB实现

    目录 引言 问题定义 解决策略 MATLAB实现 数学建模案例

    2024年02月11日
    浏览(43)
  • 【数学建模】《实战数学建模:例题与讲解》第五讲-微分方程建模(含Matlab代码)

    如果这篇文章对你有帮助,欢迎点赞与收藏~ 微分方程建模是数学建模中一种极其重要的方法,它在解决众多实际问题时发挥着关键作用。这些实际问题的数学表述通常会导致求解特定的微分方程。将各种实际问题转换为微分方程的定解问题主要包括以下几个步骤: 确定研究

    2024年03月18日
    浏览(73)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包