图片缩略图

特征选择图书馆

version 7.0.2020.3 (723 KB) by 乔治•
特征选择库(MATLAB工具箱)
4.8
61年评级

222下载

更新2020年5月03

查看许可协议

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中央文件交换。检索

意见及评分(162

李永好

金宝app支持作者

帕拉维·帕蒂尔

嗨,乔治,我现在可以使用演示代码。我试着运行不同的过滤器,每个过滤器我得到不同的排名。在这种情况下,我如何决定哪些特性是最重要的。请帮助。我应该用其他代码试试吗?

尼古拉·杜

菲利普Assuncao

我有同样的问题“无法安装工具箱‘特性选择库’,因为工具箱文件已损坏。”我该如何解决?

阿扎尔Alizadeh

你好,我试图安装工具箱,但我得到“无法安装工具箱'特性选择库',因为工具箱文件损坏”。有什么问题吗?我的Matlab更新。
谢谢

Zeynab Mousavikhamene

有一点:我想知道你是否能在代码的什么地方找到了w(变换矩阵),并将其应用到fisher参考书中的方程式3.83中。我看到在训练中计算了相关性。m,但没有变换。在Fisher方法中,特征的排序是在它们转换到一个新的空间之后进行的。

Zeynab Mousavikhamene

更新:我尝试探索每个功能的权重(不仅仅是输出排名),我尝试添加a.rank到输出,我收到了这个错误:
a.weights
索引超过数组元素的数量(0)。

fisher/subsref中的错误(第72行)
坏蛋=堆栈{1};

Zeynab Mousavikhamene

Zeynab Mousavikhamene

Zeynab Mousavikhamene

Giorgio各个特征选择器的输出排名。我还需要知道每个功能的得分。显然,该软件不会报告每个功能的得分。

乔治•

你好@Zeynab,谢谢你的问题。listFS是一个字符串单元格数组,methodID应该是一个整数值。您确定正确地索引了数组吗?例如,listFS{1}或listFS{2}等。
Q2:特征选择应该应用于训练数据,这是因为你不应该有测试数据(和它的标签在监督的情况下设置),如果你在整个数据集应用FS是不公平的,你的特征选择策略运作(~显然更好~),因为它见证了所有的数据,但是,您对数据进行了过度拟合(具有很高的概率),并在实际测试数据上失去了泛化能力。谷歌搜索关于ML中训练/测试分割的动机以获得更多细节。
Q3:加入随机特征是为了表明FS可以有效地检测那些不相关的特征(Random -> by construction)并丢弃它们。它是一个演示文件,因此玩具数据是演示的一部分,您可以看到不同的方法如何检测和选择相关的特性。这个演示提供了工具箱中FS方法集之间的简单比较。谢谢你的问题,希望我的回答能有所帮助!

Zeynab Mousavikhamene

你好,乔治
为什么要在演示中运行特征选择?我认为对整个数据点进行特征选择可以得到更全面的数据趋势结果。另外,请您解释一下为什么在演示中再次向列车集添加了随机特征值(X_train = [X_train,rand(120,4)];) ?
谢谢

乔治•

嗨@pallavi,您使用哪些X_train数据和y来提供分类器?看起来你的数据X和Y有问题,请检查你是否正确地将它们传递给函数。

Zeynab Mousavikhamene

你好,乔治
我收到这个错误时,试图运行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。

Shinuk金

亲爱的乔治,
我已经用蜘蛛超过10年了。现在我安装工具箱和尝试数据,但它总是错误命令显示。在数据中,它显示数据(算法,X,Y)或数据(X,Y)都可以工作。然而我输入数据(X,Y),它说显示错误:没有足够的输入参数。data中的'algorithm'格式是什么,fisher中的'hyper'格式是什么?
你能帮我个忙吗?

Zehua戴

谢谢你的工作。
我在使用这个工具箱时遇到了一些问题。
当我运行演示。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?

adhusch

使用Brad(2018年12月26日)提供的补丁更新演示是在最近的Matlab上运行的必要条件。如果能更新源代码就好了。

默罕默德Safdar

乔治•

嗨Marc,谢谢你下载工具箱,似乎你在drtoolbox而不是fslib上遇到了问题。下载降维工具箱,因为您在这里找到的只是一个库,只有几个函数。

Marc Youcef

嗨,我确定后面的工作是伟大的,但我真的面临很多麻烦得到test_toolbox。我希望能正常运行。我得到了多个错误,如:
------------
'位置2的索引超过数组边界(不能超过3)。'
警告:使用CorrDim进行固有维数估计失败!
-------------
它是看着某一点:
MATLAB \附件\工具箱\ \特征选择图书馆\ FSLib_v6.2.1_2018 \ lib \ \ csdp.exe drtoolbox \技术
请问我怎样才能买到这个?

除此之外,我还试着运行drgui。m,当使用散点绘图时,我得到了一个num2str错误,就像scatter112行一样。它试图使num2str(hs,'%20.20f')和hs是一个句柄。
非常感谢你所做的一切。

高科技的人

萨玛Ragab

@Giorgio非常感谢
我有一个问题,我不明白:
当运行演示文件(使用FSV方法或fisher)对我的数据,它给我的准确性85% ..然后我尝试运行demo_infffs文件,但它给了我57%的准确率!!我的错在哪里?
感谢问候;

王濛

嗨,谢谢你的出色工作。我有一个问题。
如果像rfe这样的包装器方法也只返回单个权重的排名,这让我对如何实现感到困惑。在我看来,我们必须在包装器方法中尝试不同的特征子集,而不是单个特征。因此,对我来说,您似乎需要评估包装代码中的功能子集,比如Xsubset,以及其他一些方法,以提取各个功能的重要性,比如Xindiv,跨所有使用的功能集。最后我们得到排名。如果是这样,为什么不返回每个特征子集的结果,即Xsubset。因为当我们使用包装器方法时,我们希望得到最好的子集。即使代码返回单个排名,我也不确定组成子集的最前面的几个特性是否是最佳子集。

力平黄

@Giorgio谢谢你的帮助!

乔治•

如果你的数据是非数值的
标签={“蓝”、“绿色”、“红色”};
有些函数不起作用。你需要像这样的数字数据:
标签=(1、2、3)

乔治•

看起来你的数据不是数字(int, float, double)

力平黄

我有以下错误,谁能帮助这个
未定义函数'isnan'用于输入类型为'标称'的参数。

乔治•

@samar ragab谢谢你的帮助!

萨玛Ragab

@曹文彦
注意:你必须有"visual studio"和"x86_64-w64-mingw32"
只要下载这个库,这个库也是“大型线性分类库”,你可以在这里下载:https://www.csie.ntu.edu.tw/~cjlin/liblinear/
然后运行。m文件。如果效果好,那就没问题。另一方面,你应该按照自述文件来运行它。
最好的祝愿

闻堰曹

你好,我是个新手。这是一个很有创意的问题。我该如何使用这个工具箱?我希望你能给我指导。我会很感激的。

萨玛Ragab

如何实现这个库(Demo & Demo_InfFS)的多类问题?
提前感谢;

Ananya Dutta

如何找出哪两个特征得到秩1和秩2,即哪些特征被选中。

Ananya Dutta

获取mex文件错误。我不知道该怎么办

马西莫Ribilini

这就跟你问声好!非常感谢你给我这个图书馆。我们公司正在使用它。

王约翰

你好,这可能是一个愚蠢的问题,但是否有可能为进入一个特征选择算法(例如特征向量中心性算法)的每个特征提供预先指定的权重?

菲利克斯•伊曼纽尔

你好,乔治,你真的做得很好。我一直在寻找这样的代码使用的机会。我已经提取了特征,当我应用支持向量机时,分数非常低,我相信这有助于提高提取特征的性能。我对代码有异议。我试图先使用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);

萨玛Ragab

你好,我有一个错误,而运行Dimo_InfFs.m
对非结构数组对象的字段赋值。

列车错误(第32行)
algo.training_time = cputime;

Demo_InfFS错误(第41行)
cv = train(Y_train,X_train_, cmd);
任何帮助请吗?

肯Irok

你好,我有一个关于这个的问题。我目前有一组数据(12列),并计划对上述数据进行分类(使用KNN, SVM等)。现在,我计划从数据中删除一些列,以提高它的准确性。这个功能选择库似乎非常适合它。然而,刚开始使用MATLAB,我目前对编译工具箱没有任何想法。在编译单个库(特征选择方法。m文件)时,我得到了一些错误。任何帮助,这是高度赞赏。谢谢。

乔治•

这就跟你问声好!你是说多类分类吗?
在情况下,是的。
所有“无监督”的FS方法自然适合于多类问题,因为它们不考虑任何类标签。
至于“监督的”,FS方法,其中一些工作多级问题,如救济,SVM-RFE,…

双凌彭

你好,这个工具箱适合多类别分类吗?如果是,如何实现它?谢谢你!

埃琳娜Bassanelli

固定的。谢谢!

乔治•

你好,
该函数属于线性函数——一个大型线性分类库,你可以在这里下载:https://www.csie.ntu.edu.tw/~cjlin/liblinear/

埃琳娜Bassanelli

嗨,乔治,谢谢你分享你的工具箱!
我在使用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);混淆矩阵%

这个项目是另一种成功的努力。做得很好。

这是我在文件交换中发现的最好的完美工具箱之一!出色的工作!荣誉!

V RAJINIKANTH

优秀的工作。

frankjk

好? ?

郑彭

哈,我找到我的错了。标签必须是1和-1,而不是1和0

神凯文

莉莉郭

谢谢你的分享,这对我很重要,谢谢

乔治•

F.Y.I.
新特刊《特征选择与深度学习》
本期特刊的主要焦点将是特征选择和深度学习,也就是深度学习模型如何融入特征选择和排名策略的问题。
详情请参阅提交网页(https://www.mdpi.com/journal/informatics/special_issues/FSMDL

勒•Robelli

太棒了,非常感谢!

生动的郑

你好,乔治!谢谢楼主分享!我有一个问题:[19]Lasso的源代码在哪里?我在工具箱里找不到它。

佩德罗博尔赫斯

佩德罗博尔赫斯

你好,乔治!这可能是一个愚蠢的问题……但是,在“cfs”函数中使用“scores”是什么意思?我如何访问这些值?代码不会在工作区中返回它们。

Hamzeh Ghasemzadeh

谢谢分享!
有些方法使用“nClass”变量来选择类的数量。工具箱里的其他方法呢?你知道它们是否适用于多类范式吗?
此外,如果你能提供实现方法的引用,那就太棒了!

水晶杨

谢谢!!

乔治•

固定的。谢谢。

乔治•

我“l检查. .对不起

尼古拉斯·布劳赫

嗨。我认为新版本包含了错误的infFS函数。演示失败是因为infFS给出了太多的参数。infFS。M说它来自4.0版本。

乔治•

新版本可用,请先编译解决方案。运行make。

百万桶Idrisi科技

失踪libsvm_classifier_spider

乔治•

这就跟你问声好!请参阅新版本6.1 ->增加了新的演示文件:如何为Inf-FS和ILFS选择最佳参数。

乔治•

你用了多少代币?注意,T > = 4

Hello-Caihua

我得到了误差:使用histc的误差;边向量必须单调非递减

Jinya苏

Hello-Caihua

你好,谢谢你的出色工作。我有个问题。当我在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。结果提前。

谢谢,
尼克

Grzegorz Nowacki

Ioannis

亲爱的乔治,

很高兴看到一切顺利地编译和运行
在版本6中。干得好!

小民曰

嗨,乔治,

工具箱很棒。看起来rfe算法的排名总是1到N,不管我输入的数据是什么。我是不是漏掉了什么?排名应该是功能的重要性吗?

乔治•Roffo

你好,我要发布一个新的6.0版本,有几个更新。最好的

omid eghbali

你好,乔治
谢谢分享你的代码。我有一些问题,
如何在matlab 2017a中导入这个toolbax ?

chintan沙

错误使用墨西哥人
没有找金宝app到支持的编译器或SDK。的选项,请访问
//www.tatmou.com/金宝appsupport/compilers/R2014a/win64

arghavani


感谢您分享您的代码。这是我在编译时收到的一个错误,你能帮我吗?
使
+构建和安装
构建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'])])

康纳Fahy

谢谢你乔治为这个难以置信的有用和容易使用的图书馆…

康纳Fahy

拉杰卜·穆克吉

乔治•Roffo

乔治•Roffo

这就跟你问声好!
实际上,这不是一个库问题,您丢失的文件位于:FSLib_v5.2_2017/lib/compiletools/mexarg.h
编译器找不到它,因此可以尝试将文件夹和子文件夹添加到路径中,然后再次编译。
最好的

Harsha Dudeja

这是运行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 ']))

Harsha Dudeja

特征选择方法: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是一个包装方法,但你的代码表明它是一个过滤方法。你能告诉我你在代码中提到的原理吗?

PRADOSH NAYAK

运行“make.m”时发现此错误。然后该怎么办?

错误使用墨西哥人
没有找金宝app到支持的编译器或SDK。的选项,请访问//www.tatmou.com/金宝appsupport/compilers/R2014a/win32

make错误(第17行)
墨西哥人([列表(我). name]);

佩图兹说

优秀的工作

将有关ODABAS YILDIRIM

嗨,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行)。
我做错了什么?先谢谢你。

理查德Finlan

你好,这个下载不会使用make.m构建。我需要做什么?没有找到/lib/compiletools目录。在第20行运行make时发生错误。m文件。谢谢你!

乔治•

嗨,很抱歉,mathworks的家伙因为上次上传的。mex文件而降级了库。我重新上传了上一个版本。

法姆

你好乔治,
我如何解决这个问题(我正在使用ILFS)
赋值具有比非单例下标更多的非单例rhs维度

Suhani阿加瓦尔

Vinayak Swarnkar

乔治•

你好,排名(1)是最有区别的特征。排名(结束)最差的功能。最好的

你好乔治,

我想知道在呼叫后哪些功能是如何排名的

[ranking, weights, subset] = ILFS(X_train, Y_train, 0);

排名(1)是“最具辨别力”的特征还是排名(结束)?

谢谢提前

乔治•

你好,
请确保正确编译了工具箱:
在./FSLib_v5.0_2017/lib/drtoolbox——>中运行mexall.m

你应该有这样的输出:

> > mexall
编译…
建筑与gcc。
墨西哥人成功完成。
建筑与gcc。
墨西哥人成功完成。
建筑与gcc。
墨西哥人成功完成。
建筑“g++”。
墨西哥人成功完成。
编译完成。

Suhani阿加瓦尔

使用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});

里斯Chappell

yap林

乔治•

根据我们在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)。

乌尼克里希南P

你好,
请向我推荐此工具箱中用于高维多类数据(7类)的最佳监督特征选择方法

穆罕默德Alhussan

你好,
当我在训练数据和训练标签上使用mRMR方法时,MATLAB总是崩溃。
有人有类似的问题吗?

>> fea,score] = mRMR(M,L,10) %其中M是X-train, L是Y-train,我想选择10个特征。
------------------------------------------------------------------------
在2017年8月13日星期日21:38:47检测到访问违规
------------------------------------------------------------------------


提前谢谢你!

amr alanwar

rabbasi

感谢您的贡献,我有一个关于LaplacianScore的问题。当我将您的代码用于代码中包含的示例时,关于constructW函数,它会给我一个警告:“警告:此函数已更改,不再支持度量”,在续文中,它会给我一个LaplacianScore错误(fea,W)功能:金宝app
下标下标必须是实正整数或逻辑数。正如我说的,实现是在rand数据上完成的,这是代码解释中的一个例子。如果你能解释一下原因,我将不胜感激。

维克多Calle

乔治•

无限的特征选择以监督和无监督的方式进行,您可以简单地设置参数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的特征可能是对分类贡献最大的特征
最好!

地中海Aymane Ahajjam

Julien,我用ReliefF算法解决了一个类似的问题,它工作得非常好!
祝你好运

朱利安

嗨,很抱歉问这个非常基础的问题。在二值分类任务中,这种方法可以用来识别哪些(视觉)特征对给定图像的分类贡献最大?谢谢。朱利安

Eliya苏丹

你好,
我在相同的数据上运行了两次代码却得到了不同的结果,这有意义吗?
我使用了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]
最好的

elahe afshari

嗨,亲爱的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选择。对吗?

乔治•

这就跟你问声好!感谢下载工具箱,有些技术可以为您提供一些功能子集。但通常情况下,它们只是执行排序步骤,在这种情况下,您可以预先决定选择多少功能,或使用任何形式的交叉验证来决定(大致)需要维护多少功能。

Zafer COMERT

非常感谢您的宝贵贡献。
我刚刚下载了你开发的FSLib。我有一个问题。在特征排序过程之后,我们如何决定需要多少特征才能达到最好的准确性?

jae baak

忘记下面的评论吧。发现Matlab编译器不是唯一可用的。顺便说一下,这个工具箱很好用。

jae baak

想尝试这个,但我没有访问Matlab编译器。是否有预编译版本可用?(除了第一个评论中的死链接)谢谢!

佩德罗第24位

德文·沙利文

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)相关,所以可能你需要切换到另一个基于它的,你是受欢迎的:)

大卫。Nardone

嗨,乔治,谢谢你的建议。在make文件的第9行,在路径"/lib"下,有一个\而不是/。欢呼:)

乔治•

嗨,Davide,你确定你编译了解决方案吗?在使用工具箱之前,您应该运行make文件,它似乎是一个mex文件丢失了,还检查将FSLib文件夹及其子文件夹包含到路径中。

大卫。Nardone

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向量呢?

nVIDIApascal

YJXia

赫尔米·哈米德

杨怡婷

Afsoon

这个工具箱能处理多类数据吗?我有1320个特征和3类的数据,我需要特征选择阶段。但这个工具箱对我的数据不起作用。

安德里亚

洛里被关闭的

我发现FSLib是一个非常有用的工具!非常感谢开发者!

大卫

乔治•

你好,谢谢你的反馈。我在zip文件中添加了“特性选择库(MATLAB工具箱)”文件。它讨论了最重要的FS方法。至于可用性,您可以在工具箱中找到一个Demo文件,该文件的设计目的是允许用户轻松地运行代码,并使用工具箱提供的所有方法。

加布里埃尔Theberge

您好,您的工具箱似乎非常有趣,但您是否提供了任何“自述”文件或任何其他文档来学习如何使用它?
非常感谢!

安德鲁斯Sobral

太好了!谢谢你!

Chuong阮

您好,非常感谢库。我有一个问题。对于Fisher[6]方法,库是否实现了Gu Quanquan等人2012年提出的广义Fisher分数(更复杂),或者只是经典Fisher分数。谢谢。

frankjk

黄海

乔治•

更新

7.0.2020.3

拼写错误

7.0.2020.2

更新了演示文件:Demo_InfFS.m
要运行此代码,您需要完成它。
该文件尚未准备好运行。你可以用一部分。
您需要添加您的数据集并安装LIBLINEAR SVM分类器

7.0.2020.1

从Brais Cancela的评论来看,ILFS方法已经做了一些更新。
重要提示:
PLSA + EM算法的实现基于代码:
https://github.com/lizhangzhan/plsa
https://github.com/lizhangzhan/plsa/blob/master/plsa.m

6.2.2018.1

添加方法:infFS_fast

6.2.2018.0

+新方法:
[1]董继玲女士
[2] InfFS
[3] ecf
[4] mrmr
[5] 救济
[6] mutinffs
[7] fsv
[8]拉普拉斯算子
[9] mcf
[10] rfe
[11] L0
[12]费舍尔
[13] udf
[14] llcfs
[15]慢性疲劳综合症
[16] fsasl
[17] dgufs
[18] ufsol
[19]套索

6.1.2018.0

+增加了新的演示文件:如何为Inf-FS和ILFS选择最佳参数。
+如何使用info - fs方法获得最佳结果。

6.0.2018.0

+文件分隔符当前平台包括。

MATLAB版本兼容性
创建R2017b
与任何版本兼容
平台的兼容性
窗户 macOS Linux

FSLib_v7.0.1_2020_2

FSLib_v7.0.1_2020_2 / eval_metrics

FSLib_v7.0.1_2020_2 / lib

FSLib_v7.0.1_2020_2 / lib / @algorithm

FSLib_v7.0.1_2020_2 / lib / @ data

FSLib_v7.0.1_2020_2 / lib / @distance

FSLib_v7.0.1_2020_2 / lib / @fisher

FSLib_v7.0.1_2020_2 / lib / @kernel

FSLib_v7.0.1_2020_2 / lib / @l0

FSLib_v7.0.1_2020_2 / lib / @loss

FSLib_v7.0.1_2020_2 / lib / @rfe

FSLib_v7.0.1_2020_2 / lib / @svm

FSLib_v7.0.1_2020_2 / lib / drtoolbox

FSLib_v7.0.1_2020_2 / lib / drtoolbox / gui

FSLib_v7.0.1_2020_2/lib/drtoolbox/technologies

FSLib_v7.0.1_2020_2 / lib /文件

FSLib_v7.0.1_2020_2 /方法