支持向量机matlab实例
我正在尝试实现SVM分类。目标是输出电源信号(.wav文件)的正确原点网格。网格名为A-I,训练集共有93个信号,49个练习信号。我有一个93x10x36的特征向量矩阵。有人知道我为什么会显示错误吗?TrainCorrectGrid和Training_倒谱1都有93行,所以我不明白问题出在哪里。非常感谢您的帮助 multisvm函数如下所示:支持向量机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
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进行测试的集合,分配给测试集合的类在“结果”向量中返回