基於SVM的資料分類預測——意大利葡萄酒種類識別,svm意大利

來源:互聯網
上載者:User

基於SVM的資料分類預測——意大利葡萄酒種類識別,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;% 畫出測試資料的分維可視化圖figuresubplot(3,5,1);hold onfor run = 1:178    plot(run,wine_labels(run),'*');endxlabel('樣本','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對意大利葡萄酒種類識別

摘要:為解決現實生產中某些產品無法用客觀分析方法進行準確品質鑒別的問題,彌補人工感觀評鑑方法的不足,提出了基於SVM的產品品質鑒別方法,通過產品的化學成份完成品質分類評鑑。實驗採用葡萄酒的資料做模擬計算,結果表明,該方法可以對葡萄酒的品質進行有效評鑑,準確度較高。
 
matlab SVM分類預測 參數的維度不一致

維數不一致
 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.