matlab2016a设计线性分类器对线性可分样本集进行分类,样本 数目 10 个以上,训练及分类步骤齐全,绘制测试集和训练集分类图像,记录分类器训练的迭代次数和训练时间
时间: 2024-03-12 20:48:28 浏览: 39
matlab线性分类器的设计.doc
好的,以下是一个完整的示例代码,用于在Matlab2016a中设计线性分类器对线性可分样本集进行分类,并绘制训练集和测试集的分类图像,同时记录分类器训练的迭代次数和训练时间。
```
% 创建样本数据
X_train = [1 1; 2 2; 3 3; 4 4; 5 5; 6 6; -1 -1; -2 -2; -3 -3; -4 -4];
Y_train = [1; 1; 1; 1; 1; 1; -1; -1; -1; -1];
X_test = [7 7; 8 8; 9 9; -5 -5; -6 -6; -7 -7];
Y_test = [1; 1; 1; -1; -1; -1];
% 训练分类器
tic
svm = fitcsvm(X_train,Y_train,'KernelFunction','linear');
toc
% 记录迭代次数
numIter = svm.NumIterations;
% 进行分类
labels_train = predict(svm,X_train);
labels_test = predict(svm,X_test);
% 显示分类结果
disp('训练集分类结果:');
disp(labels_train');
disp('测试集分类结果:');
disp(labels_test');
% 记录训练时间
trainTime = toc;
% 绘制训练集和测试集分类图像
figure;
gscatter(X_train(:,1),X_train(:,2),labels_train,'rb','+o');
hold on;
gscatter(X_test(:,1),X_test(:,2),labels_test,'rb','*x');
supportVectors = svm.SupportVectors;
plot(supportVectors(:,1),supportVectors(:,2),'ko','MarkerSize',10);
legend('正类','负类','测试集正类','测试集负类','支持向量');
title('训练集和测试集分类图像');
hold off;
```
在这个示例中,我们创建了一个包含10个训练样本和6个测试样本的数据集,其中前6个训练样本属于正类,后4个训练样本属于负类,前3个测试样本属于正类,后3个测试样本属于负类。我们使用`fitcsvm`函数训练了一个支持向量机分类器,并指定使用线性核函数。我们记录了训练分类器的时间,并使用`NumIterations`属性记录了训练过程中的迭代次数。然后我们使用`predict`函数对训练集和测试集进行分类,并显示分类结果。最后,我们使用`gscatter`函数绘制了训练集和测试集的分类图像,并使用`splot`函数绘制了支持向量。
阅读全文