|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
最大信息系数 maximal information coefficient (MIC),又称最大互信息系数。. f! E0 {# c% q( Z7 |" a) b6 g
& s! S T! ]6 u; ~3 a. o1 a. I
特征选择步骤
' h2 a) w& |% J* R$ O, s" {2 I" [/ \1 A) k( L" B3 {
①计算不同维度(特征)之间的MIC值,MIC值越大,说明这两个维度越接近。
! A. o9 x% K4 V" n% @$ v8 @②寻找那些与其他维度MIC值较小的维度,根据阈值选出这些特征。( p" c4 n+ S B3 i. x
③利用SVM训练4 b: @( f5 c+ N" M; j
④训练结果在测试集上判断错误率: G4 \5 w0 j7 X7 ~# F# p
/ ^9 V5 U1 W! n, \' ?9 y* @/ |: tMATLAB代码:5 c9 e* V- u4 Q+ J0 `6 H' s% R R
0 o7 s5 o8 Z* i0 l- 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);
2 h' N: L8 Q# Q) x, b- X, w |
|