支持向量机matlab代码
时间: 2023-07-27 17:05:51 浏览: 47
以下是一个简单的支持向量机(SVM)的 MATLAB 代码示例:
```matlab
% 数据准备
load fisheriris;
features = meas(:,3:4);
labels = species;
% 训练 SVM 模型
svmModel = fitcsvm(features, labels);
% 可视化决策边界和支持向量
figure;
gscatter(features(:,1), features(:,2), labels);
hold on;
h = svmplot(svmModel);
title('SVM 分类器');
legend('versicolor', 'virginica', 'Location', 'best');
hold off;
% svmplot 函数定义
function h = svmplot(svmModel)
% 计算决策边界
sv = svmModel.SupportVectors;
B = svmModel.Bias;
w = svmModel.SupportVectorWeights * sv;
f = @(x) w(1)*x + B;
db = fminbnd(@(x) f(x) + sqrt(eps), min(sv(:,1)), max(sv(:,1)));
ub = fminbnd(@(x) f(x) - sqrt(eps), min(sv(:,1)), max(sv(:,1)));
% 绘制决策边界和支持向量
h(1) = ezplot(f, [min(sv(:,1)) max(sv(:,1))]);
h(2) = plot(sv(:,1), sv(:,2), 'ko');
h(3) = plot([db ub], [f(db) f(ub)], 'r--');
end
```
这个代码加载了鸢尾花数据集,提取了第三和第四列的特征作为输入数据,并使用 `fitcsvm` 函数训练 SVM 模型。然后,它使用 `gscatter` 函数绘制输入数据的散点图,并使用 `svmplot` 函数绘制决策边界和支持向量。`svmplot` 函数使用了 SVM 模型的支持向量、偏置和权重来计算决策边界,并绘制了支持向量和决策边界。
阅读全文