前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于MIC(最大互信息系数)的特征选择

基于MIC(最大互信息系数)的特征选择

作者头像
里克贝斯
发布2021-05-21 16:39:10
1.7K0
发布2021-05-21 16:39:10
举报
文章被收录于专栏:图灵技术域图灵技术域

最大信息系数 maximal information coefficient (MIC),又称最大互信息系数。

之前写了一个MIC的介绍,里面包含了MIC的原理,链接:https://cloud.tencent.com/developer/article/1827564

利用到的MATLAB包安装请参见:https://cloud.tencent.com/developer/article/1827541

特征选择步骤

①计算不同维度(特征)之间的MIC值,MIC值越大,说明这两个维度越接近。

②寻找那些与其他维度MIC值较小的维度,根据阈值选出这些特征。

③利用SVM训练

④训练结果在测试集上判断错误率

minepy的安装请参照:https://cloud.tencent.com/developer/article/1827541

MATLAB代码:

代码语言:txt
复制
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);

代码采用Apache 2.0授权 

文章采用知识共享许可协议BY-NC-SA4.0授权

OmegaXYZ-版权所有 转载请注明出处

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-02-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档