用matlab对3列388行数据进行熵权法计算3列数据分别为整晚睡眠时间时:分:秒睡醒次数入睡方式。其中第一列和第三列做正向指标处理其中第二列做负向指标处理3列数据都是区间型指标给出权重得分、权值、计算得分和综合评判值
首先,我们需要对第一列和第三列进行正向指标处理,对第二列进行负向指标处理。
对于第一列和第三列,我们可以使用最大最小归一化方法,将数据映射到[0,1]的区间。假设第一列的数据存储在变量A中,第三列的数据存储在变量C中,则正向指标处理后的数据可以通过以下公式计算:
[A' = \frac{A - \min(A)}{\max(A) - \min(A)}]
[C' = \frac{C - \min(C)}{\max(C) - \min(C)}]
对于第二列,我们可以使用倒数的方式进行处理,假设第二列的数据存储在变量B中,则负向指标处理后的数据可以通过以下公式计算:
[B' = \frac{1}{B}]
接下来,我们可以计算每个指标的权重得分。假设第一列、第二列和第三列的权重分别为w1、w2和w3,则权重得分可以通过以下公式计算:
[w1 + w2 + w3 = 1]
然后,我们可以计算每个指标的权值,权值可以通过将权重得分除以各指标的总和得到:
[权值 = \frac{权重得分}{指标总和}]
接下来,我们可以计算每个指标的计算得分,计算得分可以通过将指标值乘以对应的权值得到:
[计算得分 = 指标值 \times 权值]
最后,我们可以计算每行数据的综合评判值,综合评判值可以通过将每个指标的计算得分相加得到。
下面是使用MATLAB实现上述计算的示例代码:
% 假设数据存储在一个388行3列的矩阵data中
% 第一列为整晚睡眠时间,第二列为睡醒次数,第三列为入睡方式
% 正向指标处理
A = data(:, 1); % 第一列数据
C = data(:, 3); % 第三列数据
A_min = min(A);
A_max = max(A);
C_min = min(C);
C_max = max(C);
A_prime = (A - A_min) / (A_max - A_min);
C_prime = (C - C_min) / (C_max - C_min);
% 负向指标处理
B = data(:, 2); % 第二列数据
B_prime = 1 ./ B;
% 权重得分
w1 = 0.4; % 假设第一列的权重为0.4
w2 = 0.3; % 假设第二列的权重为0.3
w3 = 0.3; % 假设第三列的权重为0.3
% 权值
weight_sum = w1 + w2 + w3;
weight1 = w1 / weight_sum;
weight2 = w2 / weight_sum;
weight3 = w3 / weight_sum;
% 计算得分
score1 = A_prime * weight1;
score2 = B_prime * weight2;
score3 = C_prime * weight3;
% 综合评判值
comprehensive_score = score1 + score2 + score3;
在上述代码中,我们假设第一列的权重为0.4,第二列的权重为0.3,第三列的权重为0.3。你可以根据实际情况调整权重值。最后得到的comprehensive_score即为每行数据的综合评判值
原文地址: http://www.cveoy.top/t/topic/ivsg 著作权归作者所有。请勿转载和采集!