SVM分类器讨论 matlab

SVM分类器讨论

1.1 题目的主要研究内容

(1)通过PPT及视频的方式,介绍了SVM分类器的原理及推导过程、SVM的算法流程,并总结SVM分类器的优缺点、了解SVM的应用、通过Matlab和Python两种方式实现SVM分类器分类和预测,算出预测准确率,作出实际与预测的图像并对分类结果进行分析评判。

(2)我本次主要负责Matlab程序实现SVM分类器对Matalb自带的红酒数据集的分类和预测,本次程序设计的目标就是基于Matlab通过对Matlab自带的红酒数据集进行分类和预测,并得到预测准确率以及预测和分类的图像。

1.2 题目研究的工作基础

本次设计的程序是基于MatlabR2020a版本进行的,其中还用到了libsvm3.15版本的工具包,以便于Matlab程序能正确识别代码中使用到的svm函数。

1.3 设计思想

首先在Matlab中对红酒数据集进行读取,输出到xlsx表中,并将三种不同种类的红酒数据特征用1、2、3来进行分类,在对数据集中的所有数据进行归一化,确保所有数据都在一个数量级上。

然后我们要确定训练样本和测试样本,为了实验的精确性,每一类样本都拿出一部分进行训练,余下一部分没有挑出来的用来测试。选取完样本就开始构建支持向量机,并对前面的特征数据和类型数据进行训练。

最后我们使用训练好的支持向量机进行预测,可以得到预测准确率,对预测结果进行作图。

1.4 主要程序代码

%% 初始化程序

clear

close all

clc

%% 读取数据

data=xlsread('wine.xlsx','Sheet1','A1:N178');

features=data(:,1:13 ); %对数据中的1-13列即特征进行提取

class=data(:,14);%对数据中的第14列即类型进行提取

%% 对特征数据归一化

temp=mapminmax(features',0,1);%将特征数据归一化到0-1之间

featuresn=temp';%转置为列向

%%为了实验的精确性,每一类样本都拿出一部分进行训练,余下一部分没有挑出来的用来测试。

train_id=[1:40 ,60:110,131:160];%训练样本序号

test_id=[41:59 ,111:130,161:178];%测试样本序号

%% 构建支持向量机

cmd=('-c 100 -g 0.1 -t 2');%支持向量机参数设置

model=svmtrain(class,featuresn,cmd); %对数据进行训练

%% 使用支持向量机预测

[predict_class]=svmpredict(class,featuresn,model);

%% 预测结果作图

figure

plot(class,'bo')

hold on

plot(predict_class,'r*')

grid on

xlabel('样本序号')

ylabel('类型')

legend('实际类型','预测类型')

set(gca,'fontsize',12)

1.5 运行结果及分析

在运行predicrt函数后我们可以从命令行得到准确率。

最后对预测结果进行作图可以得到分类好的三种红酒类型和预测预测类型的比较。

你可能感兴趣的:(模式识别综合应用代码全,支持向量机,机器学习,算法)