svm支持向量机matlab代码 二分类
时间: 2023-07-05 12:25:35 浏览: 75
以下是一个简单的支持向量机二分类的Matlab代码示例:
```
% 生成数据
x1 = randn(50,2)+ones(50,2);
x2 = randn(50,2)-ones(50,2);
X = [x1;x2];
Y = [ones(50,1);-ones(50,1)];
% 训练SVM模型
svmModel = fitcsvm(X,Y,'KernelFunction','linear','BoxConstraint',1);
% 绘制决策边界和支持向量
figure;
gscatter(X(:,1),X(:,2),Y,'rb','.');
hold on;
h = ezplot(@(x1,x2)predict(svmModel,[x1,x2]),[-3,3,-3,3]);
h.Color = 'k';
h.LineWidth = 2;
title('SVM二分类');
legend('正样本','负样本','决策边界','支持向量');
hold off;
```
代码中使用了`fitcsvm`函数来训练SVM模型,其中`KernelFunction`指定了核函数为线性核,`BoxConstraint`指定了正则化参数的值为1。
在绘制决策边界和支持向量时,使用了`ezplot`函数来绘制二维平面上的曲线。
相关问题
svm支持向量机二分类matlab代码
当使用SVM(支持向量机)进行二分类时,可以使用MATLAB中SVM工具箱来实现。下面是一个简单的SVM二MATLAB代码示例:
```matlab
% 准备训练数据
data = [0 0; 1 1; 2 2; 3 3; 4 4; 5 5]; % 样本数据
labels = [-1 -1 -1 1 1 1]; % 样本标签
% 训练SVM模型
svmModel = fitcsvm(data, labels);
% 准备测试数据
testData = [1.5 1.5; 3.5 3.5];
% 预测测试数据的标签
predictedLabels = predict(svmModel, testData);
% 显示预测结果
disp(predictedLabels);
```
上述代码中,首先准备了训练数据`data`和对应的标签`labels`。然后使用`fitcsvm`函数训练了一个SVM模型`svmModel`。接下来,准备了测试数据`testData`,并使用训练好的模型对测试数据进行预测,得到预测的标签`predictedLabels`。最后,通过`disp`函数显示预测结果。
Svm支持向量机Matlab 代码
以下是一个简单的SVM二分类器的Matlab代码示例:
```matlab
% 准备数据
load fisheriris
X = meas(:,1:2);
Y = species;
Y = categorical(Y);
rng(1); % 设置随机数种子
% 划分训练集和测试集
cv = cvpartition(Y,'HoldOut',0.2);
idx = cv.test;
Xtrain = X(~idx,:);
Ytrain = Y(~idx);
Xtest = X(idx,:);
Ytest = Y(idx);
% 训练SVM分类器
SVMModel = fitcsvm(Xtrain,Ytrain);
% 预测测试集
Ypred = predict(SVMModel,Xtest);
% 计算分类准确率
Accuracy = sum(Ypred == Ytest)/numel(Ytest)
```
这个示例使用鸢尾花数据集,其中包含150个样本,每个样本有4个特征和一个类别标签。我们只使用前两个特征,并将类别标签转换为分类变量。然后,使用“HoldOut”方法将数据集分为训练集和测试集。使用`fitcsvm`函数训练SVM分类器,并使用`predict`函数预测测试集。最后,计算分类准确率。