MATLAB自带的svm工具箱怎么保存训练好的模型

搜索了好多文章,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);

 

 

你可能感兴趣的:(MATLAB自带的svm工具箱怎么保存训练好的模型)