Matlab 银行钞票真假识别:SVM分类器实现与结果可视化
本教程将使用Matlab 2016自带的工具箱,利用SVM分类器对银行钞票真假数据集进行分类,并通过可视化展示分类结果。
首先,需要对数据集进行处理,将其分为训练集和测试集。代码如下:
data_txt = importdata('G:\matlabwenjian\data_banknote_authentication.txt');
data = data_txt.data;
[m, n] = size(data);
rate = 0.7;
train_num = ceil(m * rate);
train_data = data(1:train_num, :);
test_data = data(train_num + 1:end, :);
接下来,使用支持向量机(SVM)作为分类器。SVM是一种常用的分类算法,可以实现高准确率的分类效果。代码如下:
svm = fitcsvm(train_data(:, 1:end-1), train_data(:, end));
predict_label = predict(svm, test_data(:, 1:end-1));
最后,使用绘图工具箱将分类结果进行可视化。代码如下:
figure;
hold on;
scatter(test_data(predict_label == 0, 1), test_data(predict_label == 0, 2), '+');
scatter(test_data(predict_label == 1, 1), test_data(predict_label == 1, 2), 'o');
legend('Fake', 'Real');
xlabel('Variance');
ylabel('Skewness');
hold off;
将以上三段代码结合起来,得到完整程序如下:
data_txt = importdata('G:\matlabwenjian\data_banknote_authentication.txt');
data = data_txt.data;
[m, n] = size(data);
rate = 0.7;
train_num = ceil(m * rate);
train_data = data(1:train_num, :);
test_data = data(train_num + 1:end, :);
svm = fitcsvm(train_data(:, 1:end-1), train_data(:, end));
predict_label = predict(svm, test_data(:, 1:end-1));
figure;
hold on;
scatter(test_data(predict_label == 0, 1), test_data(predict_label == 0, 2), '+');
scatter(test_data(predict_label == 1, 1), test_data(predict_label == 1, 2), 'o');
legend('Fake', 'Real');
xlabel('Variance');
ylabel('Skewness');
hold off;
该程序通过SVM算法对银行钞票真假进行分类,并使用绘图工具箱展示了分类结果。其中,训练集和测试集的比例为7:3,SVM分类器使用默认参数,绘图工具箱为matlab 2016自带的。
代码解释
- 数据集处理:
importdata函数导入数据文件。size函数获取数据矩阵的尺寸。ceil函数对训练集样本数量进行向上取整。- 将数据集划分为训练集和测试集。
- SVM 模型训练:
fitcsvm函数使用训练集训练SVM模型。predict函数使用训练好的SVM模型对测试集进行预测。
- 结果可视化:
figure函数创建一个新的图形窗口。scatter函数绘制散点图,将不同类别的样本用不同的符号表示。legend函数添加图例。xlabel和ylabel函数添加坐标轴标签。
原文地址: https://www.cveoy.top/t/topic/nXGM 著作权归作者所有。请勿转载和采集!