matlab svm三分类代码
时间: 2024-09-22 18:03:15 浏览: 65
Matlab中的支持向量机(SVM)用于分类任务,包括三分类。以下是一个简单的例子,展示如何使用SVM进行三个类别(比如A、B、C)的二分类数据扩展到三分类:
```matlab
% 导入所需库
addpath('stats toolbox'); % 如果尚未添加
% 假设我们有训练数据集X_train(特征矩阵),y_train(标签向量,1代表A,2代表B,3代表C)
load('your_dataset.mat') % 替换为实际的数据文件名
% 将多分类问题转化为二分类问题 (one-vs-all)
num_classes = length(unique(y_train));
X = zeros(num_samples, num_classes); % 新的样本矩阵
for i = 1:num_classes
idx = find(y_train == i);
X(idx, i) = ones(size(idx));
end
Y = categorical(y_train); % 转换为categorical类型便于处理
% 划分训练集和测试集
cv = cvpartition(Y, 'HoldOut', 0.3); % 30%的测试集
X_train = X(training(cv), :);
Y_train = Y(training(cv));
X_test = X(test(cv), :);
Y_test = Y(test(cv));
% 训练SVM模型
model = fitcsvm(X_train, Y_train, 'KernelFunction', 'linear'); % 使用线性核
% 预测并评估
Y_pred = predict(model, X_test);
accuracy = sum(Y_pred == Y_test) / numel(Y_test);
% 打印准确率
disp(['Accuracy: ', num2str(accuracy)])
%
阅读全文
相关推荐

















