【问题标题】:Use sequentialfs with SVM in Matlab在 Matlab 中使用 SVM 和 SVM
【发布时间】:2016-08-07 08:00:40
【问题描述】:

有人可以帮我处理“sequentialfs”吗?

我无法将它与以下 SVM 函数一起使用。 “X”包含每个观察的特征,“y”包含每个观察的类别。

SVMModel = fitcsvm(X,Y);
predict(SVMModel, X);

执行sequentialfs时出现如下错误:

函数“featureSelection”产生以下错误: 输入参数过多。

这里是我的代码:

fs = sequentialfs(@featureSelection,X,y)

function err=featureSelection(X,y)
    SVMModel = fitcsvm(X,y,'KernelFunction','gaussian', 'KernelScale','auto');
    err = 0;
    for i=1:size(X,1)
         err = err + (y(i) ~= predict(SVMModel,X(i,:)));
    end 
end

谢谢!

【问题讨论】:

    标签: matlab svm feature-selection


    【解决方案1】:

    我遇到了同样的问题。根据 MA​​TLAB 的文档:

    sequentialfs 通过重复调用执行 10 倍交叉验证 有趣的 X 和 y、XTRAIN 和 ytrain 的不同训练子集,以及 测试X和y的子集,XTEST和ytest,如下:

    标准 = 乐趣(XTRAIN,ytrain,XTEST,ytest)

    这意味着您的标准函数应遵循以下形式:

    function err=featureSelection(XTRAIN,ytrain,XTEST,yTest)
    

    只要 sequentialfs 默认将您的 X 数据分离为 XTRAIN 和 XTEST 子集。

    下面是一个例子:

    c = cvpartition(Labels,'Holdout',0.3);
    opts = statset('display','iter');
    classf = @(train_data,train_labels,test_data,test_labels) ...
           sum(predict(fitcsvm(train_data,train_labels,'KernelFunction','rbf'), test_data) ~= test_labels); 
    [fs,history] = sequentialfs(classf,Data,Labels,'cv',c,'options',opts)
    

    【讨论】:

      猜你喜欢
      • 2017-04-21
      • 2013-06-27
      • 2016-09-03
      • 2018-06-19
      • 2019-08-27
      • 2019-01-30
      • 2015-04-17
      • 2016-03-27
      • 2015-02-11
      相关资源
      最近更新 更多