2013-06-30 31 views
2

我是Matlab的新手。是否有示例代碼用SVM分類某些數據(具有41個功能),然後將結果可視化?我想使用SVM方法對數據集(它有五個類)進行分類。 我閱讀了「A Practical Guide to Support Vector Classication」文章,並看到了一些示例。我的數據集是kdd99。我寫了下面的代碼:如何在Matlab中使用SVM?

%% Load Data 
[data,colNames] = xlsread('TarainingDataset.xls'); 
groups = ismember(colNames(:,42),'normal.'); 
TrainInputs = data; 
TrainTargets = groups; 
%% Design SVM 
C = 100; 
svmstruct = svmtrain(TrainInputs,TrainTargets,... 
    'boxconstraint',C,... 
    'kernel_function','rbf',... 
    'rbf_sigma',0.5,... 
    'showplot','false'); 
%% Test SVM 
[dataTset,colNamesTest] = xlsread('TestDataset.xls'); 
TestInputs = dataTset; 
groups = ismember(colNamesTest(:,42),'normal.'); 
TestOutputs = svmclassify(svmstruct,TestInputs,'showplot','false'); 

,但我不知道怎麼去準確性或我的分類MSE,我在我的svmclassify使用showplottrue的時候,我得到這樣的警告:

The display option can only plot 2D training data 

任何人都可以幫我嗎?

+5

你需要更多地瞭解機器學習的一般情況,它不是一個好的或簡單的盲目使用工具。 –

+0

我同意@ Raff.Edward,但你應該看到的是交叉驗證來衡量你的錯誤/準確性。 –

回答

0

您的特徵空間有41個維度,繪製更多3維度是不可能的。 爲了更好地理解您的數據,SVM的工作方式是從線性SVM開始。支持向量機的這種類型是可解釋的,這意味着您的41個特徵中的每一個在訓練後都具有相關的權重(或「重要性」)。然後,您可以使用plot3()和線性svm中的3個「最佳」特徵的數據。請注意您的數據如何與這些功能分離並相應地選擇基礎函數和其他參數。

+0

感謝您的幫助!我修改了上面的代碼,我沒有error.But我的qusetion是如何獲得準確性或mse我的分類???我更改的代碼是:[data,colNames] = xlsread( 'TarainingDataset.xls');基團= ismember(colNames(:,42), '正常'); (屬性,類, 'boxconstraint',C, 'kernel_function','rbf', 'rbf_sigma',0.5)屬性= data(:,1:41); Classes = groups; C = 100; svmstruct = svmtrain ; [dataTset,colNamesTest] = xlsread('TestDataset.xls'); newclass = svmclassify(svmstruct,dataTset); – leyla

2

我建議您使用另一個SVM工具箱libsvm。這個鏈接是如下: http://www.csie.ntu.edu.tw/~cjlin/libsvm/

將它添加到MATLAB的路徑後,你可以訓練並使用你的模型是這樣的:

model=svmtrain(train_label,train_feature,'-c 1 -g 0.07 -h 0'); 
% the parameters can be modified 
[label, accuracy, probablity]=svmpredict(test_label,test_feaure,model); 

train_label必須是一個載體,如果有兩個以上的各種輸入(0/1),它將自動成爲nSVM。

train_feature是n * L矩陣的n個樣本。您最好在使用該功能前對其進行預處理。在測試部分,它們應該以相同的方式進行預處理。

測試結束時會顯示您想要的準確性,但僅適用於整個數據集。

如果您需要單獨分析正面和負面樣品的準確性,您仍然應該使用預測的標籤自行計算。

希望這會幫助你!