用朴素贝叶斯对wine数据集分类

该实验的数据集是MostPopular Data Sets(hits since 2007)中的wine数据集,这是是对在意大利同一地区生产的三种不同品种的酒,做大量分析所得出的数据。这些数据包括了三种酒中13种不同成分的数量。

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

1.实验数据集介绍

1.1Wine数据集

该实验的数据源是Wine data,这是对在意大利同一地区生产的三种不同品种的酒,做大量分析所得出的数据。如下图1-1所示:

用朴素贝叶斯对wine数据集分类_第1张图片

这些数据包括了三种酒中13种不同成分的数量。13种成分分别为:Alcohol,Malicacid,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.1朴素贝叶斯分类算法

每个数据样本用一个n维特征向量X={x1,x2,…,xn}表示,分别描述对n个属性A1,A2,..,An样本的n个度量。假定有m个类C1,…,Cm,对于数据样本X,分类法将预测X属于类Ci,当且仅当:P(Ci|X)> P(Cj|X),1<=j<=m而且j不等于i。

根据贝叶斯定理, :P(Ci|X)=P(X|Ci)P(Ci)/P(X)

由于P(X)对于所有类都是常数,只需最大化P(X|Ci)P(Ci),计算P(X|Ci),朴素贝叶斯分类假设类条件独立.即给定样本属性值相互条件独立,即:

,在使用中,p常用频度代替。

2.2朴素贝叶斯分类的原理与流程

朴素贝叶斯的思想基础是这样的:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类项属于哪个类别。通俗来说,就好比这么个道理,你在街上看到一个黑人,我问你猜这哥们哪里来的,你十有八九猜非洲。为什么呢?因为黑人中非洲人的比率最高,当然人家也可能是美洲人或亚洲人,但在没有其它可用信息下,我们会选择条件概率最大的类别,这就是朴素贝叶斯的思想基础。朴素贝叶斯分类的正式定义如下:

      1、设 为一个待分类项,而每个a为x的一个特征属性。

      2、有类别集合

      3、计算

      4、如果

那么现在的关键就是如何计算第3步中的各个条件概率。我们可以这么做:

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

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

      3、如果各个特征属性是条件独立的,则根据贝叶斯定理有如下推导:


      

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


      

根据上述分析,朴素贝叶斯分类的流程可以由下图2-1表示(暂时不考虑验证):


            用朴素贝叶斯对wine数据集分类_第2张图片

3实验步骤

3.1数据集的下载

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

3.2朴素贝叶斯算法实现

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

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

1.统计三类红酒数据的数量,各自求和,拿各自类的数量除以总数,求出它们的先验概率p(Q1),p(Q2),p(Q3),保存在数组R中的R[0], R[1], R[2]。

2.分别求P(Xk|Q1)中 ,P(Xk|Q2)中和 P(Xk|Q3) 中Xk的个数。

3.计算概率p(X|Q1),计算p(Q1)*p(X|Q1),同样的方法去计算概率p(X|Q2), p(Q2)*p(X|Q2), p(X|Q3), p(Q3)*p(X|Q3),把这三个计算出来的概率值p(Q1)*p(X|Q1),p(Q2)*p(X|Q2),p(Q3)*p(X|Q3)保存在数组gailv中的gailv[0],gailv[1],gailv[2]。

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

3.3朴素贝叶斯算法实现的源代码

    关于具体的实现代码见下面,此处不做详细的说明。

3.4实验结果

实验结果如下面的截图所示。

源代码:

MachineLearning.h:

#include
#include                       //set是C++标准库中的一种关联容器。所谓关联容器就是通过键(key)来读取和修改元素。
                                   //set容器的每一个键只能对应一个元素,即不存在键相同的不同元素。


#include                      //map 一种容器 也叫关联数组 
                                              //你先把它理解成数组  一个个的元素知道吧
                                            //然后你再这样理解,每个元素都有两个值,一个叫“键”,一个叫“值”
                                          //你可以通过“键”找到相关的“值”
                                         //通常map容器 只能存入单一实例,就是说不能有相同的“键/值”
                                        //map 就是 在key和value之间建立映射,是的可以通过key访问/获取value。


#include                 //标准库Vector类型,使用需要的头文件
                                          //vector是一种顺序容器,事实上和数组差不多,但它比数组更优越。
                                        //一般来说数组不能动态拓展,因此在程序运行的时候不是浪费内存,就是造成越界。
                                     //而vector正好弥补了这个缺陷,它的特征是相当于可分配拓展的数组,它的随机访问快,
using namespace std;
/*
  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/OD315 of diluted wines
  13)Proline            


*/
int xunlianshuliang = 118; //所有训练数据的范围
int ceshishuliang= 60;
struct yuanshishuju
{
double M1;
double M2;
double M3;
double M4;
    double M5;
    double M6;
double M7;
double M8;
double M9;
double M10;
double M11;
double M12;
double M13;
double M14;
};

MachineLearning.cpp:

#include                              //包含输入输出流
#include                               //sstream是字符串流,C++引入了ostringstream、istringstream、stringstream这三个类
                                                 //要使用他们创建对象就必须包含sstream.h头文件 
#include                               //包含文件流,这样就可以使用与文件相关的一些函数,像open(),close()等                                                                                 
#include "MachineLearning.h"                     //自己所建的一个头文件,名字为MachineLearning
using namespace std;                             //命名空间,c++中的所有标识符都被定义于std命名空间中
double R[3];                                     //在这里定义一个数组,用来存放先验概率
int m;             
vector ceshishuju;                 //存放测试数据
vector xunlianshuju;               //存放训练数据,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。
const int shuxingzongshu=13;                     //这里定义属性总数为一个常量,而且以后不能对其修改
map Q1_map[13];                  //存放每一类型,每种属性中某数值的概率
map Q2_map[13];                  //自动建立Key - value的对应。key 和 value可以是任意你需要的类型
map Q3_map[13];
ifstream   file1;                             //ifstream表示是以输入的方式打开文件


void DataRead(vector &shuju, const char* fileName)   //用DataRead从文件中读取数值 
{
file1.open(fileName);                                         //创建或打开一个用于访问文件的对象
int s;
if (fileName[0] == 'T')
s = xunlianshuliang;
else 
s = ceshishuliang;
string line;                                                  //定义一个line变量,string类型
yuanshishuju Ttrainingwine;
for (int a = 0;  a < s; a++)
{
file1 >> line;
while (line.find(',') > 0 && line.find(',') < line.length())     //find查找一个元素
{
line[line.find(',')] = ' '; 
}
istringstream stream(line);                                     //从字符串读,istringstream对象可以绑定一行字符串,然后以空格为分隔符把该行分隔开来
stream >> Ttrainingwine.M1 >> Ttrainingwine.M2 >> Ttrainingwine.M3 >> Ttrainingwine.M4 >> Ttrainingwine.M5 >> Ttrainingwine.M6 >> Ttrainingwine.M7 >> Ttrainingwine.M8 >> 
Ttrainingwine.M9 >> Ttrainingwine.M10 >>Ttrainingwine.M11 >>Ttrainingwine.M12 >> Ttrainingwine.M13 >> Ttrainingwine.M14;
shuju.push_back(Ttrainingwine);                                 //在vector尾部加入一个值为Ttrainingwine的数据
}
file1.close();                                                      //关闭文件
}


void pusubeiyesi()
{
int number1 = 0; 
int number2 = 0;
int number3 = 0;
int a;


    //统计三类红酒数据的数量,各自求和


for(a = 0; a < xunlianshuliang  ; a++)
{
if(xunlianshuju[a].M1 == 1)
{
number1 ++;
}
if(xunlianshuju[a].M1 == 2)
{
number2 ++;
}
if(xunlianshuju[a].M1 == 3)
{
number3 ++;
}                                                   
}


    //求它们的先验概率,拿各自类的数量除以总数


R[0] = (double)number1/(double)xunlianshuliang;         
R[1] = (double)number2/(double)xunlianshuliang;
R[2] = (double)number3/(double)xunlianshuliang;

map::iterator match;                     //interator迭代器,可以把它当做指向所属容器的指针
    for( a= 0 ; a < xunlianshuliang; a++)       
{
        //分别求P(Xk|Q1)中 ,P(Xk|Q2)中和 P(Xk|Q3) 中Xk的个数


if(xunlianshuju[a].M1 == 1)                          
{
int b=0;
for(;b< 13 ;b++)
{
double n = *(&xunlianshuju[b].M2+b);        //n为指向依次指向13个属性的属性内容

match = Q1_map[b].find(n);                  //遍历第一类红酒的数组,用find()函数返回一个迭代器指向键值为n的元素
if(match == Q1_map[b].end())
{    

                    Q1_map[b].insert(pair(n, 1));    //在第一类红酒的表Q1_map中用insert插入pair数据
}
else
{
double b = match->second;                       //否则的话就指向第2个迭代器
match->second = b + 1;
}
}
}
        
if(xunlianshuju[a].M1 == 2)                             
{
int b = 0;
for(;b< 13 ;b++)
{
double n = *(&xunlianshuju[a].M2+b);

match = Q2_map[b].find(n);         //遍历第二类红酒的数组,用find()函数返回一个迭代器指向键值为n的元素                 
if(match == Q2_map[b].end())
{

                      Q2_map[b].insert(pair(n, 1)); //在第二类红酒的表Q2_map中用insert插入pair数据
}
else
{
double b = match->second;                       //否则的话就指向第2个迭代器
match->second = b + 1;
}
}
}


if(xunlianshuju[a].M1 == 3)                                 
{
int b = 0;
for(;b< 13 ;b++)
{
double n = *(&xunlianshuju[a].M2+b);

match = Q3_map[b].find(n);                             //遍历第三类红酒的各属性值,用find()函数返回一个迭代器指向键值为n的元素  
if(match == Q3_map[b].end())
{

                      Q3_map[b].insert(pair(n, 1));     //在第三类红酒的表Q3_map中用insert插入pair数据
}
else
{
double b = match->second;
match->second = b + 1;
}
}
}
}


//计算各自的概率


for(a = 0; a < shuxingzongshu; a++)
{
for(match=Q1_map[a].begin(); match!=Q1_map[a].end(); ++match) 
{
double number = match->second;                            
match->second = (double)number/(double)number1;
}

for(match=Q2_map[a].begin(); match!=Q2_map[a].end(); ++match) 
{
double number = match->second; 
match->second = (double)number/(double)number2;
}


for(match=Q3_map[a].begin(); match!=Q3_map[a].end(); ++match) 
{
double number = match->second; 
match->second = (double)number/(double)number3;
        }

}
}


     //计算后验概率,找出最大值,最大值所对应的那个类即为我们要找的分类



void houyangailv()                    

{
int a,b,c;
double gailv[3];
   for(a = 0; a {
double pXQ[3]={0,0,0};
for(b = 0; b < 3; b++)
{
map::iterator match;

   //计算概率p(X|Q1)


for(c = 0; c < shuxingzongshu; c++)
{
match = Q1_map[c].find(*(&ceshishuju[a].M2+c));
if(match != Q1_map[c].end())
{
pXQ[0] =pXQ[0]+match->second;
}
}


//计算p(Q1)*p(X|Q1)


gailv[0] = R[0] * pXQ[0];
   
//计算概率p(X|Q2)
for(c = 0; c < shuxingzongshu; c++)
{
match = Q2_map[c].find(*(&ceshishuju[a].M2+c));
if(match != Q2_map[c].end())
{
pXQ[1] =pXQ[1]+match->second;
}
}
                
//计算p(Q2)*p(X|Q2)


gailv[1] = R[1]*pXQ[1];


   //计算概率p(X|Q3)


for(c = 0; c < shuxingzongshu; c++)
{
match = Q3_map[c].find(*(&ceshishuju[a].M2+c));
if(match != Q3_map[c].end())
{
pXQ[2] =pXQ[2]+match->second;
}
}


                //计算p(Q3)*p(X|Q3)


gailv[2] = R[2]*pXQ[2];

}
           
  
 //找出计算出的概率最大值
           
 if(gailv[0] > gailv[1] && gailv[0] >gailv[2])
{   
cout<<"    "<<1<<"        "< cout< if(ceshishuju[a].M1==1)
   m++;
}
else
{
if(gailv[1] > gailv[2])
{
 
 cout<<"    "<<2<<"        "<  cout< if(ceshishuju[a].M1==2)
       m++;
}
else
{  
  
                  cout<<"    "<<3<<"        "<                   cout<        m++;
}
}
}
}

void  main()
{
double zhengquelv,cuowulv;
cout<

//输出计算出来的各种分类的信息


        cout<<"分类结果"<<"    "<<"概率1"<<"          "<<"概率2"<<"          "<<"概率3"<<"           "<<"计算出来的概率的最大值"<    DataRead(xunlianshuju,"Ttrainingwine.data");
pusubeiyesi();
DataRead(ceshishuju,"testwine.data");
houyangailv();
        zhengquelv=(double)m/60;
cuowulv=1-zhengquelv;
cout<

//输出正确率和错误率


cout<<"测试样本计算的正确率(百分比):"<       
}


训练数据集:Ttrainingwine.data

1,13.71,1.86,2.36,16.6,101,2.61,2.88,.27,1.69,3.8,1.11,4,1035
1,12.85,1.6,2.52,17.8,95,2.48,2.37,.26,1.46,3.93,1.09,3.63,1015
1,13.5,1.81,2.61,20,96,2.53,2.61,.28,1.66,3.52,1.12,3.82,845
1,13.05,2.05,3.22,25,124,2.63,2.68,.47,1.92,3.58,1.13,3.2,830
1,13.39,1.77,2.62,16.1,93,2.85,2.94,.34,1.45,4.8,.92,3.22,1195
1,13.3,1.72,2.14,17,94,2.4,2.19,.27,1.35,3.95,1.02,2.77,1285
1,13.87,1.9,2.8,19.4,107,2.95,2.97,.37,1.76,4.5,1.25,3.4,915
1,14.02,1.68,2.21,16,96,2.65,2.33,.26,1.98,4.7,1.04,3.59,1035
1,13.73,1.5,2.7,22.5,101,3,3.25,.29,2.38,5.7,1.19,2.71,1285
1,13.58,1.66,2.36,19.1,106,2.86,3.19,.22,1.95,6.9,1.09,2.88,1515
1,13.68,1.83,2.36,17.2,104,2.42,2.69,.42,1.97,3.84,1.23,2.87,990
1,13.76,1.53,2.7,19.5,132,2.95,2.74,.5,1.35,5.4,1.25,3,1235
1,13.51,1.8,2.65,19,110,2.35,2.53,.29,1.54,4.2,1.1,2.87,1095
1,13.48,1.81,2.41,20.5,100,2.7,2.98,.26,1.86,5.1,1.04,3.47,920
1,13.28,1.64,2.84,15.5,110,2.6,2.68,.34,1.36,4.6,1.09,2.78,880
1,13.05,1.65,2.55,18,98,2.45,2.43,.29,1.44,4.25,1.12,2.51,1105
1,13.07,1.5,2.1,15.5,98,2.4,2.64,.28,1.37,3.7,1.18,2.69,1020
1,14.22,3.99,2.51,13.2,128,3,3.04,.2,2.08,5.1,.89,3.53,760
1,13.56,1.71,2.31,16.2,117,3.15,3.29,.34,2.34,6.13,.95,3.38,795
1,13.41,3.84,2.12,18.8,90,2.45,2.68,.27,1.48,4.28,.91,3,1035
1,13.88,1.89,2.59,15,101,3.25,3.56,.17,1.7,5.43,.88,3.56,1095
1,13.24,3.98,2.29,17.5,103,2.64,2.63,.32,1.66,4.36,.82,3,680
1,13.05,1.77,2.1,17,107,3,3,.28,2.03,5.04,.88,3.35,885
1,14.21,4.04,2.44,18.9,111,2.85,2.65,.3,1.25,5.24,.87,3.33,1080
1,14.38,3.59,2.28,16,102,3.25,3.17,.27,2.19,4.9,1.04,3.44,1065
1,13.9,1.68,2.12,16,101,3.1,3.39,.21,2.14,6.1,.91,3.33,985
1,14.1,2.02,2.4,18.8,103,2.75,2.92,.32,2.38,6.2,1.07,2.75,1060
1,13.94,1.73,2.27,17.4,108,2.88,3.54,.32,2.08,8.90,1.12,3.1,1260
1,13.05,1.73,2.04,12.4,92,2.72,3.27,.17,2.91,7.2,1.12,2.91,1150
1,13.83,1.65,2.6,17.2,94,2.45,2.99,.22,2.29,5.6,1.24,3.37,1265
1,13.82,1.75,2.42,14,111,3.88,3.74,.32,1.87,7.05,1.01,3.26,1190
1,13.77,1.9,2.68,17.1,115,3,2.79,.39,1.68,6.3,1.13,2.93,1375
1,13.74,1.67,2.25,16.4,118,2.6,2.9,.21,1.62,5.85,.92,3.2,1060
1,13.56,1.73,2.46,20.5,116,2.96,2.78,.2,2.45,6.25,.98,3.03,1120
1,14.22,1.7,2.3,16.3,118,3.2,3,.26,2.03,6.38,.94,3.31,970
1,13.29,1.97,2.68,16.8,102,3,3.23,.31,1.66,6,1.07,2.84,1270
1,13.72,1.43,2.5,16.7,108,3.4,3.67,.19,2.04,6.8,.89,2.87,1285
2,12.37,1.13,2.16,19,87,3.5,3.1,.19,1.87,4.45,1.22,2.87,420
2,12.17,1.45,2.53,19,104,1.89,1.75,.45,1.03,2.95,1.45,2.23,355
2,12.37,1.21,2.56,18.1,98,2.42,2.65,.37,2.08,4.6,1.19,2.3,678
2,13.11,1.01,1.7,15,78,2.98,3.18,.26,2.28,5.3,1.12,3.18,502
2,12.37,1.17,1.92,19.6,78,2.11,2,.27,1.04,4.68,1.12,3.48,510
2,13.34,.94,2.36,17,110,2.53,1.3,.55,.42,3.17,1.02,1.93,750
2,12.21,1.19,1.75,16.8,151,1.85,1.28,.14,2.5,2.85,1.28,3.07,718
2,12.29,1.61,2.21,20.4,103,1.1,1.02,.37,1.46,3.05,.906,1.82,870
2,11.96,1.09,2.3,21,101,3.38,2.14,.13,1.65,3.21,.99,3.13,886
2,11.84,2.89,2.23,18,112,1.72,1.32,.43,.95,2.65,.96,2.52,500
2,12.33,.99,1.95,14.8,136,1.9,1.85,.35,2.76,3.4,1.06,2.31,750
2,12.7,3.87,2.4,23,101,2.83,2.55,.43,1.95,2.57,1.19,3.13,463
2,12,.92,2,19,86,2.42,2.26,.3,1.43,2.5,1.38,3.12,278
2,12.72,1.81,2.2,18.8,86,2.2,2.53,.26,1.77,3.9,1.16,3.14,714
2,12.08,1.13,2.51,24,78,2,1.58,.4,1.4,2.2,1.31,2.72,630
2,13.05,3.86,2.32,22.5,85,1.65,1.59,.61,1.62,4.8,.84,2.01,515
2,11.84,.89,2.58,18,94,2.2,2.21,.22,2.35,3.05,.79,3.08,520
2,12.67,.98,2.24,18,99,2.2,1.94,.3,1.46,2.62,1.23,3.16,450
2,12.16,1.61,2.31,22.8,90,1.78,1.69,.43,1.56,2.45,1.33,2.26,495
2,11.65,1.67,2.62,26,88,1.92,1.61,.4,1.34,2.6,1.36,3.21,562
2,11.64,2.06,2.46,21.6,84,1.95,1.69,.48,1.35,2.8,1,2.75,680
2,12.08,1.33,2.3,23.6,70,2.2,1.59,.42,1.38,1.74,1.07,3.21,625
2,12.08,1.83,2.32,18.5,81,1.6,1.5,.52,1.64,2.4,1.08,2.27,480
2,12,1.51,2.42,22,86,1.45,1.25,.5,1.63,3.6,1.05,2.65,450
2,12.69,1.53,2.26,20.7,80,1.38,1.46,.58,1.62,3.05,.96,2.06,495
2,12.29,2.83,2.22,18,88,2.45,2.25,.25,1.99,2.15,1.15,3.3,290
2,11.62,1.99,2.28,18,98,3.02,2.26,.17,1.35,3.25,1.16,2.96,345
2,12.47,1.52,2.2,19,162,2.5,2.27,.32,3.28,2.6,1.16,2.63,937
2,11.81,2.12,2.74,21.5,134,1.6,.99,.14,1.56,2.5,.95,2.26,625
2,12.29,1.41,1.98,16,85,2.55,2.5,.29,1.77,2.9,1.23,2.74,428
2,12.37,1.07,2.1,18.5,88,3.52,3.75,.24,1.95,4.5,1.04,2.77,660
2,12.29,3.17,2.21,18,88,2.85,2.99,.45,2.81,2.3,1.42,2.83,406
2,12.52,2.43,2.17,21,88,2.55,2.27,.26,1.22,2,.9,2.78,325
2,11.76,2.68,2.92,20,103,1.75,2.03,.6,1.05,3.8,1.23,2.5,607
2,11.41,.74,2.5,21,88,2.48,2.01,.42,1.44,3.08,1.1,2.31,434
2,12.08,1.39,2.5,22.5,84,2.56,2.29,.43,1.04,2.9,.93,3.19,385
2,11.03,1.51,2.2,21.5,85,2.46,2.17,.52,2.01,1.9,1.71,2.87,407
2,11.82,1.47,1.99,20.8,86,1.98,1.6,.3,1.53,1.95,.95,3.33,495
2,12.42,1.61,2.19,22.5,108,2,2.09,.34,1.61,2.06,1.06,2.96,345
2,12.77,3.43,1.98,16,80,1.63,1.25,.43,.83,3.4,.7,2.12,372
2,12,3.43,2,19,87,2,1.64,.37,1.87,1.28,.93,3.05,564
2,11.45,2.4,2.42,20,96,2.9,2.79,.32,1.83,3.25,.8,3.39,625
2,12.04,4.3,2.38,22,80,2.1,1.75,.42,1.35,2.6,.79,2.57,580
3,12.81,2.31,2.4,24,98,1.15,1.09,.27,.83,5.7,.66,1.36,560
3,12.7,3.55,2.36,21.5,106,1.7,1.2,.17,.84,5,.78,1.29,600
3,12.51,1.24,2.25,17.5,85,2,.58,.6,1.25,5.45,.75,1.51,650
3,12.6,2.46,2.2,18.5,94,1.62,.66,.63,.94,7.1,.73,1.58,695
3,12.25,4.72,2.54,21,89,1.38,.47,.53,.8,3.85,.75,1.27,720
3,12.53,5.51,2.64,25,96,1.79,.6,.63,1.1,5,.82,1.69,515
3,13.49,3.59,2.19,19.5,88,1.62,.48,.58,.88,5.7,.81,1.82,580
3,12.84,2.96,2.61,24,101,2.32,.6,.53,.81,4.92,.89,2.15,590
3,12.93,2.81,2.7,21,96,1.54,.5,.53,.75,4.6,.77,2.31,600
3,13.36,2.56,2.35,20,89,1.4,.5,.37,.64,5.6,.7,2.47,780
3,13.52,3.17,2.72,23.5,97,1.55,.52,.5,.55,4.35,.89,2.06,520
3,13.62,4.95,2.35,20,92,2,.8,.47,1.02,4.4,.91,2.05,550
3,12.25,3.88,2.2,18.5,112,1.38,.78,.29,1.14,8.21,.65,2,855
3,13.16,3.57,2.15,21,102,1.5,.55,.43,1.3,4,.6,1.68,830
3,13.88,5.04,2.23,20,80,.98,.34,.4,.68,4.9,.58,1.33,415
3,12.87,4.61,2.48,21.5,86,1.7,.65,.47,.86,7.65,.54,1.86,625
3,13.32,3.24,2.38,21.5,92,1.93,.76,.45,1.25,8.42,.55,1.62,650
3,13.08,3.9,2.36,21.5,113,1.41,1.39,.34,1.14,9.40,.57,1.33,550
3,13.5,3.12,2.62,24,123,1.4,1.57,.22,1.25,8.60,.59,1.3,500
3,12.79,2.67,2.48,22,112,1.48,1.36,.24,1.26,10.8,.48,1.47,480
3,13.11,1.9,2.75,25.5,116,2.2,1.28,.26,1.56,7.1,.61,1.33,425
3,13.23,3.3,2.28,18.5,98,1.8,.83,.61,1.87,10.52,.56,1.51,675
3,12.58,1.29,2.1,20,103,1.48,.58,.53,1.4,7.6,.58,1.55,640
3,13.17,5.19,2.32,22,93,1.74,.63,.61,1.55,7.9,.6,1.48,725
3,13.84,4.12,2.38,19.5,89,1.8,.83,.48,1.56,9.01,.57,1.64,480
3,12.45,3.03,2.64,27,97,1.9,.58,.63,1.14,7.5,.67,1.73,880
3,14.34,1.68,2.7,25,98,2.8,1.31,.53,2.7,13,.57,1.96,660
3,14.16,2.51,2.48,20,91,1.68,.7,.44,1.24,9.7,.62,1.71,660
3,13.71,5.65,2.45,20.5,95,1.68,.61,.52,1.06,7.7,.64,1.74,740
3,13.4,3.91,2.48,23,102,1.8,.75,.43,1.41,7.3,.7,1.56,750
3,13.27,4.28,2.26,20,120,1.59,.69,.43,1.35,10.2,.59,1.56,835
3,13.17,2.59,2.37,20,120,1.65,.68,.53,1.46,9.3,.6,1.62,840
3,14.13,4.1,2.74,24.5,96,2.05,.76,.56,1.35,9.2,.61,1.6,560
3,13.45,3.7,2.6,23,111,1.7,.92,.43,1.46,10.68,.85,1.56,695
3,12.82,3.37,2.3,19.5,88,1.48,.66,.4,.97,10.26,.72,1.75,685
3,13.58,2.58,2.69,24.5,105,1.55,.84,.39,1.54,8.66,.74,1.8,750
3,13.4,4.6,2.86,25,112,1.98,.96,.27,1.11,8.5,.67,1.92,630
3,12.2,3.03,2.32,19,96,1.25,.49,.4,.73,5.5,.66,1.83,510


测试数据集:testwine.data

1,13.16,2.36,2.67,18.6,101,2.8,3.24,.3,2.81,5.68,1.03,3.17,1185
1,12.93,3.8,2.65,18.6,102,2.41,2.41,.25,1.98,4.5,1.03,3.52,770
1,14.23,1.71,2.43,15.6,127,2.8,3.06,.28,2.29,5.64,1.04,3.92,1065
1,13.2,1.78,2.14,11.2,100,2.65,2.76,.26,1.28,4.38,1.05,3.4,1050
1,13.16,2.36,2.67,18.6,101,2.8,3.24,.3,2.81,5.68,1.03,3.17,1185
1,12.93,3.8,2.65,18.6,102,2.41,2.41,.25,1.98,4.5,1.03,3.52,770
1,13.71,1.86,2.36,16.6,101,2.61,2.88,.27,1.69,3.8,1.11,4,1035
1,12.85,1.6,2.52,17.8,95,2.48,2.37,.26,1.46,3.93,1.09,3.63,1015
1,13.5,1.81,2.61,20,96,2.53,2.61,.28,1.66,3.52,1.12,3.82,845
1,13.05,2.05,3.22,25,124,2.63,2.68,.47,1.92,3.58,1.13,3.2,830
1,13.39,1.77,2.62,16.1,93,2.85,2.94,.34,1.45,4.8,.92,3.22,1195
1,13.3,1.72,2.14,17,94,2.4,2.19,.27,1.35,3.95,1.02,2.77,1285
1,13.87,1.9,2.8,19.4,107,2.95,2.97,.37,1.76,4.5,1.25,3.4,915
1,14.02,1.68,2.21,16,96,2.65,2.33,.26,1.98,4.7,1.04,3.59,1035
1,13.73,1.5,2.7,22.5,101,3,3.25,.29,2.38,5.7,1.19,2.71,1285
1,13.58,1.66,2.36,19.1,106,2.86,3.19,.22,1.95,6.9,1.09,2.88,1515
1,13.68,1.83,2.36,17.2,104,2.42,2.69,.42,1.97,3.84,1.23,2.87,990
1,13.76,1.53,2.7,19.5,132,2.95,2.74,.5,1.35,5.4,1.25,3,1235
1,13.51,1.8,2.65,19,110,2.35,2.53,.29,1.54,4.2,1.1,2.87,1095
1,13.48,1.81,2.41,20.5,100,2.7,2.98,.26,1.86,5.1,1.04,3.47,920
2,12.64,1.36,2.02,16.8,100,2.02,1.41,.53,.62,5.75,.98,1.59,450
2,13.67,1.25,1.92,18,94,2.1,1.79,.32,.73,3.8,1.23,2.46,630
2,12.37,.94,1.36,10.6,88,1.98,.57,.28,.42,1.95,1.05,1.82,520
2,12.33,1.1,2.28,16,101,2.05,1.09,.63,.41,3.27,1.25,1.67,680
2,12.64,1.36,2.02,16.8,100,2.02,1.41,.53,.62,5.75,.98,1.59,450
2,13.67,1.25,1.92,18,94,2.1,1.79,.32,.73,3.8,1.23,2.46,630
2,12.37,1.13,2.16,19,87,3.5,3.1,.19,1.87,4.45,1.22,2.87,420
2,12.17,1.45,2.53,19,104,1.89,1.75,.45,1.03,2.95,1.45,2.23,355
2,12.37,1.21,2.56,18.1,98,2.42,2.65,.37,2.08,4.6,1.19,2.3,678
2,13.11,1.01,1.7,15,78,2.98,3.18,.26,2.28,5.3,1.12,3.18,502
2,12.37,1.17,1.92,19.6,78,2.11,2,.27,1.04,4.68,1.12,3.48,510
2,13.34,.94,2.36,17,110,2.53,1.3,.55,.42,3.17,1.02,1.93,750
2,12.21,1.19,1.75,16.8,151,1.85,1.28,.14,2.5,2.85,1.28,3.07,718
2,12.29,1.61,2.21,20.4,103,1.1,1.02,.37,1.46,3.05,.906,1.82,870
2,11.96,1.09,2.3,21,101,3.38,2.14,.13,1.65,3.21,.99,3.13,886
2,11.84,2.89,2.23,18,112,1.72,1.32,.43,.95,2.65,.96,2.52,500
2,12.33,.99,1.95,14.8,136,1.9,1.85,.35,2.76,3.4,1.06,2.31,750
2,12.7,3.87,2.4,23,101,2.83,2.55,.43,1.95,2.57,1.19,3.13,463
2,12,.92,2,19,86,2.42,2.26,.3,1.43,2.5,1.38,3.12,278
2,12.72,1.81,2.2,18.8,86,2.2,2.53,.26,1.77,3.9,1.16,3.14,714
3,12.86,1.35,2.32,18,122,1.51,1.25,.21,.94,4.1,.76,1.29,630
3,12.88,2.99,2.4,20,104,1.3,1.22,.24,.83,5.4,.74,1.42,530
3,12.86,1.35,2.32,18,122,1.51,1.25,.21,.94,4.1,.76,1.29,630
3,12.88,2.99,2.4,20,104,1.3,1.22,.24,.83,5.4,.74,1.42,530
3,12.81,2.31,2.4,24,98,1.15,1.09,.27,.83,5.7,.66,1.36,560
3,12.7,3.55,2.36,21.5,106,1.7,1.2,.17,.84,5,.78,1.29,600
3,12.51,1.24,2.25,17.5,85,2,.58,.6,1.25,5.45,.75,1.51,650
3,12.6,2.46,2.2,18.5,94,1.62,.66,.63,.94,7.1,.73,1.58,695
3,12.25,4.72,2.54,21,89,1.38,.47,.53,.8,3.85,.75,1.27,720
3,12.53,5.51,2.64,25,96,1.79,.6,.63,1.1,5,.82,1.69,515
3,13.49,3.59,2.19,19.5,88,1.62,.48,.58,.88,5.7,.81,1.82,580
3,12.84,2.96,2.61,24,101,2.32,.6,.53,.81,4.92,.89,2.15,590
3,12.93,2.81,2.7,21,96,1.54,.5,.53,.75,4.6,.77,2.31,600
3,13.36,2.56,2.35,20,89,1.4,.5,.37,.64,5.6,.7,2.47,780
3,13.52,3.17,2.72,23.5,97,1.55,.52,.5,.55,4.35,.89,2.06,520
3,13.62,4.95,2.35,20,92,2,.8,.47,1.02,4.4,.91,2.05,550
3,12.25,3.88,2.2,18.5,112,1.38,.78,.29,1.14,8.21,.65,2,855
3,13.16,3.57,2.15,21,102,1.5,.55,.43,1.3,4,.6,1.68,830
3,13.88,5.04,2.23,20,80,.98,.34,.4,.68,4.9,.58,1.33,415
3,12.87,4.61,2.48,21.5,86,1.7,.65,.47,.86,7.65,.54,1.86,625


实验贴图:




用朴素贝叶斯对wine数据集分类_第3张图片










你可能感兴趣的:(机器学习,分类,朴素贝叶斯,先验概率,后验概率,C++)