python朴素贝叶斯对wine_基于朴素贝叶斯对Wine数据集分类

夏赵建+杜友福

摘要:为了解决由于葡萄酒的组成成分十分复杂与多样而导致它的类型分类与品质划分困难的问题,减少由于感官评审法对葡萄酒的评测周期长、影响因素多,主观性强和重复性差以及近红外光谱和三维荧光光谱等重复性差、人的感官长时间易出现适应性疲劳而导致对葡萄酒的口感、质量评测造成不可估计的经济影响。通过对178个葡萄酒样品化学分析数据进行分析处理, 其中有13个葡萄酒属性,使用朴素贝叶斯分类算法对其属性进行分析来确定葡萄酒品质的分类。

关键词:葡萄酒分类;葡萄酒评测;朴素贝叶斯;数据集;葡萄酒样品

中图分类号:TP399 文献标识码:A 文章编号:1009-3044(2017)29-0224-03

Abstract: In order to solve the problem of type classification and difficulty in quality division due to the composition of the wine is very complex and diverse, reduced due to the sensory evaluation method for wine evaluation period is long, the influencing factors are too strong, the subjectivity is strong and the repeatability is poor and the near infrared spectrum and the three-dimensional fluorescence spectrum are reproducible, the human senses are prone to adaptive fatigue for a long time and lead to the taste of the wine , Quality assessment results in unpredictable economic impact. The chemical analysis data of 178 wine samples were analyzed and analyzed, among which there were 13 wine attributes, and the properties of wine were analyzed by using naive Bayesian classification algorithm to analyze the classification of wine quality.

Key words:Classification of wines; Wine evaluation; Naive Bayesian; data set; Sample of wine

1 概述

隨着经济的发展和生活质量的提高,葡萄酒越来越受到大家的欢迎,它的产量和需求量迅速增长,但是它在不适宜的环境中保存容易变质,不仅保存的技术需要复杂的化学知识,造成繁琐、 费时和费用较高, 而且不能对它的组成成分进行全面的分析[1]。感官评测的影响因素多、 主观性比较强,没有统一的参考标准,其重复性差是一个很严重的问题,这种方法对葡萄酒的质量评测及分类造成了难以估量的经济影响[2-3]。葡萄酒的口感与质量是它组成成分的综合反映,由于葡萄酒的组成成分十分的复杂与多样,所以对葡萄酒的类型分类与品质划分比较困难。采用朴素贝叶斯根据酒的13种成分来对酒的种类进行分类。

2 实验数据与朴素贝叶斯的应用

2.1 实验数据来源

该实验的数据源是Wine data,这是对位于意大利同一地区生产的三种不同类型的葡萄酒做大量分析所得出的数据,如图1所示。这些数据包括了三种酒中13种不同成分的具体数量。13种成分分别为:Alcohol,Malic acid,Ash,Alcalinity of ash,Magnesium,Total phenols,Flavanoids,Nonflavanoid phenols,Proanthocyanins,Color intensity,Hue,OD280/OD315 of diluted wines,Proline。在 “wine.data”文件中,每行代表一种酒的样本,共有178个样本;一共有14列,其中,第一列为类标志属性,共有三类,分别记为“1”,“2”,“3”;后面的13列为每个样本的对应属性的样本值。其中第1类有59个样本,第2类有71个样本,第3类有48个样本。

2.2 算法的选取

经过对数据集以及分类算法的学习, 认真分析了朴素贝叶斯分类器和其他算法, 包括决策树和神经网络等等[4]。 同时由于这个数据集有 13 个属性, 用决策树实现起来会很复杂。 因而选择了用朴素贝叶斯分类算法来实现。 编程的时候采用 c++语言实现分类的功能。将 178 个样本分成 130 个训练样本和 48个测试样本, 采用朴素贝叶斯分类算法, 计算出先验概率和后验概率, 通过比较概率的最大值, 判别出测试样本所属于的酒的类型, 同时输出测试样本计算的正确率和错误率。

2.3 朴素贝叶斯分类器

2.3.1 原理介绍

朴素贝叶斯分类器( Naive Bayes Classifier, NBC) , 是贝叶斯分类器中应用最为广泛的模型之一。 该模型描述如图 2 所示。

假设有一个变量集,其中包括个条件属性。包含个类标签。朴素贝叶斯分类模型假设所有的条件属性都作为类变量的孩子节点。将给定的一个待分类样本,分配给类,当且仅当:。根据贝叶斯定理[5-6],有:endprint

如果事先不清楚类在数据集中的概率情况时,可以假设每个类别的概率相等。即有:

并根据这个对最大化。否则,最大化。因对于所有的类别均为常数,故有:

由朴素贝叶斯分类算法的条件属性相互独立的假设,有:

其中,是类在训练样本中的实例数,是训练样本总数。则NBC模型的公式表达式为:

概率可由训练样本估值,其中:

1) 如果属性是离散型的,则是在属性上具有值的类的训练样本个数。

2) 如果属性是连续值,则一般假定它服从高斯分布。因而,

其中是属性的高斯密度函数,,分别为平均值和标准方差。

3) 对于待分类样本,我们分别计算每个类别的条件概率。

当且仅当时,样本属于类别。

2.3.2 算法步骤

1) 对所需的数据集进行预处理,包括属性值离散化和缺失值填补;

2) 统计训练样本的个数、类为的样本数、类的样本中属性取值为的样本个数;

3) 计算和

4) 利用分类模型:得出待分类样本的判定结果。

3 实验方案

3.1 朴素贝叶斯分类算法

每个数据样本用一个维特征向量表示,分别描述对个属性样本的个度量。假定有个类对于数据样本,分类法将预测属于类,当且仅当条件成立,根据贝叶斯定理式(1)。由于对于所有类都是常数,需最大化,计算,朴素贝叶斯分类假设类条件独立。即给定样本属性值相互条件独立,即在使用中,常用频度代替[7]。

3.2 朴素贝叶斯分类流程

对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,概率最大,就认为此待分类项属于哪个类别。在没有其他可用信息下,选择条件概率最大的类别,这就是朴素贝叶斯的思想基础。那么现在的关键就是如何计算第3步中的各個条件概率[8-9]。其步骤为:

1) 找到一个已知分类的待分类项集合,这个集合叫做训练样本集。

2) 统计得到在各类别下各个特征属性的条件概率估计。

3) 如果各个特征属性是条件独立的,则根据贝叶斯定理式(1)。

因为分母对于所有类别为常数,只要将分子最大化皆可。又因为各特征属性是条件独立的,所以有 。

根据上述分析,朴素贝叶斯分类的流程可以由下图表示:

4 实验步骤

4.1 数据集的下载

在http://archive.ics.uci.edu/ml/网页上下载实验所用的Wine数据集。点击Wine数据集,在页面上,点击Data Folder,下载wine.data数据,即为实验所需的数据集。

4.2 朴素贝叶斯算法实现

首先,将Wine数据集分成130个训练样本和48个测试样本,分别保存在“Ttrainingwine.data”和“testwine.data”中。用Data Read从文件中读取数值。

然后用朴素贝叶斯算法的思想:

1) 统计三类红酒数据的数量,各自求和,各自类的数量除以总数,求出它们的先验概率,保存在数组中的。

2) 分别求中,中和中的个数。

3) 计算概率,计算,同样的方法去计算概率,,,,把这三个计算出来的概率值,,保存在数组gailv中的gailv[0],gailv[1],gailv[2]。

4) 比较gailv[0],gailv[1],gailv[2],找出最大值,最大值所对应的那个类即为要找的wine的分类。

4.3 结果分析

在运行环境为Microsoft Visual Studio 2013下运行的实验结果如下面的截图所示。通过比较gailv[0],gailv[1],gailv[2],找出最大值,最大值所对应的那个类即为要找的wine的分类与测试样本数据作比较后的正确率为81.25%,从结果上看有效的对红酒的类型进行了分类,总体说明此方法的可行性。相应的提高训练样本与测试样本比例或者把离散化算法的区间划得更小一点可以进一步提高分类的正确率。

参考文献:

[1] 杜婷.基于属性选择的朴素贝叶斯分类研究与应用[D].中国科学技术大学,2016.

[2] 卢龙,王静宇,王超.面向云计算的数据挖掘分类算法研究[J/OL].微型机与应用,2017,36(06):7-9+12.(2017-03-31)[2017-09-11].http://kns.cnki.net/kcms/detail/11.5881. TP.20170331. 1929.003.htmlDO:10.19358/j.issn.1674-7720.2017.06.003

[3] 喻凯西.朴素贝叶斯分类算法的改进及其应用[D].北京林业大学,2016.

[4] 赵文涛,孟令军,赵好好,王春春.朴素贝叶斯算法的改进与应用[J].测控技术,2016,35(02):143-147.[2017-09-11].

[5] 徐会.基于贝叶斯理论的网络舆情主题分类模型研究[D].江苏科技大学,2014.

[6] 周霞.基于云计算的太阳风大数据挖掘分类算法的研究[D].成都理工大学,2014.

[7] 余民杰.贝叶斯网络分类器与应用[D].云南财经大学,2012.

[8] 彭兴媛.朴素贝叶斯分类改进算法的研究[D].重庆大学,2012.

[9] 刘沛骞,冯晶晶.一种改进的朴素贝叶斯文本分类算法[J].微计算机信息,2010,26(27):187-188.endprint

你可能感兴趣的:(python朴素贝叶斯对wine_基于朴素贝叶斯对Wine数据集分类)