EDA365电子论坛网
标题:
基于MIC(最大互信息系数)的特征选择
[打印本页]
作者:
dapmood
时间:
2020-11-2 13:35
标题:
基于MIC(最大互信息系数)的特征选择
最大信息系数 maximal information coefficient (MIC),又称最大互信息系数。
4 m% X6 O3 q8 r6 t
/ m& L: z4 q- c
特征选择步骤
0 h8 _6 e+ E& ~2 S7 ^0 s' {
+ h- S- W( Q, u V& W
①计算不同维度(特征)之间的MIC值,MIC值越大,说明这两个维度越接近。
) G( M \6 s. Q8 c8 H5 b, `! J1 U
②寻找那些与其他维度MIC值较小的维度,根据阈值选出这些特征。
& @9 U9 V% f$ i0 A5 _
③利用SVM训练
% ]0 V2 e% I V6 F# [$ m
④训练结果在测试集上判断错误率
/ J/ w# n/ T6 G& U
' [8 X( b3 s0 ^- K; X
MATLAB代码:
9 {+ t" T: c+ ^9 l4 e; p
* y0 q( A1 r2 t
clc
load train_F.mat;
load train_L.mat;
load test_F.mat;
load test_L.mat;
Dim = 22;
MIC_matrix = zeros(Dim, Dim);
for i = 1:Dim
for j = 1:Dim
X_v = reshape(train_F(:,i),1,size(train_F(:,i),1));
Y_v = reshape(train_F(:,j),1,size(train_F(:,j),1));
[A, ~] = mine(X_v, Y_v);
MIC_matrix(i, j) = A.mic;
end
end
MIC_matrix(MIC_matrix>0.4) = 0;
MIC_matrix(MIC_matrix~=0) = 1;
inmodel = sum(MIC_matrix);
threshold = sum(inmodel)/Dim;
inmodel(inmodel <= threshold) = 0;
inmodel(inmodel > threshold) = 1;
model = libsvmtrain(train_L,train_F(:,inmodel));
[predict_label, ~, ~] = libsvmpredict(test_L,test_F(:,inmodel),model);
error=0;
for j=1:length(test_L)
if(predict_label(j,1) ~= test_L(j,1))
error = error+1;
end
end
error = error/length(test_L);
& t- A' V$ a, V. \ p# q
作者:
regngfpcb
时间:
2020-11-2 14:18
基于MIC(最大互信息系数)的特征选择
欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/)
Powered by Discuz! X3.2