图片缩略图

特征选择图书馆

version 7.0.2020.3 (723 KB) by 乔治•
特征选择库(MATLAB工具箱)

159个下载

更新2020年5月03日

查看版本历史记录

查看许可协议

功能选择库(FSLib 2018)为特征选择一个广泛适用的MATLAB库(属性或变量选择),能够降低高维的问题,以最大限度地提高数据模型的精确度,自动决策规则的性能以及减少数据采集​​成本。
* FSLIB通过Matlab于2017年通过收到Matlab Central Coin颁发。
如果您在此工具箱上给我们一些反馈,我们将非常感谢它。我们重视您的意见,欢迎您的评级。
如果使用我们的工具箱(或包含在其中的方法),请考虑引用:
Roffo, G., Melzi, S., Castellani, U. and Vinciarelli, A., 2017。无限潜在特征选择:一种基于概率潜在图的排序方法。arXiv预印本arXiv: 1707.07538。
[2] Roffo,G.,梅尔齐,S。和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] Roffo,G.,2017年。排名学习和学习排名:关于模式识别申请中排名的作用。Arxiv预印迹arxiv:1706.05933。

引用

Giorgio(2020)。特征选择图书馆(//www.tatmou.com/matlabcentral/fileexchange/56937-feature-selection-library), MATLAB中央文件交换。检索

评论和评级(161.

斯楠伊斯兰教

李永好

金宝app支持作者

Pallavi Patil.

嗨Giorgio,我现在能够使用演示代码。我试图运行各种过滤器,并为每个过滤器进行不同的滤波器。在这种情况下,如何确定哪些功能是最初始的。请帮忙。我应该尝试使用其他代码吗?

萨科杜佛尼

Zeynab Mousavikhamene

有一点:我在想,如果你能证明在代码中你发现了W(变换矩阵),它适用于提供给渔民的参考用书的方程3.83。我看到的相关性在费舍尔方法的training.m计算,但它不会改变。在费舍尔法,排序的功能是其转型到一个新的空间,之后完成。

Zeynab Mousavikhamene

更新:我试图为每个功能探索权重(不仅输出等级),我尝试向输出添加A.RAKK,我收到了此错误:
a.weights
索引超过数组元素的数量(0)。

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

Zeynab Mousavikhamene

Zeynab Mousavikhamene

Zeynab Mousavikhamene

Giorgio推出每个特征选择器的排名为排名。我也需要为每个功能进行分数。显然,该软件不会为每个功能报告分数。

乔治•

嗨@zeynab,谢谢你的问题。Q1:listfs是一个小区字符串数组,proftrictid应该是一个整数值。您确定您是否正确索引数组?例如,listfs {1}或listfs {2}等..?
Q2:要素选择应应用于培训数据,这是因为您不应该有测试数据(以及在监督设置的情况下的标签),如果您在整个数据集上申请FS,则不公平,您的特征选择策略操作(〜显然更好〜),因为它已经看到了所有数据,但是,您将在真实测试数据上过度地过度数据(具有高概率)并失去概括。Google搜索ML中培训/测试分裂的动机,了解更多详情。
Q3:添加了随机特征以显示FS可以有效地检测那些无关的那些功能(随机 - >通过施工)并丢弃它们。它是一个演示文件,所以玩具数据是演示的一部分,您可以看到不同的方法如何检测和选择相关功能。Demo在工具箱中的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};%选择

Pallavi Patil.

嗨乔治,
我是机器学习的新手。我正试图运行演示代码,我遇到了以下错误
使用classReg.Learning.fittemplate / fillifneed错误(第666行)
Showplot不是有效的参数名称..

你能解释一下我该怎么改正吗?我已经在我的代码中更改了函数fitcsvm和ClassificationSVM

穆罕默德·鲥鱼

喜GIORGIO日Thnx你的努力
我想知道你是否可以帮助我?
我想通过粗糙集理论的特征选择工具箱

乔治•

感谢大家在这些年内使用此工具箱。
我很高兴,它已经用于许多你。
我希望你知道我共享代码和库作为一名志愿者(我不为MATLAB工作,我没有从这个利润)。
我用来更新这个图书馆的时间是有限的。
这个库不是一个商业产品,因此它可能包含不一致,错误,或我在更新一些旧文件的健忘。
尽管如此,我还是尽我所能改善这一开放源码库,以纠正发现的错误。
再次感谢您。

乔治•

嗨brai,
这个文件从最初的执行仍然在库中。
我修复了一些问题,并更新了一个新版本的代码。谢谢你找到窃听器。
请注意,PLSA + EM算法的实现是基于代码:
https://github.com/lizhangzhan/plsa
https://github.com/lizhangzhan/plsa/blob/master/plsa.m
我可以继续讨论我们的邮件谈话!

BRAIS CANCLA.

我尝试使用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),故称显示错误:没有足够的投入arguments.what是格式“算法”中的数据,究竟是什么在渔民“超”的格式?
你能帮我个忙吗?

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

与由下面布拉德(2018年12月26日)中提供的补丁更新所述演示是nessaary到最近的Matlab的运行。会很好,如果源可以被更新。

穆罕默德萨夫达尔

乔治•

喜马克,感谢您下载工具箱,看来您有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是一个句柄。
非常感谢你所做的一切。

高科技人类

萨马拉加布

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

王濛

您好,感谢真棒工作。我有一个关于这个问题。
如果像RFE这样的包装方法也只回到个人重量的排名,这让我困惑了你的实施方式。从我的视图中,我们必须尝试不同的功能子集,而不是包装器方法中的单个功能。所以对我来说,似乎你评估包裹代码里面的功能子集,说xsubset,以及提取单个功能的重要方法,说出xindiv,xindiv在所有使用的功能集中。最后我们得到排名。如果是,为什么不仅返回每个功能子集的结果,即xsubset。因为当我们使用包装器方法时,我们想要获得最佳子集。即使代码返回单个排名,我也不确定,如果包括子集的正常功能是最佳子集。

liping huang.

@giorgio谢谢你的帮助!

乔治•

如果您的数据是非数字的
标签= {'蓝色','绿色','红色'};
有些函数不起作用。你需要像这样的数字数据:
标签= [1,2,3]

乔治•

Liping似乎您的数据不是数字(int,float,dibul)

liping huang.

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

乔治•

@samar ragab谢谢你的帮助!

萨马拉加布

@wenyan cao.
注意:你必须有"visual studio"和"x86_64-w64-mingw32"
只要下载这个库,这个库也是“大型线性分类库”,你可以在这里下载:https://www.csie.ntu.edu.tw/~cjlin/liblinear/
然后运行make.m文件。它是否工作良好,它是好的,..on另一方面,你应该遵循自述文件,可以运行它。
祝福

闻堰曹

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

萨马拉加布

嗨,如何实现这个库(演示&Demo_InfFS)用于多类问题?
提前致谢;

Ananya Dutta

如何找到两个特征在于排名1和等级2,即选择了哪些功能。

Ananya Dutta

获取MEX文件错误。不知道该怎么做

Massimo Ribilini

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

约翰王

Knut Andre Skaug.

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

菲利克斯•伊曼纽尔

你好Giorgio,你真的做得很好。我一直在寻找一个像这样的代码的机会。我已经提取了特征,当我应用SVM时分非常低,我相信这有助于提高提取的功能的性能。我有代码发出问题。我试图使用制作代码来构建,我有这个错误。已将所有必要的功能添加到箱子上。

使用CD时出错
不能CD到F:\bin\lib(名称不存在或不是目录)。

make123 forfeatureselection时出错(第5行)
cd(“自由”);

我使用MATLAB 2018b。希望收到你的来信。谢谢你先生!

Qi Chang.

乔治•

你好!
@Muhammed:大概sigma_ij和corr_ij已经反转,这不会引起这么多的问题,如果你设置的α= 05的两个公式是相同的。
纸中的α0.2在这种情况下对应于α= 0.8。如果您在培训集上使用交叉验证以查找最佳alpha,则不会存在任何问题。我会尝试修复它并将其与纸张对齐。
Demo_InfFS只包含交叉验证的结构,你可以从中学到最好的alpha参数。你将无法运行它,但它是。尝试演示。M可以轻松地运行代码。

uhammedyücel.

你好,我不明白A矩阵的计算方法,和文中提出的方法不一样。
论文指出,
A = (alpha*sigma_ij + (1-alpha)*corr_ij); / /
但代码这样它就可以实现它
a =(alpha * corr_ij +(1-alpha)* sigma_ij);

萨马拉加布

嗨,在运行dimo_inffs.m时,我有错误
对非结构数组对象的字段赋值。

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

误差在Demo_InfFS(线41)
CV =列车(Y_train,X_train_,CMD);
任何帮助PLZ?

肯伊奥克

嗨,我有一个问题。我目前有一组数据(12列),并计划对提到的数据进行分类(通过使用KNN,SVM等)。现在,我计划消除数据中的一些列以增加它的准确性。这个功能选择库似乎是完美的。但是,刚刚开始MATLAB,我目前没有想到编译工具箱。并在编译各个库(特征选择方法.m文件)上获得一些错误。任何帮助都受到高度赞赏。谢谢。

乔治•

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

双菱鹏

嗨,这是工具箱适用于多个类别的分类?如果是,如何实现呢?谢谢你!

埃琳娜Bassanelli

固定。谢谢!

乔治•

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

埃琳娜Bassanelli

嗨乔治,谢谢分享你的工具箱!
我使用demoinffd.m脚本有些麻烦,因为当我运行它时,我会收到以下错误:
“用于输入”双“的输入参数的”未定义的功能“火车”。
误差在Demo_InfFS(线41)
CV =列车(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), 'こ', 'MarkerSize',10);hold
C = predict(svmStruct, X_test(:,ranking(1:k)));
err_rate = sum(y_test〜= c)/p.testsize;%错误分类率
conmat = confusionmat(y_test,c);百分比矩阵

该项目是胜利的努力。做得好。

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

V拉吉尼卡特

优秀的工作。

frankjk

好吗?

郑彭

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

神凯文

钓鱼

莉莉郭

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

乔治•

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

勒•Robelli

太棒了,太感谢你了!

生动的郑

嗨,乔治!谢谢你的分享。我有一个问题:其中,是[19]套索的源代码?我不能在工具箱中找到它。

佩德罗博尔赫斯

佩德罗博尔赫斯

嗨,乔治!它可能是一个愚蠢的问题......但是,你的意思是“CFS”功能中的“得分”是什么?如何访问这些值?代码不会在工作区中返回它们。

Hamzeh Ghasemzadeh

谢谢你分享!
一些方法使用“nClass”变量选择的类别数量。怎么样在你的工具箱其他方法?你知道他们是否适用于多类模式?
另外,如果你能为实现方法提供引用,那将是美好的!

水晶阳

谢谢!!

乔治•

固定。谢谢。

乔治•

我检查..对不起

尼古拉斯布劳克

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

乔治•

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

MMB IDRISI TECH

缺少libsvm_classifier_spider.

乔治•

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

乔治•

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

Hello-Caihua

我收到错误:使用Histc时出错;边缘矢量必须单调非降低

Jinya苏

Hello-Caihua

你好,谢谢你的伟大的工作。我有一个问题。当我和8GB内存的64位视窗8.1上运行MATLAB 2015B这个工具箱中,我得到了错误“内存不足”。我跟一些建议,如复位“java的堆大小”,但没有奏效。我该怎么办?

振辉太阳

对于matlab2018a
% svmStruct = svmtrain(X_train(:,ranking(1:k)),Y_train,'showplot',true);
%c = svmclassify(svmstruct,x_test(:,排名(1:k)),'showplot',true);
svmClassifier = fitcsvm(X_train(:,排名(1:K)),Y_train);
[C, scores] = predict(svmClassifier, X_test(:,ranking(1:k));

erick schultz.

你好,

我在Windows 10计算机上使用Matlab 2015A。我总是收到错误:“使用MEX时出错
没有找金宝app到支持的编译器或SDK。的选项,请访问//www.tatmou.com/金宝appsupport/compilers/R2015a/win64.html”谁能帮助我?

乔治•

嗨@dongyang !不幸的是,工具箱提供了一组排序方法,您应该预先确定子集的基数。如果你想要一个方法,为您提供功能的一个子集可以去套索方法,它们估计用于删除冗余特性通过减少权重为零,在这一过程中,您可以选择的子集的特性系数> 0。希望对大家有所帮助!最好的

东阳

你好乔治:
谢谢分享你的代码。我有一些问题,
我如何使用这个工具箱输出功能的子集,而不是功能的排序。

京华熊

尼古拉斯布劳克

你好乔治:
我想在“上即时”的方式RFE期间执行测试数据的交叉验证。
我尝试了设置a.test_on_the_fly = struct('丢失','class_loss','data',test_dset);
其中test_dset = data(X_test,Y_test);

这在培训中抛出了错误:
未定义的函数或变量'组'。

rfe/training>的错误评估(第122行)
如果〜ISA(a.test_on_the_fly.result, '基团'),a.test_on_the_fly.result =基团;结束

任何想法如何解决这一问题?我不知道什么是“组”应该是的,我是否需要提前设定a.test_on_the_fly.result。

谢谢,
尼克

GRZEGORZ NOWACKI.

Ioannis

亲爱的乔治,

很高兴看到一切编译和运行如此顺利
在版本6中梦幻般的工作!

晓敏悦

嗨,乔治,

工具箱很棒。似乎RFE算法的排名总是1到n,无论我放入什么数据。我错过了什么吗?排名应该是特色的重要性吗?

乔治•Roffo

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

emid eghbali.

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

chintan沙

使用MEX错误
没有找金宝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行)
使用MEX错误
未知文件扩展名。
错误化妆(20行)
eval(['mex libsvm_classifier_spider.cpp svm.cpp -icompiletools',sprintf(['compiletools',filesep,'mexarg.cpp'])])

Conor Fahy

谢谢Giorgio这款非常有用且易于使用的图书馆......

Conor Fahy

拉吉穆克雷

乔治•Roffo

乔治•Roffo

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

戒Dudeja

这是运行make时的完整错误集。m文件
使用MEX错误
libsvm_classifier_spider.cpp.
E:\ FSLib_v5.2_2017(1)\ FSLib_v5.2_2017 \ lib中\ libsvm_classifier_spider.cpp(11):致命
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

错误化妆(20行)
eval(['墨西哥人libsvm_classifier_spider.cpp svm.cpp
-Icompiletools’,sprintf ([compiletools, filesep, ' mexarg.cpp ']))

戒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 /培训中的错误(第36行)
[RES,a.child] =列车(未受过训练的,DAT);

算法/火车误差(第103行)
(dat,寒冷)=培训(藻类,dat);

spider_wrapper错误(第55行)
[TR,A] =列车(一,DSET);

rfe_rf错误(第16行)
排名= spider_wrapper(TrainFeatures,TrainClass,numF,低级( 'RFE'));
请帮助

乔治•

@shun:谢谢你的反馈。我修复了这个错误,可能在以前的上传中介绍。对不起。
@liliin:FSV是一个包装方法。对不起,你发现了一个约FSV和过滤器的参考?

避开张

嗨,乔治,我有一个问题,当使用infFS模式。在论文中,相关项是corr=1-abs(spearman(fi,fj)),但在你的代码中,为什么它看起来像corr=spearman(fi,fj)?

Liliinchina

嗨Giorgio,我有一个关于FSV功能选择方法的问题,在您的指南中,您可以说FSV是一种包装器方法,但您的代码有关这表明它是一个过滤方法。你能告诉我你代码中提到的原则吗?

PRADOSH NAYAK

通过运行'make.m'.what来找到此错误吗?

使用MEX错误
没有找金宝app到支持的编译器或SDK。的选项,请访问http://www.mathwands.com/金宝appsupport/compilers/r2014a/win32.

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

Pertuz说

优秀的工作

将有关ODABAS YILDIRIM

嗨,Giorgio,谢谢分享你的代码。我有一些问题,
我有100个样本(84列车16测试),每个样本都有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被移除

没有平等约束......

使用+时出错
矩阵维数必须一致。
误差在quadsolve(线414)
Y = Y + FD * DY;
误差在SVM /训练(线50)
α,偏见] = Quadsolve(Kerma,-one(大小(kerma,1),1),y',0,algo.c);
算法/火车误差(第103行)
(dat,寒冷)=培训(藻类,dat);
第10 /training错误(第30行)
[r,all.child] =火车(all.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 ",从主文件夹。
请打开make.m文件,并检查路径分隔符:让addpath(genpath(” ./ compiletools'));
/用于在Linux操作系统下,如果您在MS Windows上运行代码,您可能需要用\如:AddPath(GenPath('\ Compiletools')替换它);

从您的输出中可以看出,您安装了一个合适的C编译器。如果您仍然有问题,复制和粘贴错误,否则很难理解是什么问题。最好的祝愿

沃尔特·萨穆埃尔

你好,乔治,我和理查德有同样的问题。一开始我负责管理餐馆。-file并得到如下输出:
编译…
建立'gcc'。
墨西哥人成功完成。
建立'gcc'。
墨西哥人成功完成。
建立'gcc'。
墨西哥人成功完成。
与 'G ++' 建设。
墨西哥人成功完成。
汇编完成。

在那之后,我想运行制造。m文件,但得到错误:未知的文件扩展名"。make错误(第20行)。
我做错了什么?先谢谢你。

理查德芬兰

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

乔治•

嗨,抱歉,但是来自MathWorks的家伙因为上传中的.mex文件而降级了库。我重新上传了最后一个版本。

苏米委员会

你好乔治,
我如何解决这个问题(我正在使用ILFS)
分配有更多的非单RHS尺寸大于非单标

Suhani阿加瓦尔

Vinayak Swarnkar

乔治•

您好,排名(1)是最辨别的功能。排名(结束)最糟糕的功能。最好。

Alexis Moscoso Rial.

你好乔治,

我想知道在呼叫之后如何在调用后排名的方向

[排名,权重,子集] = 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行)
[vAlgorithm,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个班。
我们可以通过设置相应的类标签来获得代表每个类的最佳子集:
Sub1)标记为1至1级标签-1至课程2,3,4
SUB2)标签1到2个标签-1到类1,3,4
标签1到类别3,标签-1到1,2,4
标签1到类别4,标签-1到类别2,3,4
之后我们可以提取最大常见子集(相交的Sub1 Sub3 Sub4)。

Unnikrishnan 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

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

维克多Calle

乔治•

在监督和无监督的方式无限的特征选择的作品,你可以简单地通过设置参数SUP = 1(监督)或SUP = 0(无监督)做出选择。

[排名,w] = inffs(x_train,y_train,alpha,sup,0);

X_Train是一个矩阵,标准“设计矩阵”(见主教,2006)每行是一个样本和每个列的一个功能。
y_train是标签的列向量,如果您有两个类,则此向量将如下所示:[1,1,1,-1,-1-1,1,-1等。]'
Alpha是混合参数,你可以设置Alpha =0.9通常工作得很好。

有没有办法知道有多少功能,使用先验,大部分的FS方法根据自己的关联度仅仅排功能,因此您可以选择最上面的N个特征,并将它们传递到分类,看看他们是如何工作的。如果没有足够的可以增加相应ň...

顶部的N个功能可能是对分类的最佳贡献
最好!

Med Aymane Ahajjam.

朱利安,我使用了Relieff算法进行了类似的问题,它完美地工作!
祝你好运

朱利安

你好,对不起,这个很基本的问题。可这种方法可以用来识别(视觉)特征的二元分类任务最有效地促进特定图像的分类?谢谢。朱利安

Eliya苏丹

你好,
我是否在同一数据上运行代码两次并获得不同的结果是有意义的吗?
我用MRMR和Fisher方法。
谢谢!
eliya。

乔治•

我的评论消失了。
SVM- rfe是基于SVM的,所以
1)你归你输入的数据?支持向量机工作得更好,并且当输入是在范围[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

嗨亲爱的乔治Roffo

我已经使用svm-rfe(FSLIB)为两个类似的数据集(臭氧和臭氧2),但臭氧数据集正确运行和臭氧2数据集运行它不结束。

%函数sr = svmrfeozone(traindata)
%% demo文件
fprintf('\ nfeature选择工具箱V 4.0 2016 - 用于matlab \ n');

%从列表中选择一个特征选择方法
listFS ={‘InfFS’,‘ecf’,‘mrmr’,‘relieff’,‘mutinffs’,‘fsv’,‘拉普拉斯算子’,‘mcf’,‘rfe’,‘10’,‘雪’,‘udf’,‘llcfs’,cfs的};

[methodID] = readInput(listFS);
selection_method = listFS {放在methodID};%选择
%包括依赖关系
AddPath('./ lib');%依赖性
目录(' /方法。');% FS方法

特征数量%
%numf = size(x_train,2);
vectorvote = 0 (72);
traindata = load('ozone.mat');
traindata = traindata.traindata;

培训数据的%特征选择

X_train = TrainData (1:201 1:72);
Y_TRAIN = TRAINDATA(1:201,73);
排名= spider_wrapper(x_train,y_train,60,较低('rfe'));
61:72 rankingD =排序(排序(1));
RankingB = Sort(排名(1,1:60));
vectorvote(1,rankingD(:))= vectorvote(1,rankingD(:))+ 9;
TrainData(:,排名(:))= [];
%--------------------------------------------------------------

X_train1 = TrainData(201:400一60);
Y_Train1 = TrainData(201:400,61);
ranking1 = spider_wrapper (X_train1 Y_train1 60,降低(rfe));
排名D1 =排序(排名1(1,51:60));
RankingB1 = Sort(排名1(1,1:50));
RankingB1 = RoundingB(排名第(:));
vectorvote (rankingB (rankingD1 (:))) = vectorvote (1, rankingB (rankingD1 (:))) + 8;
TrainData(:,排名第1(:))= [];

%--------------------------------------------------------------
X_Train2 = TrainData(401:600,1:50);
Y_Train2 = TrainData(401:600,51);
ranking2 = spider_wrapper (X_train2 Y_train2 40,降低(rfe));
rankingD2 =排序(ranking2(1,41:50));
rankingB2 =排序(ranking2 (1, 1));
rankingB2 = rankingB1 (rankingB2 (:));
vectorvote (rankingB1 (rankingD2 (:))) = vectorvote (1, rankingB1 (rankingD2 (:))) + 7;
TrainData (:, rankingD2 (:)) = [];
%--------------------------------------------------------------
X_Train3 = TrainData(600:801,1:40);
Y_Train3 = TrainData(600:801,41);
排名3 = spider_wrapper(x_train3,y_train3,30,更低('rfe'));
31:40 rankingD3 =排序(ranking3 (1));
rankingB3 =排序(ranking3 (1:30));
rankingB3 = rankingB2(rankingB3(:));
vectorvote(1,rankingB2(rankingD3(:)))= vectorvote(1,rankingB2(rankingD3(:)))+ 6;
TrainData(:,排名第3(:))= [];
%--------------------------------------------------------------
X_train4 = TrainData(802:1000,1:30);
Y_train4 = TrainData (802:1000 31);
ranking4 = spider_wrapper(X_train4,Y_train4,25,低级( 'RFE'));
Rankingd4 = Sort(排名4(1,26:30));
rankingB4 =排序(ranking4 (1:25));
rankingB4 = rankingB3 (rankingB4 (:));
vectorvote (rankingB3 (rankingD4 (:))) = vectorvote (1, rankingB3 (rankingD4 (:))) + 5;
TrainData(:,排名第4(:))= [];


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 = Sort(排名(1,1:60));
vectorvote(1,rankingD(:))= vectorvote(1,rankingD(:))+ 9;
TrainData(:,排名(:))= [];
%--------------------------------------------------------------

X_Train1 = TrainData1(201:400,1:60);
Y_Train1 = TrainData1(201:400,61);
ranking1 = spider_wrapper (X_train1 Y_train1 60,降低(rfe));
排名D1 =排序(排名1(1,51:60));
RankingB1 = Sort(排名1(1,1:50));
RankingB1 = RoundingB(排名第(:));
vectorvote (rankingB (rankingD1 (:))) = vectorvote (1, rankingB (rankingD1 (:))) + 8;
TrainData(:,排名第1(:))= [];

%--------------------------------------------------------------
X_Train2 = TrainData1(401:600,1:50);
Y_train2 = TrainData1(401:600,51);
ranking2 = spider_wrapper (X_train2 Y_train2 40,降低(rfe));
rankingD2 =排序(ranking2(1,41:50));
rankingB2 =排序(ranking2 (1, 1));
rankingB2 = rankingB1 (rankingB2 (:));
vectorvote (rankingB1 (rankingD2 (:))) = vectorvote (1, rankingB1 (rankingD2 (:))) + 7;
TrainData (:, rankingD2 (:)) = [];
%--------------------------------------------------------------
X_Train3 = TrainData1(600:801,1:40);
Y_train3 = TrainData1 (600:801, 41);
排名3 = spider_wrapper(x_train3,y_train3,30,更低('rfe'));
31:40 rankingD3 =排序(ranking3 (1));
rankingB3 =排序(ranking3 (1:30));
rankingB3 = rankingB2(rankingB3(:));
vectorvote(1,rankingB2(rankingD3(:)))= vectorvote(1,rankingB2(rankingD3(:)))+ 6;
TrainData(:,排名第3(:))= [];
%--------------------------------------------------------------
X_train4 = TrainData1 (802:1000, 1:30);
Y_Train4 = TrainData1(802:1000,31);
ranking4 = spider_wrapper(X_train4,Y_train4,25,低级( 'RFE'));
Rankingd4 = Sort(排名4(1,26:30));
rankingB4 =排序(ranking4 (1:25));
rankingB4 = rankingB3 (rankingB4 (:));
vectorvote (rankingB3 (rankingD4 (:))) = vectorvote (1, rankingB3 (rankingD4 (:))) + 5;
TrainData(:,排名第4(:))= [];



卜拉希米迈赫迪

嗨乔治!
非常感谢这个工具箱!
我有一个关于使用Fisher线性辨别的功能选择的问题。在与工具箱相关的论文中,您已经引用了Gu等人提出的泛化特征分数。但似乎工具箱似乎执行Duda等人定义的“简单”Fisher选择。这是正确的吗?

乔治•

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

Zafer COMERT

非常感谢宝贵的贡献。
我刚刚下载了您的FSLIB由您开发。我有一个问题。在特征排名过程之后,我们如何决定最佳准确性需要多少功能?

jae baak.

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

jae baak.

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

佩德罗·恩里克斯

Devin Sullivan.

FS的伟大工具,有很好的文档和优秀的README文件,包含各种方法的详细信息和参考。

我希望它可以用于多类或基于回归的功能选择,但我会看看我是否能找到一种方法使它成为可能。

- 编辑:值得注意的是,这里使用的SVM工具“将在未来的版本中删除”,将需要与在某些时候更新的功能所取代。

- 内德2:弄清楚如何至少为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.不要尝试使用SVMS绘制结果,这不会用于多字符数据。特征选择后停止(演示线的第149行)。

乔治•

Hi Davide, '\'和'/' for路径与你的操作系统(Linux或Windows)相关,所以可能你需要切换到另一个基于它的,你是受欢迎的:)

戴维德Nardone.

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

乔治•

嗨Davide,你确定你编译了解决方案吗?在使用工具箱之前,您应该运行make文件,似乎丢失了MEX文件,也检查含有FSLib文件夹及其子文件夹的路径。

戴维德Nardone.

排名= spider_wrapper(X,Y,N_DS,低级( 'RFE'))触发此堆栈错误跟踪:

未定义函数'libsvm_classifier_spider'用于类型为'cell'的输入参数。

svm/training中的错误(第225行)
[α,xSV, bias0] = libsvm_classifier_spider ({X, X}, {Y, Y},…

算法/火车误差(第103行)
(dat,寒冷)=培训(藻类,dat);

RFE /培训中的错误(第36行)
[RES,a.child] =列车(未受过训练的,DAT);

算法/火车误差(第103行)
(dat,寒冷)=培训(藻类,dat);

spider_wrapper中的错误(第12行)
[TR,A] =列车(一,DSET);

你能建议我如何解决它吗?

乔治•

嗨David,INF-FS是一种无人监督的方法,但在此工具箱中,您可以找到此方法的两个变体。
功能[排名,重量] = inffs(x_train,y_train,alpha,监督,冗长)

设置监督=0来使用无监督版本,在这种情况下可以设置Y_train=[]

如果你要使用的监管版本,那么设定的监控= 1,并提供正确的类标签。

谢谢你的问题,
希望这可以帮助!

大卫·帕拉西奥斯

大家好,有一个关于infFS算法的问题。如果它是一个无监督的特征选择方法,为什么必须提供带有类标签的Y_train向量呢?

nVIDIApascal

YJXia

赫密哈米德

婷婷杨

阿德森

这个工具箱是否在多键数据上工作?我有1320个功能和3级的数据,我需要特征选择阶段。但此工具箱无法为我的数据工作。

andrea

琉球

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

大卫

乔治•

嗨,谢谢你的反馈。我在zip中添加了“特征选择库(MATLAB Toolbox)”纸张。它讨论了最重要的FS方法。至于可用性,您可以在工具箱中找到一个演示文件,旨在允许用户轻松运行代码并使用具有工具箱提供的每个方法。

加布里埃尔Theberge

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

安德鲁斯·索巴族

太好了!谢谢你!

Chuong阮

嗨,非常感谢图书馆。我有一个问题。对于该方法Fisher [6],图书馆是否实施了Quanquan GU EQU ETC EQU ETC EQU ETC EQUE ETC(哪个更复杂)的广义Fisher分数,或者只是古典的Fisher分数。谢谢。

frankjk

黄海

Gabriele Tosadori

乔治•

MATLAB版本兼容性
创建R2017b
兼容任何释放
平台的兼容性
窗户 麦克斯 Linux

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!

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 / techniques

fslib_v7.0.1_2020_2 / lib /文件

fslib_v7.0.1_2020_2 /方法