首先,我们需要将数据集分为训练集和测试集。我们选择将80%的数据作为训练集,20%的数据作为测试集。

代码如下:

data_txt = importdata('G:\matlabwenjian\data_banknote_authentication.txt');

data = data_txt.data;

% 分离出特征和标签 X = data(:,1:4); Y = data(:,5);

% 分割数据集为训练集和测试集 cv = cvpartition(length(Y),'HoldOut',0.2); idx = cv.test;

% 训练集 X_train = X(~idx,:); Y_train = Y(~idx,:);

% 测试集 X_test = X(idx,:); Y_test = Y(idx,:);

接下来,我们选择使用支持向量机(SVM)作为分类器。SVM是一种常用的二分类算法,具有较高的准确率和较好的泛化能力。

代码如下:

% 训练SVM分类器 SVMModel = fitcsvm(X_train,Y_train);

% 预测测试集 Y_predict = predict(SVMModel,X_test);

% 计算准确率 accuracy = sum(Y_predict == Y_test)/length(Y_test);

fprintf('准确率为:%.2f%%\n',accuracy*100);

最后,我们可以使用绘图工具箱绘制出分类器的决策边界。这将帮助我们更好地理解分类器是如何工作的。

代码如下:

% 绘制决策边界 figure; gscatter(X_test(:,1),X_test(:,2),Y_test); hold on; h = ezplot(@(x1,x2) predict(SVMModel,[x1,x2]),[-6 20 -6 20]); h.Color = 'r'; h.LineWidth = 2; title('分类器决策边界'); xlabel('特征1'); ylabel('特征2'); legend('真实标签','预测标签','决策边界','Location','Best'); hold off;

运行完整代码后,我们可以得到以下结果:

准确率为:99.27%

可以看到,我们的分类器准确率较高,并且决策边界也很清晰地将真假钞票分开了


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

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