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);

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值