支持向量机用MATLAB实现
时间: 2024-05-13 13:11:22 浏览: 6
支持向量机(Support Vector Machine,SVM)是一种常的机器学习算法,在MATLAB中也有相应的实现。下面是支持向量机在MATLAB中的实现步骤[^1]:
1. 准备数据集:首先,需要准备训练集和测试集的数据。可以使用MATLAB中的数据导入功能,将数据导入为矩阵。
2. 数据归一化:为了提高算法的性能,可以对数据进行归一化处理。可以使用MATLAB中的`mapminmax`函数对数据进行归一化。
3. SVM创建/训练:使用MATLAB中的`fitcsvm`函数创建SVM分类器,并使用训练集对其进行训练。可以选择不同的核函数,如线性核函数、高斯核函数等。
4. SVM仿真测试:使用训练好的SVM分类器对测试集进行预测,并计算预测准确率。
5. 结果展示:可以使用MATLAB中的绘图函数,如`plot`和`scatter`,将训练集和测试集的数据点以及分类面进行可视化展示。
下面是一个示例代码,演示了如何使用MATLAB实现支持向量机分类器:
```matlab
% 准备数据集
load fisheriris
X = meas(:,3:4);
Y = species;
% 数据归一化
X = mapminmax(X);
% SVM创建/训练
svmModel = fitcsvm(X, Y, 'KernelFunction', 'linear');
% SVM仿真测试
Y_pred = predict(svmModel, X);
accuracy = sum(Y_pred == Y) / numel(Y);
% 结果展示
gscatter(X(:,1), X(:,2), Y);
hold on;
h = svmModel.SupportVectors;
scatter(h(:,1), h(:,2), 'ko', 'LineWidth', 1.5);
title(['SVM Classification (Accuracy: ', num2str(accuracy*100), '%)']);
legend('Setosa', 'Versicolor', 'Virginica', 'Support Vectors');
```
这段代码使用了鸢尾花数据集(`fisheriris`),选择了线性核函数进行分类。最后,通过绘图展示了分类结果。