1 / 14
文档名称:

提升分类器性能--svm神经网络的参数优化.doc

格式:doc   大小:33KB   页数:14页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

提升分类器性能--svm神经网络的参数优化.doc

上传人:iris028 2019/11/12 文件大小:33 KB

下载得到文件列表

提升分类器性能--svm神经网络的参数优化.doc

文档介绍

文档介绍:%SVM神经网络中的参数优化---如何更好的提升分类器的性能%%清空环境变量functionchapter13_PSOcloseall;clear;clc;pact;%%数据提取%载入测试数据wine,其中包含的数据为classnumber=3,wine:178*13的矩阵,wine_labes:178*;%画出测试数据的box可视化图figure;boxplot(wine,'orientation','horizontal','labels',categories);title('wine数据的box可视化图','FontSize',12);xlabel('属性值','FontSize',12);gridon;%画出测试数据的分维可视化图figuresubplot(3,5,1);holdonforrun=1:178plot(run,wine_labels(run),'*');endxlabel('样本','FontSize',10);ylabel('类别标签','FontSize',10);title('class','FontSize',10);forrun=2:14subplot(3,5,run);holdon;str=['attrib',num2str(run-1)];fori=1:178plot(i,wine(i,run-1),'*');endxlabel('样本','FontSize',10);ylabel('属性值','FontSize',10);title(str,'FontSize',10);%选定训练集和测试集%将第一类的1-30,第二类的60-95,第三类的131-153做为训练集train_wine=[wine(1:30,:);wine(60:95,:);wine(131:153,:)];%相应的训练集的标签也要分离出来train_wine_labels=[wine_labels(1:30);wine_labels(60:95);wine_labels(131:153)];%将第一类的31-59,第二类的96-130,第三类的154-178做为测试集test_wine=[wine(31:59,:);wine(96:130,:);wine(154:178,:)];%相应的测试集的标签也要分离出来test_wine_labels=[wine_labels(31:59);wine_labels(96:130);wine_labels(154:178)];%%数据预处理%数据预处理,将训练集和测试集归一化到[0,1]区间[mtrain,ntrain]=size(train_wine);[mtest,ntest]=size(test_wine);dataset=[train_wine;test_wine];%mapminmax为MATLAB自带的归一化函数[dataset_scale,ps]=mapminmax(dataset',0,1);dataset_scale=dataset_scale';train_wine=dataset_scale(1:mtrain,:);test_wine=dataset_scale((mtrain+1):(mtrain+mtest),:);%%选择最佳的SVM参数c&g[,bestc,bestg]=psoSVMcgForClass(train_wine_labels,train_wine);%打印选择结果disp('打印选择结果');str=sprintf('uracy=%g%%Bestc=%gBestg=%g',,bestc,bestg);disp(str);%%利用最佳的参数进行SVM网络训练cmd=['-c',num2str(bestc),'-g',num2str(bestg)];model=svmtrain(train_wine_labels,train_wine,cmd);%%SVM网络预测[predict_label,accuracy]=svmpredict(test_wine_labels,test_wine,model);%打印测试集分类准确率total=length(test_wine_labels);right=sum(predict_label==test_wine_labels);disp('打印测试集分类准确率');str=sprintf('Accuracy=%g%%(%d/%d)',accuracy(1),right,total);disp(str);%%结果分析%测试集的实际分类和预测分类图%通过图可以看出只有三个测试样本是被错分的figure;holdon;plot(test_wine_labe