数学建模(熵权法 python代码 例子)

熵权法是一种多属性决策方法,通过计算属性熵值确定其重要性。文章介绍了熵权法的基本原理,包括熵的计算公式和权重计算,并提供了将不同类型的指标正向化及标准化处理的步骤。此外,还展示了用Python实现熵权法的代码和最终决策结果。
摘要由CSDN通过智能技术生成

目录

介绍: 

模板:

例子:择偶

极小型指标转化为极大型(正向化):

中间型指标转为极大型(正向化):

区间型指标转为极大型(正向化):

标准化处理:

公式:

熵权:

公式:

​​​完整代码:

结果:

介绍: 

熵权法是一种多属性决策方法,用于确定各个属性在决策中的重要程度。该方法的核心思想是通过计算属性的熵值,来评估属性的信息量和不确定性,进而确定属性的权重。

熵是信息论中的概念,表示一个随机变量的不确定性。在决策中,一个属性的熵越大,说明该属性对决策的贡献越大,因为它包含了更多的信息。熵权法通过计算属性的熵,然后将每个属性的熵除以总的熵,得到每个属性的权重。

具体步骤如下:

  1. 收集决策所涉及的属性数据。
  2. 计算每个属性的熵值,使用熵的计算公式:熵 = -Σ(p*log2(p)),其中p表示属性的概率。
  3. 计算所有属性的熵之和,得到总的熵。
  4. 计算每个属性的权重,使用该属性的熵除以总的熵。
  5. 最后可以根据属性的权重,进行决策或排序。

熵权法在多属性决策中具有一定的优势,能够考虑到不同属性的权重,提高决策的准确性和可靠性。但是,在实际应用中,需要注意属性数据的准确性和合理性,以及熵的计算方法的选择等问题。

 模板:

import numpy as np

# 定义计算熵的函数
def entropy(data):
    # 计算每个属性的概率
    prob = np.array(data) / np.sum(data)
    # 计算熵
    entropy = -np.sum(prob * np.log2(prob))
    return entropy

# 定义熵权法函数
def entropy_weight(data):
    # 计算每个属性的熵
    entropies = [entropy(column) for column in data.T]
    # 计算总的熵
    total_entropy = np.sum(entropies)
    # 计算每个属性的权重
    weights = [entropy / total_entropy for entropy in entropies]
    return weights

# 示例数据
data = np.array([[10, 20, 30, 40], [40, 30, 20, 10]])

# 计算权重
weights = entropy_weight(data)
print("属性权重:", weights)

例子:择偶

 极小型指标转化为极大型(正向化):

   # 公式:max-x 
   if ('Negative' in name) == True:
            max0 = data_nor[columns_name[i + 1]].max()#取最大值
            data_nor[columns_name[i + 1]] = (max0 - data_nor[columns_name[i + 1]])  # 正向化
            # print(data_nor[columns_name[i+1]])

 中间型指标转为极大型(正向化):

 # 中间型指标正向化 公式:M=max{|xi-best|}  xi=1-|xi-best|/M
        if ('Moderate' in name) == True:
            print("输入最佳值:")
            max = data_nor[columns_name[i + 1]].max()
            min = data_nor[columns_name[i + 1]].min()
            best=input()
            M=0
            for j in data_nor[columns_name[i + 1]]:
                if(M<abs(j-i
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值