FCBF算法的Matlab实现
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实现相关推荐
- 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 ...
- 2018-4-8蚁群算法---包子阳《智能优化算法以及Matlab实现》第五章
资料来源: <智能优化算法以及matlab实现>包子阳 余继周 编著 第五章-----蚁群算法 是一种元启发式优化算法(自己理解:就是作为群体的单位个体也就是元,在里面充当着随机的选择搜 ...
- matlab dfp法,DFP算法及Matlab程序.docx
DFP算法及Matlab程序 作业二 用DFP算法求解,取,.一.求解:求迭代点x1令,得的极小值点,所以得:于是,由DFP修正公式有下一个搜索方向为求迭代点x2令,得的极小值点于是得:,所以:,因H ...
- matlab整定串级pid,PID算法在Matlab串级控制中的应用
PID算法在Matlab串级控制中的应用 自114 1112002039 陈艳 前言:这个专题是由王娟老师给我们授课,我感觉收获挺大的,尤其是matlab仿真软件的使用,为我以后的实验课打下良好的基础 ...
- PSO-LSSVM算法及其MATLAB代码
挺完整的一篇博客,这里转载记录一下. 原文链接:PSO-LSSVM算法及其MATLAB代码 一.PSO 1.概念 粒子群优化算法(PSO:Particle swarm optimization)是一种 ...
- matlab hist函数_算法工匠MATLAB专训营:Matlab绘图,小试牛刀
作者 | 蔡老师 仿真秀专栏作者 首发 | 仿真秀平台 导读:正文之前,我在此详细说明一下,因为本文包含的程序太难得,网上肯定找不到这样的程序.随着讲课的越来越深入,我给出的程序会越来越实用,接近于实 ...
- matlab音频基频的提取,(620512681) 自相关基频提取算法的MATLAB实现
第31卷总第80期 西北民族大学学报(自然科学版) V01.31.No.4 1 0年1 2 0 2月 Journal of Nonhw铭t University for Nationalities(N ...
- fdtd算法的matlab程序,FDTD算法的Matlab程序
<FDTD算法的Matlab程序>由会员分享,可在线阅读,更多相关<FDTD算法的Matlab程序(6页珍藏版)>请在人人文库网上搜索. 1.* 5= T$h;O % 3-D ...
- hilbert曲线序编码matlab,Hilbert曲线扫描矩阵的生成算法及其MATLAB程序代码
Hilbert曲线扫描矩阵的生成算法及其MATLAB程序代码 王笋,徐小双(华中科技大学控制科学与工程系,武汉 430074) 摘 要 Hilbert曲线是一种重要的图像处理工具,在图像处理,特别是图 ...
最新文章
- 部署WSUS2.0+SP1
- 关于Android中XML解析方式
- 货物移动_免费收货(MvT511)
- powerdesigner导出sql时自动生成注释
- 连续对焦 auto对焦_如何在Windows 10上使用对焦辅助(请勿打扰模式)
- MySQL安装时出现的问题
- C语言:四则计算器(支持小数,括号和次方幂 组合输入计算)
- 在utf8和gb2312中 不同编码情况下,汉字 数字 英文占的字节数?
- 密码学原语如何应用?解析单向哈希的妙用|第9论
- 关于ios9中得AddressBook和AddressBookUI框架过时问题
- 信息传播学习笔记(1)——SIS模型原理与公式推导
- DIV背景半透明 样式
- 用邮箱发简历,主题怎么写,正文怎么写
- GD32F303课程【3】中断控制器和外部中断
- Vue3中Vuex的使用
- 如何查看手机绑定过的网站或者APP:注销手机号之前你必须要做的——换绑所有旧手机号绑定过的网站或者APP
- StringUtils.split用法
- 特种搜索引擎大揭密A
- ActiveX 控件
- 5.绘制一个风轮效果,每个风轮的内角45边长150