如何使用libsvm進行分類

2021-06-01 18:25:33 字數 3147 閱讀 2701

1樓:匿名使用者

其實使用libsvm進行分類很簡單,只需要有屬性矩陣和標籤,然後就可以建立分類模型(model),然後利用得到的這個model進行分類**了。

一、屬性矩陣和標籤:

一個班級裡面有兩個男生(男生1、男生2),兩個女生(女生1、女生2),其中

男生1 身高:176cm 體重:70kg;

男生2 身高:180cm 體重:80kg;

女生1 身高:161cm 體重:45kg;

女生2 身高:163cm 體重:47kg;

如果將男生定義為1,女生定義為-1,並將上面的資料放入矩陣data中,即

data = [176 70;

180 80;

161 45;

163 47];

複製**

在label中存入男女生類別標籤(1、-1),即

label = [1;1;-1;-1];

複製**

這樣上面的data矩陣就是一個屬性矩陣,行數4代表有4個樣本,列數2表示屬性有兩個,label就是標籤(1、-1表示有兩個類別:男生、女生)。

二、有了上面的屬性矩陣data,和標籤label就可以利用libsvm建立分類模型了,簡要**如下:

model = svmtrain(label,data);

複製**

有了model就可以做分類**,比如此時該班級又轉來一個新學生,其

身高190cm,體重85kg

想通過上面這些資訊就給出其標籤(想知道其是男還是女【-1】)

比如 令 testdata = [190 85]; 由於其標籤不知道,假設其標籤為-1(也可以假設為1)

即testdatalabel = -1;

然後利用libsvm來**這個新來的學生是男生還是女生,**如下:

[predictlabel,accuracy] = svmpredict(testdatalabel,testdata,model)

複製**

下面整體執行一下上面這段的背景資料和**:

data = [176 70;

180 80;

161 45;

163 47];

label = [1;1;-1;-1];

model = svmtrain(label,data);

testdata = [190 85];

testdatalabel = -1;

[predictlabel,accuracy] = svmpredict(testdatalabel,testdata,model);

predictlabel

複製**

執行結果如下:

accuracy = 0% (0/1) (classification)

predictlabel =

2樓:山水阿銳

%%% 首先載入資料

load heart_scale;

data = heart_scale_inst;

label = heart_scale_label;

% 選取前200個資料作為訓練集合,後70個資料作為測試集合

ind = 200;

traindata = data(1:ind,:);

trainlabel = label(1:ind,:);

testdata = data(ind+1:end,:);

testlabel = label(ind+1:end,:);

% 利用訓練集合建立分類模型

model = svmtrain(trainlabel,traindata,'-s 0 -t 2 -c 1.2 -g 2.8');

% 分類模型model解密

model

parameters = model.parameters

label = model.label

nr_class = model.nr_class

totalsv = model.totalsv

nsv = model.nsv

% 利用建立的模型看其在訓練集合上的分類效果

[ptrain,acctrain] = svmpredict(trainlabel,traindata,model);

% **測試集合標籤

[ptest,acctest] = svmpredict(testlabel,testdata,model);

%%toc;

執行結果:

model =

parameters: [5x1 double]

nr_class: 2

totalsv: 197

rho: 0.0583

label: [2x1 double]

proba:

probb:

nsv: [2x1 double]

sv_coef: [197x1 double]

svs: [197x13 double]

parameters =

02.0000

3.0000

2.8000

0label =1-1

nr_class =

2totalsv =

197nsv =

89108

accuracy = 99.5% (199/200) (classification)

accuracy = 68.5714% (48/70) (classification)

elapsed time is 0.040873 seconds.

>>

如何使用libsvm進行分類,如何用libsvm分類(MATLAB環境下)?

這帖子就是初步教教剛接觸libsvm svm 的同學如何利用libsvm進行分類 關於引數尋優的問題在這裡姑且不談,另有帖子詳述。其實使用libsvm進行分類很簡單,只需要有屬性矩陣和標籤,然後就可以建立分類模型 model 然後利用得到的這個model進行分類 了。那神馬是屬性矩陣?神馬又是標籤呢...

固定資產如何分類,如何對固定資產進行分類 有哪些分類方法

固定資產可以按其經濟用途 使用情況 產權歸屬 實物形態和使用期限進行分類核算。1.按經濟用途分為生產經營用和非生產經營用兩類 生產經營用固定資產是指直接服務於生產經營全過程的固定資產,如廠房 機器裝置 倉庫 銷售場所 運輸車輛等。非生產經營用固定資產是指不直接服務於生產經營,而是為了滿足職工物質文化...

如何分類供應商管理,如何對供應商進行分類和管理

商的分類應該根據為你提供產品的不同類別 關重要程度 是否形成戰略合作關係等方面進行分類,這樣在日後的管理中可以針對採用不同類別進行不同的管理,包括選擇 評價 培育等 如何對 商進行分類和管理 在新的採購環境下,商關係發生了根本性變化,商從單純的貨物 服務的提供者轉變為買方的戰略性商業合作伙伴。毫無疑...