原创 孤岛 青年杂说youth 2024年06月21日 07:31 甘肃
Mutual Information
正文共: 1277字 预计阅读时间: 4分钟
6. 实现过程?
如今很多轮子已经被造出来了,用的最多的是Hanchuan Peng编写的代码,目前已经有matlab的实现过程,下一章将重点讲述实现过程。
以下面一组数据为例,评价爆坑深度和能量耗散的敏感性,这里需要注意,每一行数据对应一个标签等级(label),而后续分析敏感性也需要按照标签分数进行相应的计算。
随后我们为了统一数量级,进行数据归一化:
clear
%导入excel数据
data = readtable('第五章互信息分析.xlsx');
data=table2array(data(:,1:end))
[data,PS] = mapminmax(data',-1,1);%用这个映射 f: 2*(x-xmin)/(xmax-xmin)+(-1)
data = data';
label=data(:,end);
X=data(:,1:5);
结果如下:缩放后标签变成-1、0、1,符合常规机器学习分类标签。
进行后续计算:
% 计算互信息
n_features = 5; % 影响因素的个数
mi_scores = zeros(n_features, 1); % 存储互信息分数
for i = 1:n_features
mi_scores(i) = mutualinfo(X(:, i), label);
end
% 可视化互信息分数
bar(mi_scores);
xlabel('影响因素');
ylabel('互信息');
title('影响因素与标签的互信息分数');
其中mutualinfo(a,b)为计算a、b之间互信息得分,根据上一章节公式,I(X;Y)=H(X)+H(Y)-H(XY),mutualinfo(a,b)=I(a,b)、entropy(a)=H(a)、condentropy(b)=H(b)、jointentropy(a,b)=H(ab)。其中entropy(a)是计算a的熵
,condentropy(a,b)是计算变量(a)的熵或给定(b)的(a的)条件熵,jointentropy(a,b)是计算a、b的联合熵。
7. 结果
根据上面函数,计算可得各影响因素的得分,随后便可以绘制得到相关柱状图,如图1所示。
图1 各因素得分
8. 展望
这种办法不难,而且应用面广泛,有很多文章都在应用这种方法进行敏感性分析,例如这篇:https://doi.org/10.1016/j.engappai.2020.104015,采用MI进行分析,充实填补文章结构。
图2 文章部分截图
[email protected]靑年杂说联系账号
标签:基于,互信息,label,敏感性,计算,标签,data From: https://blog.csdn.net/qq_41566322/article/details/143787063