使用MATLAB R2015a进行SVM多分类

时间:2015-09-24 05:48:40

标签: matlab classification svm matlab-guide

我尝试将MATLAB R2015a分类工具箱用于我的4个班级。我导入了我的数据集并选择了一个高斯内核来训练我的分类器。这是我的数据集:

my Data=[9.36 0;8.72 0;9.13 0;7.38 0;8.02 0;12.15 1;11.02 1;11.61 1;
12.31 1;15.23 1;52.92 2;54.49 2;48.82 2;52.00 2;49.79 2;22.46 3;30.38 3;
21.98 3;24.46 3;26.08 3];

然后我将它导出到我的工作区以将其与我的新测试数据一起使用,但是当我想在工作空间中使用它时,这个错误出现了:

  

已在基础工作区中创建变量。

     

要使用导出的分类器trainedClassifier对新数据进行预测,请使用

     

yfit = predict(trainedClassifier, T{:,trainedClassifier.PredictorNames})

     

如果您的新数据包含任何整数变量,那么预处理数据会加倍如下:

     

X = table2array(varfun(@double, T(:,trainedClassifier.PredictorNames)));

     

yfit = predict(trainedClassifier, X)

我不明白它究竟是什么意思,什么是Tyfit? 如何使用此分类器测试新数据?

2 个答案:

答案 0 :(得分:1)

问题在于您正在尝试预测存储在单元格中的数据类。首先将其作为表导入。 Home_> import_>文件名_> import_>(此处从导入的数据部件中选择表)。现在,您可以通过提供此表名来使用预测器。

答案 1 :(得分:0)

yfit =表T中预测变量数据的预测类标签的向量。

T =样本数据,指定为表格。 T的每一行对应于一个观察,并且每列对应于一个预测变量。可选地,T可以包含响应变量和观察权重的附加列。 T必须包含用于训练SVMModel的所有预测变量。不允许使用多列变量和字符串单元格数组以外的单元格数组。

测试数据:示例

load newdataset
rng(1);
CVSVMModel = fitcsvm(X,Y,'Holdout',0.15,'ClassNames',{'classname1','classname2'},...
'Standardize',true);
CompactSVMModel = CVSVMModel.Trained{1}; % Extract trained, compact classifier
testInds = test(CVSVMModel.Partition);   % Extract the test indices
XTest = X(testInds,:);
predict(CompactSVMModel,XTest);% test here