支持向量机matlab实例

支持向量机matlab实例,matlab,svm,Matlab,Svm,我正在尝试实现SVM分类。目标是输出电源信号(.wav文件)的正确原点网格。网格名为A-I,训练集共有93个信号,49个练习信号。我有一个93x10x36的特征向量矩阵。有人知道我为什么会显示错误吗?TrainCorrectGrid和Training_倒谱1都有93行,所以我不明白问题出在哪里。非常感谢您的帮助 multisvm函数如下所示: function [result] = multisvm(TrainingSet,GroupTrain,TestSet) %Models a given

我正在尝试实现SVM分类。目标是输出电源信号(.wav文件)的正确原点网格。网格名为A-I,训练集共有93个信号,49个练习信号。我有一个93x10x36的特征向量矩阵。有人知道我为什么会显示错误吗?TrainCorrectGrid和Training_倒谱1都有93行,所以我不明白问题出在哪里。非常感谢您的帮助

multisvm函数如下所示:

function [result] = multisvm(TrainingSet,GroupTrain,TestSet)
%Models a given training set with a corresponding group vector and 
%classifies a given test set using an SVM classifier according to a 
%one vs. all relation. 
%
%This code was written by Cody Neuburger cneuburg@fau.edu
%Florida Atlantic University, Florida USA
%This code was adapted and cleaned from Anand Mishra's multisvm function
%found at http://www.mathworks.com/matlabcentral/fileexchange/33170-multi-class-support-vector-machine/

u=unique(GroupTrain);
numClasses=length(u);
result = zeros(length(TestSet(:,1)),1);

%build models
for k=1:numClasses
    %Vectorized statement that binarizes Group
    %where 1 is the current class and 0 is all other classes
    G1vAll=(GroupTrain==u(k));
    models(k) = svmtrain(TrainingSet,G1vAll);
end

%classify test cases
for j=1:size(TestSet,1)
    for k=1:numClasses
        if(svmclassify(models(k),TestSet(j,:))) 
            break;
        end
    end
    result(j) = k;
end

SVM通常是一对一或一对所有分类器。然而,有一些方法可以调整它们以实现多类分类

包实现了这样一种方式

下面是使用该包的示例代码

TrainingSet=[ 1 10;2 20;3 30;4 40;5 50;6 66;3 30;4.1 42]; 
TestSet=[3 34; 1 14; 2.2 25; 6.2 63]; 
GroupTrain=[1;1;2;2;3;3;2;2]; 
results = multisvm(TrainingSet, GroupTrain, TestSet); 
disp('multi class problem'); 
disp(results); 

SVM通常是一对一或一对所有分类器。然而,有一些方法可以调整它们以实现多类分类

包实现了这样一种方式

下面是使用该包的示例代码

TrainingSet=[ 1 10;2 20;3 30;4 40;5 50;6 66;3 30;4.1 42]; 
TestSet=[3 34; 1 14; 2.2 25; 6.2 63]; 
GroupTrain=[1;1;2;2;3;3;2;2]; 
results = multisvm(TrainingSet, GroupTrain, TestSet); 
disp('multi class problem'); 
disp(results); 


如果您有两个以上的类,您应该阅读有关支持向量机的多类分类。@ParagS.Chandakkar我已经看过了,但它相当混乱。我不知道如何在代码中为两个以上的类实现支持向量机。我有A类到I类。Matlab示例只显示了两个类示例。为什么您不研究?。它在内部使用
一对一
方法,因此您不必关心这一点。您只需提供数据和多类标签。它也与MATLAB兼容。如果你不提供所有信息,就很难帮助你。Afaik MATLAB没有
multisvm
函数。您从哪里获得的
multisvm
功能?是你写的吗?如果是,请张贴代码。代码作为文本和一些示例数据将非常有用,因此我们可以尝试重现错误。一个只有部分代码的图像并没有多大帮助。@SebaArriagada,我道歉。我已经发布了multisvm函数代码。如果您有两个以上的类,您应该阅读有关支持向量机的多类分类。@ParagS.Chandakkar我已经看过了,但它相当混乱。我不知道如何在代码中为两个以上的类实现支持向量机。我有A类到I类。Matlab示例只显示了两个类示例。为什么您不研究?。它在内部使用
一对一
方法,因此您不必关心这一点。您只需提供数据和多类标签。它也与MATLAB兼容。如果你不提供所有信息,就很难帮助你。Afaik MATLAB没有
multisvm
函数。您从哪里获得的
multisvm
功能?是你写的吗?如果是,请张贴代码。代码作为文本和一些示例数据将非常有用,因此我们可以尝试重现错误。一个只有部分代码的图像并没有多大帮助。@SebaArriagada,我道歉。我已经发布了multisvm函数代码。该示例中的GroupTrain是什么?它们是分配给特征向量的类。也没有解释训练集和测试集代表什么。请解释示例代码我的训练数据特征向量是93X512矩阵。93表示93个单独的训练信号。“TrainingSet”是要训练SVM的一组特征向量,输出类在“GroupTrain”向量中给出。然而,“测试集”是测试经过训练的SVM的集合,分配给测试集的类在“结果”向量中返回。在该示例中,什么是GroupTrain?它们是分配给特征向量的类。也没有解释训练集和测试集代表什么。请解释示例代码我的训练数据特征向量是一个93X512矩阵。93表示93个单独的训练信号。“TrainingSet”是要训练SVM的一组特征向量,输出类在“GroupTrain”向量中给出。而“TestSet”是对训练好的SVM进行测试的集合,分配给测试集合的类在“结果”向量中返回