數據挖掘 作業2 SVM

實驗二   使用SVM進行數據分類

 

【數據集名稱】Shuttle(來自UCI機器學習數據集)

【數據集描述】該數據集用於航天飛機的分類,包含兩個子集(shuttle_training_setshuttle_testing_set),分別作爲訓練集和測試集。其中:訓練集有43500條數據,每條數據包含10個內容:前9項是特徵,第10項是類別標號(值爲1的類和值不爲1的類)。測試集有14500條數據,每條數據的含義與訓練集一致。該數據集中80%樣本的類別標號是1。

【實驗任務】在Matlab環境下,利用libsvm工具包設計一個兩類SVM分類器,在給定的訓練集(shuttle_training_set)上進行訓練,其中類別標號爲1的作爲正例,其他類別標號的數據作爲反例,然後在測試集(shuttle_testing_set)上統計你所設計的SVM分類器的性能。希望你的SVM分類器在測試集上的分類正確率能達到90%以上。

【注意事項】

(1)樣本數據需要規範化處理,如:類別標號應爲±1;

(2)核函數中參數最優值的選擇,可通過"SVMcgForClass.m"函數獲得。


clc
clear all
load('shuttle_training_set.mat', 'shuttle')
train_num=size(shuttle)
for i=1:train_num(1)
    if(i<5)
        shuttle(i,10)
    end
    if(shuttle(i,train_num(2))~=1)
        shuttle(i,train_num(2))=-1; 
    end
end
save my_training_set.mat shuttle

load('shuttle_testing_set.mat', 'shuttle_test')
test_num=size(shuttle_test);
for i=1:test_num(1)
    if(shuttle_test(i,train_num(2))~=1)
        shuttle_test(i,train_num(2))=-1;
    end
end
save my_testing_set.mat shuttle_test

clc
clear all
load('my_training_set.mat','shuttle')  %載入訓練數據
fprintf('開始訓練');%訓練的也太久了吧!!!!
 model=svmtrain(shuttle(:,10),shuttle(:,1:9));  %訓練模型
 save my_model.mat model

clc
clear all;
load('my_testing_set.mat');%載入測試的數據
load('my_model.mat')%載入訓練的模型
[predict_label,accuracy]=svmpredict(shuttle_test(:,10),shuttle_test(:,1:9),model)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章