1. 程式人生 > >用樸素貝葉斯對wine資料集分類

用樸素貝葉斯對wine資料集分類

該實驗的資料集是MostPopular Data Sets(hits since 2007)中的wine資料集,這是是對在義大利同一地區生產的三種不同品種的酒,做大量分析所得出的資料。這些資料包括了三種酒中13種不同成分的數量。

經過幾天對資料集以及分類演算法的研究,詳細研究了樸素貝葉斯分類器和其他學習演算法,包括決策樹和神經網路等等。同時由於這個資料集有13個屬性,用決策樹實現起來會很複雜。我最終選擇了用貝葉斯分類演算法來實現。程式設計的時候採用c++語言實現分類的功能。我將178個樣本分成118個訓練樣本和60個測試樣本,採用樸素貝葉斯分類演算法,計算出先驗概率和後驗概率,通過比較概率的最大值,判別出測試樣本所屬於的酒的型別,同時輸出測試樣本計算的正確率和錯誤率。

1.實驗資料集介紹

1.1Wine資料集

該實驗的資料來源是Wine data,這是對在義大利同一地區生產的三種不同品種的酒,做大量分析所得出的資料。如下圖1-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表示(暫時不考慮驗證):


            

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 <string>
#include <set>                       //set是C++標準庫中的一種關聯容器。所謂關聯容器就是通過鍵(key)來讀取和修改元素。
                                   //set容器的每一個鍵只能對應一個元素,即不存在鍵相同的不同元素。


#include <map>                      //map 一種容器 也叫關聯陣列 
                                              //你先把它理解成陣列  一個個的元素知道吧
                                            //然後你再這樣理解,每個元素都有兩個值,一個叫“鍵”,一個叫“值”
                                          //你可以通過“鍵”找到相關的“值”
                                         //通常map容器 只能存入單一例項,就是說不能有相同的“鍵/值”
                                        //map 就是 在key和value之間建立對映,是的可以通過key訪問/獲取value。


#include <vector>                 //標準庫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 <iostream>                              //包含輸入輸出流
#include <sstream>                               //sstream是字串流,C++引入了ostringstream、istringstream、stringstream這三個類
                                                 //要使用他們建立物件就必須包含sstream.h標頭檔案 
#include <fstream>                               //包含檔案流,這樣就可以使用與檔案相關的一些函式,像open(),close()等                                                                                 
#include "MachineLearning.h"                     //自己所建的一個頭檔案,名字為MachineLearning
using namespace std;                             //名稱空間,c++中的所有識別符號都被定義於std名稱空間中
double R[3];                                     //在這裡定義一個數組,用來存放先驗概率
int m;             
vector<yuanshishuju> ceshishuju;                 //存放測試資料
vector<yuanshishuju> xunlianshuju;               //存放訓練資料,vector是一個能夠存放任意型別的動態陣列,能夠增加和壓縮資料。
const int shuxingzongshu=13;                     //這裡定義屬性總數為一個常量,而且以後不能對其修改
map<double, double> Q1_map[13];                  //存放每一型別,每種屬性中某數值的概率
map<double, double> Q2_map[13];                  //自動建立Key - value的對應。key 和 value可以是任意你需要的型別
map<double, double> Q3_map[13];
ifstream   file1;                            //ifstream表示是以輸入的方式開啟檔案


void DataRead(vector<yuanshishuju> &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<double, double>::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<double, double>(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<double, double>(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<double, double>(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<ceshishuliang; a++)
{
double pXQ[3]={0,0,0};
for(b = 0; b < 3; b++)
{
map<double, double>::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<<"        "<<gailv[0]<<"   "<<gailv[1]<<"         "<<gailv[3]<<"                  "<<gailv[0]<<endl;
cout<<endl;
if(ceshishuju[a].M1==1)
   m++;
}
else
{
if(gailv[1] > gailv[2])
{
 
 cout<<"    "<<2<<"        "<<gailv[0]<<"          "<<gailv[1]<<"         "<<gailv[3]<<"                  "<<gailv[1]<<endl; 
 cout<<endl;
if(ceshishuju[a].M1==2)
       m++;
}
else
{  
  
                  cout<<"    "<<3<<"        "<<gailv[0]<<"          "<<gailv[1]<<"        "<<gailv[3]<<"                  "<<gailv[2]<<endl;
                  cout<<endl;
       m++;
}
}
}
}

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


//輸出計算出來的各種分類的資訊


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


//輸出正確率和錯誤率


cout<<"測試樣本計算的正確率(百分比):"<<zhengquelv*100<<"%"<<" ,"<<"測試樣本計算的錯誤率(百分比):"<<cuowulv*100<<"%"<<endl;
      
}


訓練資料集: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


實驗貼圖: