Feature Selection Library (FSLib 2018)是一种广泛应用于特征选择(属性或变量选择)的MATLAB库,能够降低高维问题,最大化数据模型的准确性,自动决策规则的性能,降低数据采集成本。
* FSLib在2017年获得MATLAB中央硬币奖励。
如果您能就这个工具箱给我们一些反馈,我们将不胜感激。我们重视您的意见,欢迎您的评价。
如果你使用我们的工具箱(或其中包含的方法),请考虑引用:
Roffo, G., Melzi, S., Castellani, U. and Vinciarelli, A., 2017。无限潜在特征选择:一种基于概率潜在图的排序方法。arXiv预印本arXiv: 1707.07538。
[2] Roffo, G., Melzi, S. and Cristani, M., 2015。无限的特征选择。《IEEE计算机视觉国际会议论文集》(第4202-4210页)。
[3] Roffo, G.和Melzi, S., 2017, 7月。学习排序:通过特征向量中心性进行特征排序和选择。2016年9月19日,《采矿复杂模式的新前沿:第五届国际研讨会(NFMCP 2016)》,与ECML-PKDD 2016联合举办,意大利Riva del Garda, 2016年9月19日,修订论文选集(第10312卷,第19页)。施普林格。
[4]罗福,G., 2017。排序学习和排序学习:排序在模式识别应用中的作用。arXiv预印本arXiv: 1706.05933。
乔治(2020)。特征选择图书馆(//www.tatmou.com/matlabcentral/fileexchange/56937-feature-selection-library), MATLAB中央文件交换。检索.
7.0.2020.3 | 拼写错误 |
|
7.0.2020.2 | 更新了演示文件:Demo_InfFS.m |
|
7.0.2020.1 | 从Brais Cancela的评论来看,ILFS方法已经做了一些更新。 |
|
6.2.2018.1 | 添加方法:infFS_fast |
|
6.2.2018.0 | +新方法: |
|
6.1.2018.0 | +增加了新的演示文件:如何为Inf-FS和ILFS选择最佳参数。 |
|
6.0.2018.0 | +文件分隔符当前平台包括。 |
金宝app支持作者
嗨,乔治,我现在可以使用演示代码。我试着运行不同的过滤器,每个过滤器我得到不同的排名。在这种情况下,我如何决定哪些特性是最重要的。请帮助。我应该用其他代码试试吗?
我有同样的问题“无法安装工具箱‘特性选择库’,因为工具箱文件已损坏。”我该如何解决?
你好,我试图安装工具箱,但我得到“无法安装工具箱'特性选择库',因为工具箱文件损坏”。有什么问题吗?我的Matlab更新。
谢谢
有一点:我想知道你是否能在代码的什么地方找到了w(变换矩阵),并将其应用到fisher参考书中的方程式3.83中。我看到在训练中计算了相关性。m,但没有变换。在Fisher方法中,特征的排序是在它们转换到一个新的空间之后进行的。
更新:我尝试探索每个功能的权重(不仅仅是输出排名),我尝试添加a.rank到输出,我收到了这个错误:
a.weights
索引超过数组元素的数量(0)。
fisher/subsref中的错误(第72行)
坏蛋=堆栈{1};
Giorgio各个特征选择器的输出排名。我还需要知道每个功能的得分。显然,该软件不会报告每个功能的得分。
你好@Zeynab,谢谢你的问题。listFS是一个字符串单元格数组,methodID应该是一个整数值。您确定正确地索引了数组吗?例如,listFS{1}或listFS{2}等。
Q2:特征选择应该应用于训练数据,这是因为你不应该有测试数据(和它的标签在监督的情况下设置),如果你在整个数据集应用FS是不公平的,你的特征选择策略运作(~显然更好~),因为它见证了所有的数据,但是,您对数据进行了过度拟合(具有很高的概率),并在实际测试数据上失去了泛化能力。谷歌搜索关于ML中训练/测试分割的动机以获得更多细节。
Q3:加入随机特征是为了表明FS可以有效地检测那些不相关的特征(Random -> by construction)并丢弃它们。它是一个演示文件,因此玩具数据是演示的一部分,您可以看到不同的方法如何检测和选择相关的特性。这个演示提供了工具箱中FS方法集之间的简单比较。谢谢你的问题,希望我的回答能有所帮助!
你好,乔治
为什么要在演示中运行特征选择?我认为对整个数据点进行特征选择可以得到更全面的数据趋势结果。另外,请您解释一下为什么在演示中再次向列车集添加了随机特征值(X_train = [X_train,rand(120,4)];) ?
谢谢
嗨@pallavi,您使用哪些X_train数据和y来提供分类器?看起来你的数据X和Y有问题,请检查你是否正确地将它们传递给函数。
你好,乔治
我收到这个错误时,试图运行Fisher的演示:
无法使用fisher类型的值作为索引。
演示错误(第70行)
selection_method = listFS {methodID};%选择
嗨,乔治,
我是机器学习的新手。我只是想演示一下。m代码和我遇到以下错误
使用classreg.learning.FitTemplate/fillifeeded时出错(第666行)
Showplot不是一个有效的参数名称。
你能解释一下我该怎么改正吗?我已经在我的代码中更改了函数fitcsvm和ClassificationSVM
你好,乔治,感谢你的努力
我想知道你是否能帮助我?
我想要一个用粗糙集理论进行特征选择的工具箱
感谢大家在这些年中使用这个工具箱。
我很高兴它对你们中的许多人都很有用。
我希望你知道,我是作为一个志愿者分享代码和库(我不为MATLAB工作,我没有从中获利)。
我用来更新这个图书馆的时间是有限的。
这个库不是一个商业产品,因此它可能包含不一致,错误,或我在更新一些旧文件的健忘。
尽管如此,我还是尽力通过改进这个开源库来纠正您发现的bug。
再次感谢你。
嗨brai,
从第一个实现开始,该文件就一直保存在库中。
我修复了一些问题,并更新了一个新版本的代码。谢谢你找到窃听器。
注意,PLSA + EM算法的实现是基于以下代码的:
https://github.com/lizhangzhan/plsa
https://github.com/lizhangzhan/plsa/blob/master/plsa.m
我可以继续讨论我们的邮件对话!
我尝试使用ILFS算法,但似乎它是不行的。我不确定实施情况,所以我想指出我的担忧:
1)第113行:它说std.^2,但我认为它是std。方差在第150行中使用。如果不是,第150行除以std^4。
2)第159行:算法取概率类值较低的箱子,但根据论文,取概率类值较高的箱子。
3)第243行:prob_token_factor没有更新,但prob_token_factor未使用。这将导致在EM循环中永远不会更新prob_token_factor。
亲爱的乔治,
我已经用蜘蛛超过10年了。现在我安装工具箱和尝试数据,但它总是错误命令显示。在数据中,它显示数据(算法,X,Y)或数据(X,Y)都可以工作。然而我输入数据(X,Y),它说显示错误:没有足够的输入参数。data中的'algorithm'格式是什么,fisher中的'hyper'格式是什么?
你能帮我个忙吗?
谢谢你的工作。
我在使用这个工具箱时遇到了一些问题。
当我运行演示。m文件,errors happened. And I found the functions svmtrain and svmclassify are not used in MATLAB 2018b, the software suggested me replacing them by fitcsvm and ClassificationSVM. However, after I modified them,the program still cannot run. I do not know why, can you help me?
使用Brad(2018年12月26日)提供的补丁更新演示是在最近的Matlab上运行的必要条件。如果能更新源代码就好了。
嗨Marc,谢谢你下载工具箱,似乎你在drtoolbox而不是fslib上遇到了问题。下载降维工具箱,因为您在这里找到的只是一个库,只有几个函数。
嗨,我确定后面的工作是伟大的,但我真的面临很多麻烦得到test_toolbox。我希望能正常运行。我得到了多个错误,如:
------------
'位置2的索引超过数组边界(不能超过3)。'
警告:使用CorrDim进行固有维数估计失败!
-------------
它是看着某一点:
MATLAB \附件\工具箱\ \特征选择图书馆\ FSLib_v6.2.1_2018 \ lib \ \ csdp.exe drtoolbox \技术
请问我怎样才能买到这个?
除此之外,我还试着运行drgui。m,当使用散点绘图时,我得到了一个num2str错误,就像scatter112行一样。它试图使num2str(hs,'%20.20f')和hs是一个句柄。
非常感谢你所做的一切。
@Giorgio非常感谢
我有一个问题,我不明白:
当运行演示文件(使用FSV方法或fisher)对我的数据,它给我的准确性85% ..然后我尝试运行demo_infffs文件,但它给了我57%的准确率!!我的错在哪里?
感谢问候;
嗨,谢谢你的出色工作。我有一个问题。
如果像rfe这样的包装器方法也只返回单个权重的排名,这让我对如何实现感到困惑。在我看来,我们必须在包装器方法中尝试不同的特征子集,而不是单个特征。因此,对我来说,您似乎需要评估包装代码中的功能子集,比如Xsubset,以及其他一些方法,以提取各个功能的重要性,比如Xindiv,跨所有使用的功能集。最后我们得到排名。如果是这样,为什么不返回每个特征子集的结果,即Xsubset。因为当我们使用包装器方法时,我们希望得到最好的子集。即使代码返回单个排名,我也不确定组成子集的最前面的几个特性是否是最佳子集。
@Giorgio谢谢你的帮助!
如果你的数据是非数值的
标签={“蓝”、“绿色”、“红色”};
有些函数不起作用。你需要像这样的数字数据:
标签=(1、2、3)
看起来你的数据不是数字(int, float, double)
我有以下错误,谁能帮助这个
未定义函数'isnan'用于输入类型为'标称'的参数。
@samar ragab谢谢你的帮助!
@曹文彦
注意:你必须有"visual studio"和"x86_64-w64-mingw32"
只要下载这个库,这个库也是“大型线性分类库”,你可以在这里下载:https://www.csie.ntu.edu.tw/~cjlin/liblinear/
然后运行。m文件。如果效果好,那就没问题。另一方面,你应该按照自述文件来运行它。
最好的祝愿
你好,我是个新手。这是一个很有创意的问题。我该如何使用这个工具箱?我希望你能给我指导。我会很感激的。
如何实现这个库(Demo & Demo_InfFS)的多类问题?
提前感谢;
如何找出哪两个特征得到秩1和秩2,即哪些特征被选中。
获取mex文件错误。我不知道该怎么办
这就跟你问声好!非常感谢你给我这个图书馆。我们公司正在使用它。
你好,这可能是一个愚蠢的问题,但是否有可能为进入一个特征选择算法(例如特征向量中心性算法)的每个特征提供预先指定的权重?
你好,乔治,你真的做得很好。我一直在寻找这样的代码使用的机会。我已经提取了特征,当我应用支持向量机时,分数非常低,我相信这有助于提高提取特征的性能。我对代码有异议。我试图先使用make代码进行构建,但出现了此错误。已将所有必要的功能添加到垃圾箱中。
错误使用cd
不能CD到F:\bin\lib(名称不存在或不是目录)。
make123forfeatureselection错误(第5行)
cd(“自由”);
我使用MATLAB 2018b。希望收到你的来信。谢谢你先生!
你好!
@Muhammed:可能sigma_ij和corr_ij被颠倒了,如果你设置alpha=05,这两个公式是一样的,就不会造成这么多问题。
文中的alpha 0.2,在这种情况下对应于alpha=0.8。如果您在训练集上使用交叉验证来找到最好的alpha,就不会有问题。我会试着修正它,把它和纸对齐。
Demo_InfFS只包含交叉验证的结构,你可以从中学到最好的alpha参数。你将无法运行它,但它是。尝试演示。M可以轻松地运行代码。
你好,我不明白A矩阵的计算方法,和文中提出的方法不一样。
论文指出,
A = (alpha*sigma_ij + (1-alpha)*corr_ij); / /
但代码就是这样实现的
A = (alpha*corr_ij + (1-alpha)*sigma_ij);
你好,我有一个错误,而运行Dimo_InfFs.m
对非结构数组对象的字段赋值。
列车错误(第32行)
algo.training_time = cputime;
Demo_InfFS错误(第41行)
cv = train(Y_train,X_train_, cmd);
任何帮助请吗?
你好,我有一个关于这个的问题。我目前有一组数据(12列),并计划对上述数据进行分类(使用KNN, SVM等)。现在,我计划从数据中删除一些列,以提高它的准确性。这个功能选择库似乎非常适合它。然而,刚开始使用MATLAB,我目前对编译工具箱没有任何想法。在编译单个库(特征选择方法。m文件)时,我得到了一些错误。任何帮助,这是高度赞赏。谢谢。
这就跟你问声好!你是说多类分类吗?
在情况下,是的。
所有“无监督”的FS方法自然适合于多类问题,因为它们不考虑任何类标签。
至于“监督的”,FS方法,其中一些工作多级问题,如救济,SVM-RFE,…
你好,这个工具箱适合多类别分类吗?如果是,如何实现它?谢谢你!
固定的。谢谢!
你好,
该函数属于线性函数——一个大型线性分类库,你可以在这里下载:https://www.csie.ntu.edu.tw/~cjlin/liblinear/
嗨,乔治,谢谢你分享你的工具箱!
我在使用DemoInfFD.m脚本时遇到了一些问题,因为当我运行它时,会出现以下错误:
“类型为'double'的输入参数的未定义函数'train'。
Demo_InfFS错误(第41行)
cv = train(Y_train, X_train_, cmd);
我在Windows 10上使用Matlab2016a。
有什么建议吗?
谢谢
埃琳娜
谢谢@Brad,我会尽快修好的;)
供参考——svmtrain() & svmclassify()
这些函数在2018b中被删除了,所以演示脚本在第200行左右失败。我相信下面的更新会解决这个问题…
%使用线性支持向量机分类器金宝app
svmStruct = fitcsvm (X_train (:, (1: k)), Y_train);
sv = svmStruct.金宝appSupportVectors;
gscatter (X_train (:, (1)), X_train (:, (2)), Y_train);抓住
情节(sv (: 1), sv(:, 2),‘ko’,‘MarkerSize’,10);推迟
C = predict(svmStruct, X_test(:,ranking(1:k)));
err_rate = sum(Y_test~= C)/P.TestSize;%错误分类率
conMat = confusionmat (Y_test C);混淆矩阵%
这个项目是另一种成功的努力。做得很好。
这是我在文件交换中发现的最好的完美工具箱之一!出色的工作!荣誉!
优秀的工作。
好? ?
哈,我找到我的错了。标签必须是1和-1,而不是1和0
谢谢你的分享,这对我很重要,谢谢
F.Y.I.
新特刊《特征选择与深度学习》
本期特刊的主要焦点将是特征选择和深度学习,也就是深度学习模型如何融入特征选择和排名策略的问题。
详情请参阅提交网页(https://www.mdpi.com/journal/informatics/special_issues/FSMDL)
太棒了,非常感谢!
你好,乔治!谢谢楼主分享!我有一个问题:[19]Lasso的源代码在哪里?我在工具箱里找不到它。
你好,乔治!这可能是一个愚蠢的问题……但是,在“cfs”函数中使用“scores”是什么意思?我如何访问这些值?代码不会在工作区中返回它们。
谢谢分享!
有些方法使用“nClass”变量来选择类的数量。工具箱里的其他方法呢?你知道它们是否适用于多类范式吗?
此外,如果你能提供实现方法的引用,那就太棒了!
谢谢!!
固定的。谢谢。
我“l检查. .对不起
嗨。我认为新版本包含了错误的infFS函数。演示失败是因为infFS给出了太多的参数。infFS。M说它来自4.0版本。
新版本可用,请先编译解决方案。运行make。
失踪libsvm_classifier_spider
这就跟你问声好!请参阅新版本6.1 ->增加了新的演示文件:如何为Inf-FS和ILFS选择最佳参数。
你用了多少代币?注意,T > = 4
我得到了误差:使用histc的误差;边向量必须单调非递减
你好,谢谢你的出色工作。我有个问题。当我在matlab2015b上运行这个工具箱在64位windows 8.1和8GB内存,我得到的错误'Out of memory'。我遵循了一些建议,如重置“Jave堆大小”,但它没有工作。我该怎么办?
对于matlab2018a
% svmStruct = svmtrain(X_train(:,ranking(1:k)),Y_train,'showplot',true);
% C = svmclassify(svmStruct,X_test(:,ranking(1:k)),'showplot',true);
svmClassifier = fitcsvm (X_train (:, (1: k)), Y_train);
[C, scores] = predict(svmClassifier, X_test(:,ranking(1:k));
你好,
我正在Windows10计算机上使用Matlab2015A。我总是得到这样的错误:“使用mex时出错
没有找金宝app到支持的编译器或SDK。的选项,请访问//www.tatmou.com/金宝appsupport/compilers/R2015a/win64.html“谁能帮帮我?”
嗨@dongyang !不幸的是,工具箱提供了一组排序方法,您应该预先确定子集的基数。如果你想要一个方法,为您提供功能的一个子集可以去套索方法,它们估计用于删除冗余特性通过减少权重为零,在这一过程中,您可以选择的子集的特性系数> 0。希望对大家有所帮助!最好的
你好乔治:
谢谢分享你的代码。我有一些问题,
我如何使用这个工具箱输出功能的子集,而不是功能的排序。
你好乔治:
我试图在RFE期间以“实时”的方式对测试数据进行交叉验证。
我试过在结构上设置一个.test\u('loss','class\u loss','data',test\u dset);
其中test_dset = data(X_test,Y_test);
这会在培训中引发错误:
未定义的函数或变量“组”。
rfe/training>的错误评估(第122行)
如果~ isa (a.test_on_the_fly。因此,“集团”),a.test_on_the_fly。结果=组;结束
你知道怎么解决吗?我不确定“group”应该是什么,以及是否需要设置a.test_on_the_fly。结果提前。
谢谢,
尼克
亲爱的乔治,
很高兴看到一切顺利地编译和运行
在版本6中。干得好!
嗨,乔治,
工具箱很棒。看起来rfe算法的排名总是1到N,不管我输入的数据是什么。我是不是漏掉了什么?排名应该是功能的重要性吗?
你好,我要发布一个新的6.0版本,有几个更新。最好的
你好,乔治
谢谢分享你的代码。我有一些问题,
如何在matlab 2017a中导入这个toolbax ?
错误使用墨西哥人
没有找金宝app到支持的编译器或SDK。的选项,请访问
//www.tatmou.com/金宝appsupport/compilers/R2014a/win64.
嗨
感谢您分享您的代码。这是我在编译时收到的一个错误,你能帮我吗?
使
+构建和安装
构建estmutualinfo.cpp的mex(dll)
使用“Microsoft Windows SDK 7.1(C++)”构建。
墨西哥人成功完成。
构建estpab.cpp的mex(dll)
使用“Microsoft Windows SDK 7.1(C++)”构建。
墨西哥人成功完成。
构建libsvm_classifier_spider.cpp的mex(dll)
警告:转义字符'\m'无效。有关受支持的特殊字符,请参见'doc spr金宝appintf'。
> In make(第20行)
错误使用墨西哥人
未知的文件扩展名。
make错误(第20行)
eval(['mex libsvm_classifier_spider.cpp svm.cpp -Icompiletools ',sprintf(['compiletools',filesep,' mexargr .cpp'])])
谢谢你乔治为这个难以置信的有用和容易使用的图书馆…
这就跟你问声好!
实际上,这不是一个库问题,您丢失的文件位于:FSLib_v5.2_2017/lib/compiletools/mexarg.h
编译器找不到它,因此可以尝试将文件夹和子文件夹添加到路径中,然后再次编译。
最好的
这是运行make时的完整错误集。m文件
错误使用墨西哥人
libsvm_classifier_spider.cpp
E:\FSLib_v5.2_2017 (1)\FSLib_v5.2_2017\lib\libsvm_classifier_spider.cpp(11): fatal . php . php . php . php . php . php . php . php . php . php . php
error C1083: Cannot open include file: 'mexarg.h': No such file or directory . error C1083: Cannot open include file: 'mexarg.h': No such file or directory
make错误(第20行)
eval(['墨西哥人libsvm_classifier_spider.cpp svm.cpp
-Icompiletools’,sprintf ([compiletools, filesep, ' mexarg.cpp ']))
特征选择方法:rfe
Training rfe(svm kernel linear) feat=43 output_rank=1…
训练时间1
训练SVM核线性....
未定义函数或变量'libsvm_classifier_spider'。
svm/training中的错误(第225行)
[α,xSV, bias0] = libsvm_classifier_spider ({X, X}, {Y, Y},…
算法/列车错误(103号线)
(dat,寒冷)=培训(藻类,dat);
rfe/training错误(第36行)
[res, a.child] =火车(未经训练,dat);
算法/列车错误(103号线)
(dat,寒冷)=培训(藻类,dat);
spider_wrapper错误(第55行)
(tr) =火车(a, dset);
rfe_rf错误(第16行)
ranking = spider_wrapper(TrainFeatures,TrainClass,numF, lower('rfe'));
请帮忙
@shun:谢谢你的反馈。我修复了这个bug,可能是在之前的上传中引入的。对不起。
FSV是一种包装方法。对不起,你在哪里找到了关于FSV和过滤器的参考?
嗨,乔治,我有一个问题,当使用infFS模式。在论文中,相关项是corr=1-abs(spearman(fi,fj)),但在你的代码中,为什么它看起来像corr=spearman(fi,fj)?
你好,Giorgio,我有一个关于fsv特征选择方法的问题,在你的指南中,你说fsv是一个包装方法,但你的代码表明它是一个过滤方法。你能告诉我你在代码中提到的原理吗?
运行“make.m”时发现此错误。然后该怎么办?
错误使用墨西哥人
没有找金宝app到支持的编译器或SDK。的选项,请访问//www.tatmou.com/金宝appsupport/compilers/R2014a/win32.
make错误(第17行)
墨西哥人([列表(我). name]);
优秀的工作
嗨,Giorgio,谢谢分享你的代码。我有一些问题,
我有100个样本(84 train 16 test),每个样本有648个属性,所以我有100*648矩阵。我创建x_train(84*648), y_train(84*1), x_test(16*648), y_test(16*1)。
选择方法后,会出现一些错误。我粘贴命令窗口;
+特征选择方法:10
Training l0(svm kernel linear) feat=648 output_rank=1....
训练SVM核线性....
由于依赖关系,约束1被移除
没有等式约束。。。
错误使用+
矩阵维数必须一致。
四次解误差(第414行)
Y = Y +fd*dy;
svm/training错误(第50行)
[alpha,bias]=quadsolve(KerMa,-one(大小(KerMa,1),1),y',0,算法C);
算法/列车错误(103号线)
(dat,寒冷)=培训(藻类,dat);
第10 /training错误(第30行)
[r, alg.child] =火车(alg.child datTemp);
算法/列车错误(103号线)
(dat,寒冷)=培训(藻类,dat);
spider_wrapper错误(第55行)
(tr) =火车(a, dset);
错误在feat_selec(第205行)
排名= spider_wrapper (X_train Y_train numF,低(selection_method));
你有什么建议吗?
这就跟你问声好!
为了编译工具箱,你只需要运行“make”。M ",从主文件夹。
请把车门打开。m文件and check the paths separator: addpath(genpath('./compiletools'));
/在Linux操作系统下使用,如果你在MS Windows上运行代码,你可能需要用\比如:addpath(genpath('.\compiletools'));
从您的输出中可以看出,您安装了一个合适的C编译器。如果您仍然有问题,复制和粘贴错误,否则很难理解是什么问题。最好的祝愿
你好,乔治,我和理查德有同样的问题。一开始我负责管理餐馆。-file并得到如下输出:
编译…
建筑与gcc。
墨西哥人成功完成。
建筑与gcc。
墨西哥人成功完成。
建筑与gcc。
墨西哥人成功完成。
建筑“g++”。
墨西哥人成功完成。
编译完成。
在那之后,我想运行制造。m文件,但得到错误:未知的文件扩展名"。make错误(第20行)。
我做错了什么?先谢谢你。
你好,这个下载不会使用make.m构建。我需要做什么?没有找到/lib/compiletools目录。在第20行运行make时发生错误。m文件。谢谢你!
嗨,很抱歉,mathworks的家伙因为上次上传的。mex文件而降级了库。我重新上传了上一个版本。
你好乔治,
我如何解决这个问题(我正在使用ILFS)
赋值具有比非单例下标更多的非单例rhs维度
你好,排名(1)是最有区别的特征。排名(结束)最差的功能。最好的
你好乔治,
我想知道在呼叫后哪些功能是如何排名的
[ranking, weights, subset] = ILFS(X_train, Y_train, 0);
排名(1)是“最具辨别力”的特征还是排名(结束)?
谢谢提前
你好,
请确保正确编译了工具箱:
在./FSLib_v5.0_2017/lib/drtoolbox——>中运行mexall.m
你应该有这样的输出:
> > mexall
编译…
建筑与gcc。
墨西哥人成功完成。
建筑与gcc。
墨西哥人成功完成。
建筑与gcc。
墨西哥人成功完成。
建筑“g++”。
墨西哥人成功完成。
编译完成。
使用internal.stats.parseArgs时出错(第42行)
参数个数错误。
pca错误(第170行)
[valalgorithm, vCentered, vEconomy, vNumComponents, vRows,vWeights,…]
在intrinsic_dim错误(第197行)
[mappedX, mapping] = pca(X, size(X, 2));
Untitled12错误(第39行)
dd = intrinsic_dim (X,技术{2});
根据我们在ICCV 2017“无限潜在特征选择:基于概率潜在图的排序方法”中的实验,我们的ILFS是最稳定、鲁棒的监督FS技术。
本文结果如下:https://goo.gl/WiDmu2
要执行多类FS,您总是可以使用1对所有策略。
假设我们有4个类。
我们可以通过设置相应的类标签来获得代表每个类的最佳子集:
标签1到类1标签-1到类2,3,4
标签1到类2标签-1到类1,3,4
标签1到类别3,标签-1到1,2,4
标签1到类别4,标签-1到类别2,3,4
然后我们可以提取最大公共子集(交1、2、3、4)。
你好,
请向我推荐此工具箱中用于高维多类数据(7类)的最佳监督特征选择方法
你好,
当我在训练数据和训练标签上使用mRMR方法时,MATLAB总是崩溃。
有人有类似的问题吗?
>> fea,score] = mRMR(M,L,10) %其中M是X-train, L是Y-train,我想选择10个特征。
------------------------------------------------------------------------
在2017年8月13日星期日21:38:47检测到访问违规
------------------------------------------------------------------------
.
.
.
提前谢谢你!
感谢您的贡献,我有一个关于LaplacianScore的问题。当我将您的代码用于代码中包含的示例时,关于constructW函数,它会给我一个警告:“警告:此函数已更改,不再支持度量”,在续文中,它会给我一个LaplacianScore错误(fea,W)功能:金宝app
下标下标必须是实正整数或逻辑数。正如我说的,实现是在rand数据上完成的,这是代码解释中的一个例子。如果你能解释一下原因,我将不胜感激。
无限的特征选择以监督和无监督的方式进行,您可以简单地设置参数sup=1(监督)或sup=0(无监督)来进行选择。
[ranking, w] = infFS(X_train, Y_train, alpha, sup, 0);
X_train是一个矩阵,标准的“设计矩阵”(参见Bishop, 2006),每一行是一个样本,每一列是一个特征。
Y_train是一个标签列向量,如果你有两个类,这个向量看起来像这样:[1,1,1,-1,-1,1,-1,等等。]“
Alpha是混合参数,你可以设置Alpha =0.9通常工作得很好。
没有办法知道有多少特征可以使用先验,大多数FS方法只是根据它们的相关度对特征进行排名,所以你可以选择排名前N的特征,并将它们传递给分类器,看看它们是如何工作的。如果不够,你可以相应地增加N…
排名前N的特征可能是对分类贡献最大的特征
最好!
Julien,我用ReliefF算法解决了一个类似的问题,它工作得非常好!
祝你好运
嗨,很抱歉问这个非常基础的问题。在二值分类任务中,这种方法可以用来识别哪些(视觉)特征对给定图像的分类贡献最大?谢谢。朱利安
你好,
我在相同的数据上运行了两次代码却得到了不同的结果,这有意义吗?
我使用了mrmr和fisher方法。
谢谢!
eliya。
我的评论消失了。
SVM- rfe是基于SVM的,所以
你把输入的数据规范化了吗?当输入在[0,1]范围内时,支持向量机工作得更好更快,
一个非常简单的方法是:X = X ./ sum(X,2)
2)检查在你的Y向量中是否有像[1 1 1 1 3 3 3 4 4 4 4 5 5 5 5]<-这里没有2,也许这会产生一个异常。在这种情况下,你应该重新分配标签如下:
[1 1 1 1 1 3 3 3 4 4 4 4 5 5 5 5]——> [1 1 1 1 1 1 1 2 2 2 2 3 3 3 4 4 4 4 4 4 4]
****抱歉"check if in your Y vector you have missing labels like[1 1 1 1 3 3 3 4 4 4 5 5 5 5] <-这里没有4,可能这会产生异常。"
我的意思是2号标签不见了…在这种情况下,你应该像这样重新分配标签:
[1 1 1 1 1 3 3 3 4 4 4 4 5 5 5 5]——> [1 1 1 1 1 1 1 2 2 2 2 3 3 3 4 4 4 4 4 4 4]
最好的
嗨,亲爱的Giorgio Roffo
我已经使用svm-rfe(FSLIB)为两个类似的数据集(臭氧和臭氧2),但臭氧数据集正确运行和臭氧2数据集运行它不结束。
%函数SR = SVMRFEOzone (TrainData)
% %演示文件
fprintf('\nFEATURE SELECTION TOOLBOX v 4.0 2016 - For Matlab \n');
%从列表中选择一个特征选择方法
listFS ={‘InfFS’,‘ecf’,‘mrmr’,‘relieff’,‘mutinffs’,‘fsv’,‘拉普拉斯算子’,‘mcf’,‘rfe’,‘10’,‘雪’,‘udf’,‘llcfs’,cfs的};
[methodID] = readInput(listFS);
selection_method = listFS {methodID};%选择
%包括依赖关系
目录(' / lib。');%的依赖性
目录(' /方法。');% FS方法
特征数量%
% numF = size(X_train,2);
vectorvote = 0 (72);
TrainData =负载(“ozone.mat”);
TrainData = TrainData.TrainData;
%训练数据的特征选择
X_train = TrainData (1:201 1:72);
Y_列车=列车数据(1:201,73);
排名= spider_wrapper (X_train Y_train 60,降低(rfe));
61:72 rankingD =排序(排序(1));
rankingB =排序(排序(1一60));
vectorvote (rankingD (:)) = vectorvote (1, rankingD (:)) + 9;
TrainData (:, rankingD (:)) = [];
%--------------------------------------------------------------
X_train1 = TrainData(201:400一60);
Y_train1 = TrainData (201:400, 61);
ranking1 = spider_wrapper (X_train1 Y_train1 60,降低(rfe));
51:60 rankingD1 =排序(ranking1 (1));
rankingB1 =排序(ranking1 (1:50));
排名B1=排名B(排名B1(:);
vectorvote (rankingB (rankingD1 (:))) = vectorvote (1, rankingB (rankingD1 (:))) + 8;
TrainData (:, rankingD1 (:)) = [];
% --------------------------------------------------------------
X_train2 = TrainData (401:600, 1:50);
Y_train2 = TrainData (401:600, 51);
ranking2 = spider_wrapper (X_train2 Y_train2 40,降低(rfe));
41:50 rankingD2 =排序(ranking2 (1));
rankingB2 =排序(ranking2 (1, 1));
rankingB2 = rankingB1 (rankingB2 (:));
vectorvote (rankingB1 (rankingD2 (:))) = vectorvote (1, rankingB1 (rankingD2 (:))) + 7;
TrainData (:, rankingD2 (:)) = [];
%--------------------------------------------------------------
X_train3 = TrainData (600:801, 40);
Y_train3=列车数据(600:801,41);
ranking3 = spider_wrapper (X_train3 Y_train3 30,降低(rfe));
31:40 rankingD3 =排序(ranking3 (1));
rankingB3 =排序(ranking3 (1:30));
rankingB3 = rankingB2 (rankingB3 (:));
vectorvote (rankingB2 (rankingD3 (:))) = vectorvote (1, rankingB2 (rankingD3 (:))) + 6;
TrainData (:, rankingD3 (:)) = [];
%--------------------------------------------------------------
X_train4 = TrainData (802:1000, 1:30);
Y_train4 = TrainData (802:1000 31);
ranking4 = spider_wrapper (X_train4 Y_train4 25,降低(rfe));
26:30 rankingD4 =排序(ranking4 (1));
rankingB4 =排序(ranking4 (1:25));
rankingB4 = rankingB3 (rankingB4 (:));
vectorvote (rankingB3 (rankingD4 (:))) = vectorvote (1, rankingB3 (rankingD4 (:))) + 5;
TrainData (:, rankingD4 (:)) = [];
TrainData1 =负载(“ozone2.mat”);
TrainData1=TrainData1.xc11;
%训练数据的特征选择
X_train = TrainData1 (1:201 1:72);
Y_train = TrainData1 (1:201, 73);
排名= spider_wrapper (X_train Y_train 60,降低(rfe));
61:72 rankingD =排序(排序(1));
rankingB =排序(排序(1一60));
vectorvote (rankingD (:)) = vectorvote (1, rankingD (:)) + 9;
TrainData (:, rankingD (:)) = [];
%--------------------------------------------------------------
X_train1=列车数据1(201:400,1:60);
Y_train1 = TrainData1 (201:400, 61);
ranking1 = spider_wrapper (X_train1 Y_train1 60,降低(rfe));
51:60 rankingD1 =排序(ranking1 (1));
rankingB1 =排序(ranking1 (1:50));
排名B1=排名B(排名B1(:);
vectorvote (rankingB (rankingD1 (:))) = vectorvote (1, rankingB (rankingD1 (:))) + 8;
TrainData (:, rankingD1 (:)) = [];
% --------------------------------------------------------------
X_train2 = TrainData1 (401:600, 1:50);
Y_train2 = TrainData1 (401:600, 51);
ranking2 = spider_wrapper (X_train2 Y_train2 40,降低(rfe));
41:50 rankingD2 =排序(ranking2 (1));
rankingB2 =排序(ranking2 (1, 1));
rankingB2 = rankingB1 (rankingB2 (:));
vectorvote (rankingB1 (rankingD2 (:))) = vectorvote (1, rankingB1 (rankingD2 (:))) + 7;
TrainData (:, rankingD2 (:)) = [];
%--------------------------------------------------------------
X_train3=列车数据1(600:801,1:40);
Y_train3 = TrainData1 (600:801, 41);
ranking3 = spider_wrapper (X_train3 Y_train3 30,降低(rfe));
31:40 rankingD3 =排序(ranking3 (1));
rankingB3 =排序(ranking3 (1:30));
rankingB3 = rankingB2 (rankingB3 (:));
vectorvote (rankingB2 (rankingD3 (:))) = vectorvote (1, rankingB2 (rankingD3 (:))) + 6;
TrainData (:, rankingD3 (:)) = [];
%--------------------------------------------------------------
X_train4 = TrainData1 (802:1000, 1:30);
Y_train4 = TrainData1 (802:1000 31);
ranking4 = spider_wrapper (X_train4 Y_train4 25,降低(rfe));
26:30 rankingD4 =排序(ranking4 (1));
rankingB4 =排序(ranking4 (1:25));
rankingB4 = rankingB3 (rankingB4 (:));
vectorvote (rankingB3 (rankingD4 (:))) = vectorvote (1, rankingB3 (rankingD4 (:))) + 5;
TrainData (:, rankingD4 (:)) = [];
你好,乔治!
非常感谢这个工具箱!
我有一个关于fisher线性判别的特征选择的问题。在关于工具箱的文章中,您引用了Gu等人提出的广义特征评分,但工具箱似乎执行了Duda等人2012定义的“简单”fisher选择。对吗?
这就跟你问声好!感谢下载工具箱,有些技术可以为您提供一些功能子集。但通常情况下,它们只是执行排序步骤,在这种情况下,您可以预先决定选择多少功能,或使用任何形式的交叉验证来决定(大致)需要维护多少功能。
非常感谢您的宝贵贡献。
我刚刚下载了你开发的FSLib。我有一个问题。在特征排序过程之后,我们如何决定需要多少特征才能达到最好的准确性?
忘记下面的评论吧。发现Matlab编译器不是唯一可用的。顺便说一下,这个工具箱很好用。
想尝试这个,但我没有访问Matlab编译器。是否有预编译版本可用?(除了第一个评论中的死链接)谢谢!
FS的伟大工具,有很好的文档和优秀的README文件,包含各种方法的详细信息和参考。
我希望它可以用于多类或基于回归的功能选择,但我会看看我是否能找到一种方法使它成为可能。
-编辑:值得注意的是,这里使用的SVM工具“将在未来的版本中被移除”,并将需要在某个点被更新的功能替换。
--EDIT2:至少了解了如何让多个类为fisher工作。对于其他感兴趣的人:
1.将标签(Y)转换为nxm矩阵,其中m=类的数量,n=样本的数量(如Demo中值为-1或1)。
2.修改'spider_wrapper'第10行:a.method='classification';%可以是任意数字1-3,取决于您的方法偏好(参见FSLib_v4.2_2016/FSLib_v4.2_2016/FSLib_v4.2_2016/lib/@fisher/training的第60行。详情)
3.不要尝试使用支持向量机绘制结果,这对多类数据不起作用。在特性选择之后停止(Demo.m的第149行)。
Hi Davide, '\'和'/' for路径与你的操作系统(Linux或Windows)相关,所以可能你需要切换到另一个基于它的,你是受欢迎的:)
嗨,乔治,谢谢你的建议。在make文件的第9行,在路径"/lib"下,有一个\而不是/。欢呼:)
嗨,Davide,你确定你编译了解决方案吗?在使用工具箱之前,您应该运行make文件,它似乎是一个mex文件丢失了,还检查将FSLib文件夹及其子文件夹包含到路径中。
ranking = spider_wrapper(X,Y,N_DS,lower('rfe'))触发堆栈错误跟踪:
未定义函数'libsvm_classifier_spider'用于类型为'cell'的输入参数。
svm/training中的错误(第225行)
[α,xSV, bias0] = libsvm_classifier_spider ({X, X}, {Y, Y},…
算法/列车错误(103号线)
(dat,寒冷)=培训(藻类,dat);
rfe/training错误(第36行)
[res, a.child] =火车(未经训练,dat);
算法/列车错误(103号线)
(dat,寒冷)=培训(藻类,dat);
spider_wrapper错误(第12行)
(tr) =火车(a, dset);
你能建议我怎么解决吗?
Hi David, info - fs是一个无监督的方法,但是在这个工具箱中,您可以找到该方法的两种变体。
功能[排名,权重]=infFS(X_序列,Y_序列,alpha,监督,详细)
设置监督=0来使用无监督版本,在这种情况下可以设置Y_train=[]
如果你想使用supervised版本,那么设置supervision=1并提供正确的类标签。
谢谢你的问题,
希望这可以帮助!
大家好,有一个关于infFS算法的问题。如果它是一个无监督的特征选择方法,为什么必须提供带有类标签的Y_train向量呢?
这个工具箱能处理多类数据吗?我有1320个特征和3类的数据,我需要特征选择阶段。但这个工具箱对我的数据不起作用。
我发现FSLib是一个非常有用的工具!非常感谢开发者!
你好,谢谢你的反馈。我在zip文件中添加了“特性选择库(MATLAB工具箱)”文件。它讨论了最重要的FS方法。至于可用性,您可以在工具箱中找到一个Demo文件,该文件的设计目的是允许用户轻松地运行代码,并使用工具箱提供的所有方法。
您好,您的工具箱似乎非常有趣,但您是否提供了任何“自述”文件或任何其他文档来学习如何使用它?
非常感谢!
太好了!谢谢你!
您好,非常感谢库。我有一个问题。对于Fisher[6]方法,库是否实现了Gu Quanquan等人2012年提出的广义Fisher分数(更复杂),或者只是经典Fisher分数。谢谢。
完整的代码预编译:http://giorgioroffo.it/projects/infFS/FSLib_v1.1.zip