MATLAB 熵权法计算 3 列 388 行睡眠数据权重、权值和得分
首先,我们需要对数据进行正向指标处理和负向指标处理。\r\n对于整晚睡眠时间和入睡方式(第一列和第三列),我们可以直接使用原始数据作为正向指标。\r\n对于睡醒次数(第二列),我们需要进行负向指标处理。可以使用公式:负向指标 = max(睡醒次数) - 睡醒次数。\r\n接下来,我们可以计算每个指标的权重。通常使用熵权法来计算权重。\r\n具体步骤如下:\r\n1. 导入数据:假设数据保存在名为 data 的 excel 文件中,第一列为整晚睡眠时间,第二列为睡醒次数,第三列为入睡方式。\r\n\r\nmatlab\r\ndata = xlsread('data.xlsx');\r\n\r\n2. 正向指标处理:第一列和第三列数据不需要处理。\r\n3. 负向指标处理:计算睡醒次数的负向指标。\r\n\r\nmatlab\r\nnegative_index = max(data(:, 2)) - data(:, 2);\r\n\r\n4. 计算每个指标的熵值。\r\n\r\nmatlab\r\nentropy = zeros(1, 3); % 初始化熵值数组\r\n\r\nfor i = 1:3\r\n column = data(:, i);\r\n normalized_column = column / sum(column);\r\n entropy(i) = sum(-normalized_column .* log2(normalized_column));\r\nend\r\n\r\n5. 计算每个指标的权重。\r\n\r\nmatlab\r\nweights = (1 - entropy) / sum(1 - entropy);\r\n\r\n6. 计算每个样本的权值。\r\n\r\nmatlab\r\nweighted_data = data .* weights;\r\n\r\n7. 计算每个样本的得分。\r\n\r\nmatlab\r\nscores = sum(weighted_data, 2);\r\n\r\n最后,weights 数组即为权重,weighted_data 为权值,scores 为计算得分。
原文地址: https://www.cveoy.top/t/topic/qc1V 著作权归作者所有。请勿转载和采集!