FCBF算法的具体原理请参照本人的另外一篇blog(https://blog.csdn.net/tangxianyu/article/details/100551675),里面有详细的说明。本文主要说明基于Matlab的FCBF算法的实现。

算法实现

本算法是在MIToolbox的基础上进行的算法实现(工具箱安装及使用https://blog.csdn.net/tangxianyu/article/details/100562164)。令本算法基本参照了FEAST内的实现步骤,本人只是更改了一些变量名,加入一些中文注释:

function [selectedFeatures]=FCBF(features,labels,threshold)
%输入:
%features:输入的特征数据
%labels:输入的标签数据
%threshold:选择阈值
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%输出:
%selectedFeatures:输出最优的特征子集
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%By Tang Xianyu%% 主函数
n_feat=size(features,2);%特征的个数
%n_samp=size(features,1);%采样的个数classScore=zeros(n_feat,1);%初始化SUic的向量值为0%t1=cputime;
for i=1:n_featclassScore(i)=SuCal(features(:,i),labels);%计算每个特征的SUic值
end[classScore, indexScore]=sort(classScore,1,'descend');%将计算的SUic值降序排列
indexScore=indexScore(classScore>threshold);%删除小于阈值的特征
classScore=classScore(classScore>threshold);%删除小于阈值的特征if ~isempty(indexScore)%判断是否为空curPosition=1;
elsecurPosition=0;
endwhile curPosition<=length(indexScore)j=curPosition+1;preFeature=indexScore(curPosition);%确定已选择的主特征while j<length(indexScore)scoreFiFj=SuCal(features(:,indexScore(j)),features(:,preFeature));%计算特征间的SU值if scoreFiFj>classScore(j)indexScore(j)=[];%如果SUij>SUic,则删除该特征classScore(j)=[];%删除该特征后,后面的特征自动向前移动一位,所以不用j+1elsej=j+1;%不删除特征情况下,j需要加1endendcurPosition=curPosition+1;
end
selectedFeatures=indexScore;%最终赋值
end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% SU计算函数
function SU=SuCal(f1,f2)
h1=h(f1);
h2=h(f2);
ig=mi(f1,f2);
SU=2.0*ig/(h1+h2);
end

疑问点

在采用Corral数据集对特征进行验证时,发现并不能有效的剔除冗余特征f6。最终选出来的是f6,f1,f2,f3,f4。不只是否是上述的程序有问题。

如有同仁作此方面的研究,发现问题,忘不吝在留言区指出来。多谢。

FCBF算法的Matlab实现相关推荐

  1. fcm算法的MATLAB实现,FCM算法的matlab程序(初步)

    FCM算法的matlab程序 1.采用iris数据库 iris_data.txt 5.1 3.5 1.4 0.2 4.9 3 1.4 0.2 4.7 3.2 1.3 0.2 4.6 3.1 1.5 0 ...

  2. 2018-4-8蚁群算法---包子阳《智能优化算法以及Matlab实现》第五章

    资料来源: <智能优化算法以及matlab实现>包子阳  余继周 编著 第五章-----蚁群算法 是一种元启发式优化算法(自己理解:就是作为群体的单位个体也就是元,在里面充当着随机的选择搜 ...

  3. matlab dfp法,DFP算法及Matlab程序.docx

    DFP算法及Matlab程序 作业二 用DFP算法求解,取,.一.求解:求迭代点x1令,得的极小值点,所以得:于是,由DFP修正公式有下一个搜索方向为求迭代点x2令,得的极小值点于是得:,所以:,因H ...

  4. matlab整定串级pid,PID算法在Matlab串级控制中的应用

    PID算法在Matlab串级控制中的应用 自114 1112002039 陈艳 前言:这个专题是由王娟老师给我们授课,我感觉收获挺大的,尤其是matlab仿真软件的使用,为我以后的实验课打下良好的基础 ...

  5. PSO-LSSVM算法及其MATLAB代码

    挺完整的一篇博客,这里转载记录一下. 原文链接:PSO-LSSVM算法及其MATLAB代码 一.PSO 1.概念 粒子群优化算法(PSO:Particle swarm optimization)是一种 ...

  6. matlab hist函数_算法工匠MATLAB专训营:Matlab绘图,小试牛刀

    作者 | 蔡老师 仿真秀专栏作者 首发 | 仿真秀平台 导读:正文之前,我在此详细说明一下,因为本文包含的程序太难得,网上肯定找不到这样的程序.随着讲课的越来越深入,我给出的程序会越来越实用,接近于实 ...

  7. matlab音频基频的提取,(620512681) 自相关基频提取算法的MATLAB实现

    第31卷总第80期 西北民族大学学报(自然科学版) V01.31.No.4 1 0年1 2 0 2月 Journal of Nonhw铭t University for Nationalities(N ...

  8. fdtd算法的matlab程序,FDTD算法的Matlab程序

    <FDTD算法的Matlab程序>由会员分享,可在线阅读,更多相关<FDTD算法的Matlab程序(6页珍藏版)>请在人人文库网上搜索. 1.* 5= T$h;O % 3-D ...

  9. hilbert曲线序编码matlab,Hilbert曲线扫描矩阵的生成算法及其MATLAB程序代码

    Hilbert曲线扫描矩阵的生成算法及其MATLAB程序代码 王笋,徐小双(华中科技大学控制科学与工程系,武汉 430074) 摘 要 Hilbert曲线是一种重要的图像处理工具,在图像处理,特别是图 ...

最新文章

  1. 部署WSUS2.0+SP1
  2. 关于Android中XML解析方式
  3. 货物移动_免费收货(MvT511)
  4. powerdesigner导出sql时自动生成注释
  5. 连续对焦 auto对焦_如何在Windows 10上使用对焦辅助(请勿打扰模式)
  6. MySQL安装时出现的问题
  7. C语言:四则计算器(支持小数,括号和次方幂 组合输入计算)
  8. 在utf8和gb2312中 不同编码情况下,汉字 数字 英文占的字节数?
  9. 密码学原语如何应用?解析单向哈希的妙用|第9论
  10. 关于ios9中得AddressBook和AddressBookUI框架过时问题
  11. 信息传播学习笔记(1)——SIS模型原理与公式推导
  12. DIV背景半透明 样式
  13. 用邮箱发简历,主题怎么写,正文怎么写
  14. GD32F303课程【3】中断控制器和外部中断
  15. Vue3中Vuex的使用
  16. 如何查看手机绑定过的网站或者APP:注销手机号之前你必须要做的——换绑所有旧手机号绑定过的网站或者APP
  17. StringUtils.split用法
  18. 特种搜索引擎大揭密A
  19. ActiveX 控件
  20. 5.绘制一个风轮效果,每个风轮的内角45边长150

热门文章

  1. Maven与Maven POM的区别
  2. php表格设置标题,每页表格标题字PHPWord
  3. JavaScript获得字符串实际长度
  4. CentOS设置开机自动执行指定命令
  5. js 之 call用法
  6. 新业务员如何开发外贸客户?
  7. 毕业设计-基于计算机视觉的垃圾分类识别系统
  8. Cesium 基础知识和文档记录
  9. 云服务PaaS、SaaS、IaaS
  10. 计算机二级excel中mid的用法,mid函数在excel中的使用方法