1.基本思想
熵权法(Entropy Weight Method)通常用于多属性决策分析,旨在确定每个属性的权重,以便更准确地评估候选方案或决策。该方法基于信息熵的概念,通过计算每个属性的熵值和权重,以及所有属性熵值和的和来确定每个属性的权重。这种方法被广泛应用于决策科学、工程、经济学、管理学和环境科学等领域,以帮助决策者进行决策、评估和选择最佳方案。
熵权法是一种基于信息熵理论的多指标决策方法,它的基本思想是利用信息熵的概念来评估指标的贡献度,从而确定各指标在综合评价中所占的权重。
在熵权法中,首先需要计算每个指标的熵值,即用该指标的取值分布计算该指标的信息熵。信息熵的值越大,说明该指标的变异程度越大,对综合评价的贡献度也就越大。然后,根据每个指标的熵值计算其权重,即用1减去该指标的熵值,再除以所有指标熵值之和。这样计算出来的权重值越大,说明该指标对综合评价的贡献度越大,应该被赋予更大的权重。
最后,将各个指标的取值乘以其对应的权重,并将它们相加,得到综合评价的结果。熵权法的优点是不需要事先确定权重,而且能够很好地处理指标之间的相关性。它在多指标决策、风险评估、绩效评价等领域得到了广泛的应用。
2.数据集介绍
鸢尾花(Iris)数据集是一个经典的数据集,用于机器学习和统计学习中的分类和聚类问题。该数据集包含了三种不同类型的鸢尾花(山鸢尾、变色鸢尾和维吉尼亚鸢尾)的测量数据,每种花各有50个样本。每个样本包含四个特征,即萼片长度、萼片宽度、花瓣长度和花瓣宽度,以及它所属的鸢尾花类型。
该数据集最早由英国统计学家和生物学家Ronald Fisher在1936年的一篇论文中介绍,并一直被广泛用于分类和聚类问题的研究中。由于其简单性和广泛应用性,鸢尾花数据集已成为了机器学习和统计学习中的标准数据集之一。
本文采用的数据是.xlsx格式,前四列为样本的特征值,最后一列为样本的标签,标签值为1,2,3
3.文件结构
iris.xlsx % 鸢尾花数据集,具体格式参考第2部分
Main.m % 主函数
4.详细代码及注释
% 清空环境变量
warning off % 关闭报警信息
close all % 关闭开启的图窗
clear % 清空变量
clc % 清空命令行
% 加载数据集
data = xlsread('iris.xlsx');
features = data(:, 1:4);
labels = data(:, 5);
% 标准化数据
features_normalized = zscore(features);
% 计算每个特征的熵值和权重
entropies = zeros(1, 4);
weights = zeros(1, 4);
for i = 1:4
p = histcounts(features_normalized(:, i), 10, 'Normalization', 'probability');
entropies(i) = -sum(p .* log2(p));
weights(i) = (1 - entropies(i)) / (4 - sum(entropies));
end
% 计算标签的分布
label_counts = histcounts(labels, [1, 2, 3, 4], 'Normalization', 'probability');
threshold1 = label_counts(1) / sum(label_counts) * sum(weights);
threshold2 = (label_counts(1) + label_counts(2)) / sum(label_counts) * sum(weights);
% 预测标签
predicted_labels = zeros(size(labels));
for i = 1:length(labels)
weighted_sum = sum(features_normalized(i, :) .* weights);
if weighted_sum <= threshold1
predicted_labels(i) = 1;
elseif weighted_sum <= threshold2
predicted_labels(i) = 2;
else
predicted_labels(i) = 3;
end
end
% 计算准确率
accuracy = sum(predicted_labels == labels) / length(labels);
fprintf('Accuracy: %.2f%%\n', accuracy * 100);