使用MATLAB中的SVM进行分类

作者:da吃一鲸8862024.01.18 13:03浏览量:7

简介:在MATLAB中使用支持向量机(SVM)进行二分类和多分类的示例代码。

在使用支持向量机(SVM)进行分类时,MATLAB提供了非常方便的接口。以下是一些示例代码,演示如何在MATLAB中使用SVM进行二分类和多分类。
二分类示例

  1. % 加载数据集
  2. load fisheriris
  3. x = meas(:,1:2); % 只使用前两个特征
  4. y = species; % 类别标签
  5. % 将数据集分为训练集和测试集
  6. cv = cvpartition(y, 'HoldOut', 0.5);
  7. idx = cv.test;
  8. xTrain = x(~idx,:);
  9. yTrain = y(~idx,:);
  10. xTest = x(idx,:);
  11. yTest = y(idx,:);
  12. % 训练SVM分类器
  13. SVMModel = fitcensemble(xTrain, yTrain, 'Method', 'Bag');
  14. % 在测试集上评估分类器
  15. yPred = predict(SVMModel, xTest);
  16. confusionmat(yTest, yPred)

多分类示例
对于多分类问题,可以使用fitcecoc函数来训练一个多类SVM分类器。以下是一个示例代码:

  1. % 加载数据集
  2. load fisheriris
  3. x = meas; % 使用所有特征
  4. y = species; % 类别标签
  5. % 将数据集分为训练集和测试集
  6. cv = cvpartition(y, 'HoldOut', 0.5);
  7. idx = cv.test;
  8. xTrain = x(~idx,:);
  9. yTrain = y(~idx,:);
  10. xTest = x(idx,:);
  11. yTest = y(idx,:);
  12. % 训练SVM分类器
  13. SVMModel = fitcecoc(xTrain, yTrain);
  14. % 在测试集上评估分类器
  15. yPred = predict(SVMModel, xTest);
  16. confusionmat(yTest, yPred)

这些示例代码演示了如何在MATLAB中使用支持向量机(SVM)进行二分类和多分类。首先,需要加载数据集并对其进行预处理。然后,使用fitcensemble函数(二分类)或fitcecoc函数(多分类)来训练SVM分类器。最后,可以使用predict函数在测试集上评估分类器的性能。confusionmat函数用于显示混淆矩阵,以评估分类器的性能。请注意,这些示例代码仅用于演示目的,实际应用中可能需要进行更多的数据预处理和参数调整。