MATLAB自帶的svm工具箱怎麼儲存訓練好的模型
阿新 • • 發佈:2018-11-11
搜尋了好多文章,matlab自帶的svm工具儲存訓練好的模型,讀取離線模型的資料少之又少,libsvm倒是有一點,但是之前的程式碼會用自帶工具箱做的,又懶得換。那就自己搞吧!
首先上訓練函式的程式碼:
flow_svmstruct = svmtrain(flow_traindata,flow_group,'Kernel_Function','RBF') % training
訓練好的模型儲存在flow_svmstruct結構體中,結構體裡面的內容如下:
flow_svmstruct = SupportVectors: [8x1 double] Alpha: [8x1 double] Bias: 0.3798 KernelFunction: @rbf_kernel KernelFunctionArgs: {} GroupNames: [64x1 double] SupportVectorIndices: [8x1 double] ScaleData: [1x1 struct] FigureHandles: []
所以,我們要做的工作是:先將這個結構體儲存下來,然後分類的時候再讀取出來。
1.如何儲存?
如何儲存結構體呢?經過一番調研,可以用save命令把結構體儲存成矩陣(.mat)的形式,具體程式碼如下:
save('C:\Users\Administrator\Desktop\matlabdemo\model\flow_model','flow_svmstruct');
執行完這一行程式碼,model資料夾下多了一個檔案:
說明儲存成功了。
2.如何讀取?
首先想到的是load命令將.mat的資料讀取出來
flow_model_mat = load('C:\Users\Administrator\Desktop\matlabdemo\model\flow_model');
但是,我們最終想要的結果是將flow_svmstruct這個結構體提取出來,經過除錯發現,flow_model_mat這個矩陣大小是1行1列,內容是flow_svmstruct,所以經過以下操作就可以完美地提取出來儲存的資料了
flow_svmstruct = flow_model_mat.flow_svmstruct;
小結:
%訓練並儲存資料 flow_svmstruct = svmtrain(flow_traindata,flow_group,'Kernel_Function','RBF'); % training save('C:\Users\Administrator\Desktop\matlabdemo\model\flow_model','flow_svmstruct'); %讀取儲存的模型資料並分類 flow_model_mat = load('C:\Users\Administrator\Desktop\matlabdemo\model\flow_model'); flow_svmstruct = flow_model_mat.flow_svmstruct; G1= svmclassify(flow_svmstruct,flow_testdata);