以下是一个简单的SVM分类器示例程序,使用银行钞票真假辨别数据集。同时,使用绘图函数将测试数据和分类结果可视化。

% 导入数据
data_txt = importdata('G:\matlabwenjian\data_banknote_authentication.txt');

% 随机打乱数据集顺序
data_shuffled = data_txt(randperm(size(data_txt,1)),:);

% 将数据集分为训练集和测试集
train_data = data_shuffled(1:800,:);
test_data = data_shuffled(801:end,:);

% 提取训练集和测试集的特征和标签
train_features = train_data(:,1:4);
train_labels = train_data(:,5);
test_features = test_data(:,1:4);
test_labels = test_data(:,5);

% 训练SVM分类器
svm_model = fitcsvm(train_features,train_labels);

% 预测测试数据的标签
predicted_labels = predict(svm_model,test_features);

% 计算分类器准确率
accuracy = sum(predicted_labels == test_labels)/length(test_labels);

% 绘制测试数据和分类结果的散点图
figure;
hold on;
scatter(test_features(:,1),test_features(:,2),20,test_labels,'filled');
scatter(test_features(:,1),test_features(:,2),20,predicted_labels,'d');
title(sprintf('SVM classification, accuracy=%.2f',accuracy));
xlabel('Feature 1');
ylabel('Feature 2');
legend('True label','Predicted label');

说明:

  1. 在这个示例程序中,我们使用了MATLAB自带的SVM分类器函数fitcsvm。
  2. 我们将数据集随机打乱,然后将前80%的数据作为训练集,后20%的数据作为测试集。
  3. 在训练SVM分类器时,我们只使用了训练集的特征和标签。
  4. 在预测测试数据的标签时,我们只使用了测试集的特征,而没有使用测试集的标签。
  5. 最后,我们使用MATLAB自带的绘图函数scatter,将测试数据和分类结果可视化。其中,真实标签用圆点表示,预测标签用菱形表示

原文地址: https://www.cveoy.top/t/topic/eHwD 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录