matlab - 使用带有 libsvm 的顺序文件系统进行功能选择

标签 matlab machine-learning classification libsvm

我想使用matlab工具箱进行特征选择。那里有一个很好的函数,叫做sequentialfs,它做得很好。但是,我无法将其与 LibSVM 功能集成来执行特征选择。它与 KnnClassify 配合得很好,有人可以帮助我吗?这是 KnnClassify 的代码:

fun1 = @(XT,yT,Xt,yt)...

    (sum((yt ~= knnclassify(Xt,XT,yT,5))));

[fs,history] ​​=equentialfs(fun1,data,label,'cv',c,'选项',opts,'方向','前进');

最佳答案

您需要包装 libsvm 函数以在特定功能集上训练和测试 SVM。我建议在单独的 .m 文件中编写内容(尽管原则上我认为它可以放在匿名函数中)。像这样的东西:

function err = svmwrapper(xTrain, yTrain, xTest, yTest)
  model = svmtrain(yTrain, xTrain, <svm parameters>);
  err = sum(svmpredict(yTest, xTest, model) ~= yTest);
end

然后您可以使用以下方式调用sequentialfs:

[fs history] = sequentialfs(@svmwrapper, ...);

(您可能需要检查 svmtrain 的参数顺序,我永远记不起它们应该是哪一边)。

这个想法是 svmwrapper 将训练 SVM 并在测试集上返回其错误。

匿名等效项是:

svmwrapper = @(xTrain, yTrain, xTest, yTest)sum(svmpredict(yTest, xTest, svmtrain(yTrain, xTrain, <svm parameters>) ~= yTest);

看起来不太好。

关于matlab - 使用带有 libsvm 的顺序文件系统进行功能选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10469837/

相关文章:

matlab - 在 MATLAB 中使用多变量数据训练 LIBSVM

machine-learning - WEKA:如何过滤多个属性范围?

machine-learning - 什么是距离敏感数据,它与其他数据有何不同?任何例子都会有帮助

matlab - 我不知道在 matlab 中绘制这个非 lp 的可行区域

c - 外部变量 mex 文件

matlab - matlab中的贝叶斯分类

python-3.x - Tensorflow 合并数据集的替代方法

python - 如何通过 Python 的 scipy.spatial.Voronoi 获得与 MATLAB 的 voronoin 相同的输出

machine-learning - 属性错误: module 'keras.layers.normalization' has no attribute 'BatchNormalization'

java - 使用 Weka 进行文本分类