我编写了以下代码来测试svmtrain
。
a = 5*[randn(200, 1) + 5, randn(200, 1) + 5];b = 5*[randn(200, 1) + 5, randn(200, 1) - 5];all_data = [a;b];plot(a(:,1) , a(:,2),'b.'); hold onplot(b(:,1) , b(:,2),'r.');group = ['r';'b'];svmStruct = svmtrain(all_data, group,'ShowPlot',true);
我创建了两个正态分布的数据集(a和b),然后将它们合并成一个二维数组。现在我想使用svmtrain
来分离这两个区域,但我不知道如何处理Group
参数。正如MATLAB帮助文档中所述,我可以使用一个2×1的字符矩阵来表示这两个区域的标签。我这样做了,但不知道为什么我的代码不起作用。
回答:
你应该为每个实例提供类别标签。因此使用:
group = [repmat('r',200,1); repmat('g',200,1)];svmStruct = svmtrain(all_data, group, 'ShowPlot',true);