【问题标题】:hierarchical classification with SVM支持向量机的层次分类
【发布时间】:2015-02-16 00:28:59
【问题描述】:

我正在尝试用 SVM 处理分类问题,一开始我设法解决了第一级的问题,即将我的数据分类为 2 个类(class1 和 class2)。现在我想继续分层分类,即我想将第二类分为两个类。有没有办法用 Matlab SVM 做到这一点。 谢谢

【问题讨论】:

  • 你能用循环吗...?
  • 实际上,我使用以下代码将我的数据分类为 2 类 model=svmtrain(lab_train,train,'-t 2 -d 2 -c 7 -g 0.5'); [labeltrain,valtrain,prectrain]= svmpredict(lab_train,train,model); [labeltest,valtest,prectest]= svmpredict(lab_test,test,model);而且我不知道如何以只取第二类并将其再次分类为 2 类的方式使用结果
  • @user3127771 你应该编辑你的问题而不是添加评论。

标签: matlab classification svm hierarchical svmlight


【解决方案1】:

您没有提及您的特征,因为在第一次分类之后,您必须为新分类器定义新特征。

您可以将特征存储在矩阵中并在新分类器中使用它们。

由于我不确切知道您的问题是什么,所以我提供了一个没有循环的示例,但您可以根据需要轻松更改为循环。

x1 = 5 * rand(100,1);
y1 = 5 * rand(100,1);
data1 = [x1,y1];
x2 = -5 * rand(100,1);
y2 =  5 * rand(100,1);
data2 = [x2,y2];
x3 = -5 * rand(100,1);
y3 = -5 * rand(100,1);
data3 = [x3,y3];
plot(data1(:,1),data1(:,2),'r.'); hold on
plot(data2(:,1),data2(:,2),'bo');
plot(data3(:,1),data3(:,2),'ms');
data = [data1;data2;data3];

以上是我的数据,表示二维平面中的点。

现在我将它们分为x>0x<0两类。

label = ones(size(data,1),1);
label(1 : size(data1,1)) = -1;
c1 = svmtrain(data,label,'Kernel_Function','linear','showplot',true); 
hold on;
p1 = svmclassify(c1,data);

在第一个分类器之后,我选择一个类 (x<0) 并定义新的特征。

我会将它们分为两类,y>0y<0

newdata = data(p1 == 1,:);
data1 = newdata(newdata(:,2)>=0,:);
data2 = newdata(newdata(:,2)< 0,:);
data = [data1;data2];
label = ones(size(data,1),1);
label(1 : size(data1,1)) = -1;
c2 = svmtrain(data,label,'Kernel_Function','linear','showplot',true);

我使用了所有数据进行训练,您也可以根据自己的问题进行调整。

【讨论】:

  • 对于我的数据,我将图像存储在 形式的矩阵中:第一类为 256 个图像,第二类为 256 个图像。首先,我从图像中提取特征。我的 feture verctor 是 的形式,我使用 50% 的训练和 50% 的测试。我这样分类:model=svmtrain(lab_train,train,'-t 2 -d 2 -c 7 -g 0.5'); [labeltrain,valtrain,prectrain]= svmpredict(lab_train,train,model); [labeltest,valtest,prectest]= svmpredict(lab_test,test,model);其中:train 是训练数据,test 是测试数据
  • @user3127771,您可以将其添加到您的问题中。您打算为第二个分类器使用哪些功能?
  • 对于第二个分类器,我想使用被分类为属于 class2 的特征
  • @user3127771,我不是那个意思。在我的示例中,我使用x 的值作为第一分类的特征,使用y 的值作为第二分类的特征。在你的情况下,我不知道你的第二个分类将基于什么。
猜你喜欢
  • 2011-07-01
  • 2013-08-31
  • 2018-10-12
  • 2018-06-15
  • 2011-10-15
  • 2015-06-03
  • 1970-01-01
  • 2021-04-10
  • 2021-06-28
相关资源
最近更新 更多