zoukankan      html  css  js  c++  java
  • SVM的使用trainAuto(),K折交叉验证优化参数

    trainAuto()函数中,使用了K折交叉验证来优化参数,会自动寻找最优参数。

    两种用法:标黄的等效

    virtual bool trainAuto( const Ptr<TrainData>& data,
    int kFold = 10,
    ParamGrid Cgrid = getDefaultGrid(C),
    ParamGrid gammaGrid = getDefaultGrid(GAMMA),
    ParamGrid pGrid = getDefaultGrid(P),
    ParamGrid nuGrid = getDefaultGrid(NU),
    ParamGrid coeffGrid = getDefaultGrid(COEF),
    ParamGrid degreeGrid = getDefaultGrid(DEGREE),
    bool balanced=false) = 0;

    bool trainAuto(InputArray samples,int layout,InputArray responses,
    int kFold = 10,
    Ptr<ParamGrid> Cgrid = SVM::getDefaultGridPtr(SVM::C),
    Ptr<ParamGrid> gammaGrid = SVM::getDefaultGridPtr(SVM::GAMMA),
    Ptr<ParamGrid> pGrid = SVM::getDefaultGridPtr(SVM::P),
    Ptr<ParamGrid> nuGrid = SVM::getDefaultGridPtr(SVM::NU),
    Ptr<ParamGrid> coeffGrid = SVM::getDefaultGridPtr(SVM::COEF),
    Ptr<ParamGrid> degreeGrid = SVM::getDefaultGridPtr(SVM::DEGREE),
    bool balanced=false);

    第一种使用方式:

    Ptr<TrainData> train_data= TrainData::create(InputArray samples, int layout, InputArray responses); //创建训练集
    svm->trainAuto(train_data); //参数默认

    第二种使用方式:

    svm->trainAuto(InputArray samples, int layout, InputArray responses);//直接用
    例如
    svm->trainAuto(train_data,ROW_SAMPLE,labels);

    注意:无论哪种方式,samples必须行为样本,列为特征。responses标签1行或1列都可以,但是必须与样本类别对应。

    responses标签的创建,可以参考我的博客,int数组创建SVM的使用train() ,int容器创建HOG+SVM,4个级别(图、window、block、cell),push_back深拷贝浅拷贝,求余的妙用(OpenCV案例源码train_HOG.cpp解读)

  • 相关阅读:
    isalnum()方法
    index()方法
    find()方法
    expandtabs()方法
    endswith()方法
    encode()方法
    bytes.decode()方法
    count()方法
    center()方法
    capitalize()方法
  • 原文地址:https://www.cnblogs.com/xixixing/p/12425518.html
Copyright © 2011-2022 走看看