zoukankan      html  css  js  c++  java
  • svm的使用

    最近在看svm,顺便做一下笔记。

    libsvm历史版本:

    https://www.csie.ntu.edu.tw/~cjlin/libsvm/oldfiles/

    关于libsvm的简介自行百度。

    我关注的是使用svm分类,opencv里面保存的模型为什么会保存多组决策函数,而直接使用libsvm找不到保存的决策函数以及每个决策函数对应的支持向量。

     libsvm中采用的是1 v 1分类。
        对于n类样本,选取其中任意2类进行训练,得到训练模型,一共 有n(n-1)/2个二分类模型,对于待预测样本,使用这n(n-1)/2个模型进行分类预测,最后对得到的结果进行统计,得到属于每一类的次数,按类别标签从小到大排列,第一个最大值所对应的类就是该次多分类预测的结果。

    svm训练:

    model = svm_train(&prob, &param);

    svm保存模型:

    svm_save_model(strResulttmp.c_str(), model)

    svm释放模型与指针:

    svm_free_and_destroy_model(&model);
    svm_destroy_param(&param);
    free(prob.y);
    free(prob.x);
    free(x_space);

    svm加载模型:

    m_SVMPredict = svm_load_model(strLoadtmp.c_str());

    svm预测分类:

    int ret = svm_predict(m_SVMPredict, svm_data);

    使用libsvm返回置信度信息:

    double *pro_estimate = new double[cls_num];
    memset(pro_estimate, 0, cls_num);
    int ret = svm_predict_probability(m_SVMPredict, svm_data, pro_estimate);

    对于需要返回置信度信息的预测,在训练时略有不同。

    svm训练默认参数(来自svm-train.c):

        // default values
        param.svm_type = C_SVC;
        param.kernel_type = RBF;
        param.degree = 3;
        param.gamma = 0;    // 1/num_features
        param.coef0 = 0;
        param.nu = 0.5;
        param.cache_size = 100;
        param.C = 1;
        param.eps = 1e-3;
        param.p = 0.1;
        param.shrinking = 1;
        param.probability = 0;
        param.nr_weight = 0;
        param.weight_label = NULL;
        param.weight = NULL;
        cross_validation = 0;

    需要返回置信度的训练时参数要改一个:

    param.probability = 1;

    一般优化参数会使用grid.py优化参数 -c 和 -g ,即

    param.C

    param.gamma

    关于提取特征后训练可以参考我的这篇博客:LIBSVM使用

  • 相关阅读:
    VMware安装ubuntu学习笔记(只是笔记)
    Apcahe Shiro学习笔记(二):通过JDBC进行权限控制
    Apcahe Shiro学习笔记(一):简介及运行官方Demo
    MyBatis学习(二):与Spring整合(非注解方式配置MyBatis)
    SpringMVC学习(一):搭建SpringMVC-注解-非注解
    java操作redis学习(一):安装及连接
    MyBatis学习(一):简单的运行
    Linux随笔记
    [搬运]一些构造题题解
    「不会」Min25筛
  • 原文地址:https://www.cnblogs.com/juluwangshier/p/13098824.html
Copyright © 2011-2022 走看看