libsvm C++ 代码参数说明汇总

几个重要的数据结构 
2.1

struct svm_problem
{
    int l;      // 记录样本的总数
    double *y;  // 样本所属的标签(+1, -1)
    struct svm_node **x;    // 指向样本数据的二维数组(即一个矩阵,行数是样本数,列数是特征向量维度)
};

2.2

struct svm_node
{
    int index;
    double value;
};

svm_node是用来存储单个样本数据的,打个比方说,svm_problem是一群羊,那么svm_node就是这一群羊中的一只。需要注意的是,svm_node的存储空间应该比特征数大一位,最后一位index值必须以-1结束。比如:

    svm_node* node = new svm_node[1 + feature_size];
    for (int j = 0; j < feature_size; j++)
    {
        node[j].index = j + 1;
        node[j].value = xdata[j];
    }
    node[feature_size].index = -1;
    return node;

2.3

    struct svm_parameter
    {
        int svm_type;// SVM的类型
        int kernel_type;// 核函数
        double degree;// 多项式参数
        double gamma;// 核函数为poly/rbf/sigmoid的参数
        double coef0;// 核函数为poly/sigmoid的参数

        //下面是训练所需的参数
        double cache_size;// 训练所需的内存MB为单位
        double eps;// 训练停止的标准(误差小于eps停止)
        double C;// 惩罚因子,越大训练时间越长
        int nr_weight;// 权重的数目,目前只有两个值,默认为0
        int *weight_label;// 权重,元素个数由nr_weight决定
        double* weight;// C_SVC权重
        double nu;
        double p;
        int shrinking;// 训练过程是否使用压缩
        int probability;// 是否做概率估计
    };

猜你喜欢

转载自blog.csdn.net/aidem_brown/article/details/81116516
今日推荐