基于SVM的数据分类预测——意大利葡萄酒种类识别

wine数据来自于UCI数据库,记录的是意大利同一地区3中不同品种的葡萄酒13中化学成分含量,以期通过科学的方法,达到自动分类葡萄酒的目的。

本次分类的数据共有178个样本,每个样本有13个属性,并提供每个样本的正确分类,用于检验SVM分类的准确定。

首先我们画出数据的可视化图:

% 载入测试数据wine,其中包含的数据为classnumber = 3,wine:178*13的矩阵,wine_labes:178*1的列向量
load chapter_WineClass.mat;

% 画出测试数据的box可视化图
figure;
boxplot(wine,'orientation','horizontal','labels',categories);
title('wine数据的box可视化图','FontSize',12);
xlabel('属性值','FontSize',12);
grid on;

% 画出测试数据的分维可视化图
figure
subplot(3,5,1);
hold on
for run = 1:178
    plot(run,wine_labels(run),'*');
end
xlabel('样本','FontSize',10);
ylabel('类别标签','FontSize',10);
title('class','FontSize',10);
for run = 2:14
    subplot(3,5,run);
    hold on;
    str = ['attrib ',num2str(run-1)];
    for i = 1:178
        plot(i,wine(i,run-1),'*');
    end
    xlabel('样本','FontSize',10);
    ylabel('属性值','FontSize',10);
    title(str,'FontSize',10);
end

(图1)

(图2)

图1是wine数据的box可视化图,图2是wine的箱式图,从图上我们很难分出每一种葡萄酒是哪种类型。下面我们尝试用SVM来分类。

数据的预处理

% 选定训练集和测试集

% 将第一类的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)];

<strong>%% 数据预处理</strong>
% 数据预处理,将训练集和测试集归一化到[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网络建立、训练和预测

<span style="font-size:12px;">%% SVM网络训练
model = svmtrain(train_wine_labels, train_wine, '-c 2 -g 1');

%% SVM网络预测
[predict_label, accuracy,dec_value1] = svmpredict(test_wine_labels, test_wine, model);</span>

结果分析

%% 结果分析

% 测试集的实际分类和预测分类图
% 通过图可以看出只有一个测试样本是被错分的
figure;
hold on;
plot(test_wine_labels,'o');
plot(predict_label,'r*');
xlabel('测试集样本','FontSize',12);
ylabel('类别标签','FontSize',12);
legend('实际测试集分类','预测测试集分类');
title('测试集的实际分类和预测分类图','FontSize',12);
grid on;

利用svm分类的准确率达到了98.8764%,在89个测试样本中仅有一个被分类错误。可见SVM在数据分类方面的强大!

END

基于SVM的数据分类预测——意大利葡萄酒种类识别

时间: 2024-09-28 08:46:41

基于SVM的数据分类预测——意大利葡萄酒种类识别的相关文章

基于SVM的数据分类预測——意大利葡萄酒种类识别

update:把程序源代码和数据集也附上http://download.csdn.net/detail/zjccoder/8832699 2015.6.24 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- w

前馈神经网络练习:使用tensorflow进行葡萄酒种类识别

数据处理 样本数据描述 样本数据集是double类型的178 * 14矩阵,第一列表示酒所属类别,后面13列分别表示当前样本的13个属性: 1) Alcohol 2) Malic acid 3) Ash 4) Alcalinity of ash 5) Magnesium 6) Total phenols 7) Flavanoids 8) Nonflavanoid phenols 9) Proanthocyanins 10) Color intensity 11) Hue 12) OD280/OD

基于SVM的字母验证码识别

基于SVM的字母验证码识别 摘要 本文研究的问题是包含数字和字母的字符验证码的识别.我们采用的是传统的字符分割识别方法,首先将图像中的字符分割出来,然后再对单字符进行识别.首先通过图像的初步去噪.滤波.形态学操作等一系列预处理过程,我们能够将图像中的噪点去除掉.为了将字符分割开来,我们利用Kmeans聚类算法对图像中的像素点聚成五类,分别代表五个字符,结果表明Kmeans算法的聚类准确度能够达到99.2%.对字符分割完成之后,我们采用支持向量机的算法对字符进行识别,通过调节参数能够使得准确率达到

基于SVM+HOG的花生品种识别

早在大二时,导师做过一个花生品种识别的程序,但当时用于品种识别的特征是自定义特征:而我的当初的本科毕业设计则是基于SVM + HOG的人脸识别:在后来的工作学习中,又用到了HOG特征,想着是不是之前的花生品种的识别也能用Hog特征进行识别:正所谓学以致用,也能巩固下刚刚所学的知识: 所谓的Hog特征与SVM网上资料一大堆,而且讲解得非常详细,在这里不在做过多的讲解: 本程序的开发环境,主要是依赖于VS2013 + OpenCV2.4.9,开发环境,请自行配置,那么,下面贴出代码,不足之处,请各位

人脸识别---基于深度学习和稀疏表达的人脸识别算法

介绍 基于深度学习和稀疏表达的人脸识别算法 1 利用VGGFace提取人脸特征 2 PCA对人脸特征进行降维 3 稀疏表达的人脸匹配 Code 1 介绍 本文将介绍一种基于深度学习和稀疏表达的人脸识别算法.首先,利用深度学习框架(VGGFace)提取人脸特征:其次,利用PCA对提取的特征进行降维:最后,利用稀疏表达分类实现特征匹配.我采用CMC曲线评价在AR数据库上的识别性能.最后我还提供了整个过程的code. 2 基于深度学习和稀疏表达的人脸识别算法 2.1 利用VGGFace提取人脸特征 下

基于sklearn K临近算法 最简单预测 花的种类

因为注释已经很详细了,所以直接上代码: 1 from sklearn.datasets import load_iris 2 from sklearn.model_selection import train_test_split 3 #k临近算法 4 from sklearn.neighbors import KNeighborsClassifier 5 import numpy as np 6 import pandas as pd 7 def get数据(): 8 iris_dataset

基于SVM与人工神经网络的车牌识别系统

最近研究了支持向量机(Support Vector Machine,SVM)和人工神经网络(Artifical Neural Network,ANN)等模式识别理论,结合OpenCV的书:<Mastering OpenCV with Practical Computer Vision Projects>,将两种思想运用到车辆的车牌识别算法中.车辆识别结合了多种图像处理技术,如视频监控.图像检测.图像分割和光学字符识别(OCR)等,在道路交通监控中有着重要的作用.以下内容主要包含几个方面: 车牌

基于SVM和SMO的线性分类器

实验介绍 一般来说,线性可分的训练数据的分界超平面往往并不唯一,但不同的超平面对于测试的识别效果却仍有差别.SVM是通过使超平面在每一个方向上与每一类各自最近的店距离相同从而达到最优线性分类效果.除此之外,SVM在求解超平面的过程中,还能够通过构造核函数使得非线性可分的数据变得线性可分. 在用SVM法构造出目标函数(其中m为样本数) 和限制条件 后,可以通过SMO法求解. SMO法求解多变量目标函数的思想是,只将目标函数中的两个变量作为输入变量,而将其余的所有变量暂时看作参变量,再用梯度下降法或

#基于SVM的人脸识别

#数据说明 LFW全称为Labeled Faces in the Wild, 是一个应用于人脸识别问题的数据库,更多内容查看官方网站:http://vis-www.cs.umass.edu/lfw LFW语料图片,每张图片都有人名Label标记.每个人可能有多张不同情况下情景下的图片.如George W Bush 有530张图片,而有一些人名对应的图片可能只有一张或者几张.我们将选取出现最多的人名作为人脸识别的类别,如本实验中选取出现频数超过70的人名为类别, 那么共计1288张图片.其中包括A