溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何使用svmtrain進(jìn)行數(shù)據(jù)分類預(yù)測(cè)

發(fā)布時(shí)間:2022-01-14 10:23:35 來(lái)源:億速云 閱讀:169 作者:iii 欄目:大數(shù)據(jù)

本文小編為大家詳細(xì)介紹“如何使用svmtrain進(jìn)行數(shù)據(jù)分類預(yù)測(cè)”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“如何使用svmtrain進(jìn)行數(shù)據(jù)分類預(yù)測(cè)”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來(lái)學(xué)習(xí)新知識(shí)吧。

在安裝了libsvm工具箱之后,使用svmtrain進(jìn)行數(shù)據(jù)分類預(yù)測(cè)

%% 清空環(huán)境變量

close all;

clear;

clc;

format compact;

%% 數(shù)據(jù)提取

% 載入測(cè)試數(shù)據(jù)wine

% 包含的數(shù)據(jù)為classnumber = 3

% wine:178*13的矩陣

% wine_labes:178*1的列向量

load wine.mat;


%% 畫出測(cè)試數(shù)據(jù)的box可視化圖

figure;

如何使用svmtrain進(jìn)行數(shù)據(jù)分類預(yù)測(cè)  

boxplot(wine,'orientation','horizontal','labels',categories);

title('wine數(shù)據(jù)的box可視化圖','FontSize',12);

xlabel('屬性值','FontSize',12);

grid on;


%% 畫出測(cè)試數(shù)據(jù)的分維可視化圖

figure

如何使用svmtrain進(jìn)行數(shù)據(jù)分類預(yù)測(cè)  

subplot(3,5,1);

hold on

for run = 1:178

    plot(run,wine_labels(run),'*');

end

xlabel('樣本','FontSize',10);

ylabel('類別標(biāo)簽','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


%% 選定訓(xùn)練集和測(cè)試集

% 將第一類的1-30,第二類的60-95,第三類的131-153做為訓(xùn)練集

train_wine = [wine(1:30,:);wine(60:95,:);wine(131:153,:)];

% 相應(yīng)的訓(xùn)練集的標(biāo)簽也要分離出來(lái)

train_wine_labels = [wine_labels(1:30);wine_labels(60:95);wine_labels(131:153)];

% 將第一類的31-59,第二類的96-130,第三類的154-178做為測(cè)試集

test_wine = [wine(31:59,:);wine(96:130,:);wine(154:178,:)];

% 相應(yīng)的測(cè)試集的標(biāo)簽也要分離出來(lái)

test_wine_labels = [wine_labels(31:59);wine_labels(96:130);wine_labels(154:178)];


%% 數(shù)據(jù)預(yù)處理

% 數(shù)據(jù)預(yù)處理,將訓(xùn)練集和測(cè)試集歸一化到[0,1]區(qū)間

[mtrain,ntrain] = size(train_wine);

[mtest,ntest] = size(test_wine);


dataset = [train_wine;test_wine];

% mapminmax為MATLAB自帶的歸一化函數(shù)

[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網(wǎng)絡(luò)訓(xùn)練

model = svmtrain(train_wine_labels, train_wine, '-c 2 -g 1');


%% SVM網(wǎng)絡(luò)預(yù)測(cè)

[predict_label, accuracy] = svmpredict(test_wine_labels, test_wine, model);


%% 結(jié)果分析

% 測(cè)試集的實(shí)際分類和預(yù)測(cè)分類圖

% 通過(guò)圖可以看出只有一個(gè)測(cè)試樣本是被錯(cuò)分的

figure;

如何使用svmtrain進(jìn)行數(shù)據(jù)分類預(yù)測(cè)  

hold on;

plot(test_wine_labels,'o');

plot(predict_label,'r*');

xlabel('測(cè)試集樣本','FontSize',12);

ylabel('類別標(biāo)簽','FontSize',12);

legend('實(shí)際測(cè)試集分類','預(yù)測(cè)測(cè)試集分類');

title('測(cè)試集的實(shí)際分類和預(yù)測(cè)分類圖','FontSize',12);

grid on;

讀到這里,這篇“如何使用svmtrain進(jìn)行數(shù)據(jù)分類預(yù)測(cè)”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過(guò)才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI