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;// 是否做概率估计
    };

 libsvm命名空间下主要使用类:

svm_model 为模型类,通过训练或加载训练好的模型文件获得

svm_parameter 为参数类,主要为支持向量机设定参数,具体参数如下:


svm_parameter.kernel_type
核函数类型:核函数设置类型(svm_parameter.LINEAR)
svm_parameter.LINEAR – 线性:u'×v
svm_parameter.POLY– 多项式:(γ×u'×v + coef0)^degree
svm_parameter.RBF – RBF函数:exp(-γ×|u-v|^2)
svm_parameter.SIGMOID – sigmoid:tanh(γ×u'×v + coef0)

svm_parameter.degree
核函数中的degree设置(默认3)

svm_parameter.coef0
核函数中的coef0设置(默认0)

svm_parameter.shrinking
是否使用启发式,0或1(默认1)

svm_parameter.nu
设置ν-SVC,一类SVM和ν- SVR的参数(默认0.5)

svm_parameter.C
设置C-SVC,ε -SVR和ν-SVR的参数(默认1)

svm_parameter.cache_size
设置cache内存大小,以MB为单位(默认40)

svm_problem 相当于训练集合,可讲需要训练的数据加入该类传递给训练器

svm_node 内部使用的数据结构,主要用于保存待训练数据

svm 主调用程序中我们一般使用以下几个方法:

svm.svm_train(svm_problem,svm_parameter) 该方法返回一个训练好的svm_model
svm.svm_load_model(文件名); 该方法返回一个训练好的svm_model
svm.svm_save_model(文件名,svm_model); 该方法将svm_model保存到文件中
svm.svm_predict_values(svm_model,svm_node,double); 该方法返回doule类值,svm_node对svm_model测试,返回值确定了svm_node在模型中的定位

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: libsvm是一个用于支持向量机(Support Vector Machine)的机器学习算法库,它提供了一系列用于解决分类和回归问题的工具和函数。在安装libsvm之前,需要确保计算机已经安装了合适的编译环境,比如GCC编译器等。 首先,我们需要libsvm的官方网站(https://www.csie.ntu.edu.tw/~cjlin/libsvm/)下载libsvm的压缩包。解压缩后,可以在终端中进入解压缩后的目录。 然后,在终端中输入以下命令编译libsvm: ``` cd python make ``` 这将编译libsvm所需的文件,并在python目录下生成一个名为`svm.so`的文件。 接下来,我们需要将编译生成的`svm.so`文件复制到相应的Python库目录中。在终端中输入以下命令: ``` sudo cp svm.so /usr/local/lib/python3.X/dist-packages ``` 其中,`python3.X`是你正在使用的Python版本。 最后,我们可以在Python中导入libsvm,并使用其提供的函数和类: ```python from svmutil import * # 示例代码 prob = svm_problem([1, -1], [[1, 0, 1], [-1, 0, -1]]) param = svm_parameter('-c 4') model = svm_train(prob, param) ``` 通过以上步骤,我们成功安装了libsvm,并可以在Python中使用它进行支持向量机相关的机器学习任务。 ### 回答2: 安装libsvm c需要按照以下步骤进行。 第一步,下载libsvm c的源代码。可以在libsvm的官方网站上找到最新的源代码版本,也可以直接使用命令行下载。下载之后,将源代码保存到本地。 第二步,安装必要的软件依赖项。在Linux系统上,可以使用命令行工具包管理器(比如apt或者yum)来安装gcc编译器和make工具。在Windows系统上,需要安装MinGW编译器和MSYS工具。 第三步,解压源代码文件。将下载好的源代码文件解压到指定的目录下,比如/home/user/libsvm。 第四步,打开命令行终端,进入到解压好的源代码目录中。使用cd命令切换目录,比如cd /home/user/libsvm。 第五步,执行make命令来编译libsvm。在命令行中输入make,然后按下回车键。编译过程可能需要一些时间,耐心等待编译完成。 第六步,编译完成后,会生成一个可执行文件svm-train和一个动态链接库文件libsvm.so。可以通过运行svm-train来验证是否安装成功。在命令行中输入./svm-train,如果能够成功运行并显示帮助信息,则说明安装成功。 最后,将生成的libsvm.so文件复制到系统的库目录下(比如/usr/local/lib),以便在其他程序中引用libsvm库。 通过以上步骤,就可以成功安装libsvm c,并可以使用其提供的机器学习算法功能。 ### 回答3: libsvm是一个用于支持向量机(SVM)的机器学习库。在安装libsvm之前,我们需要确保已经安装了适当的编译器,如gcc。接下来,我们可以按照以下步骤进行安装: 1. 首先,下载libsvm的源代码文件。可以从libsvm官方网站(https://www.csie.ntu.edu.tw/~cjlin/libsvm/)上下载最新版本的libsvm。 2. 将下载的文件解压缩到一个目录中。 3. 打开终端,并进入到刚刚解压缩的目录。 4. 在终端中输入以下命令进行编译: ``` make ``` 这个命令会自动编译libsvm的源代码,并生成可执行文件svm-train和svm-predict。 5. 如果编译成功,我们可以将生成的可执行文件复制到我们希望使用的目录下,方便后续使用。 通过以上步骤,我们就成功地安装了libsvm。此时,我们可以通过运行svm-train和svm-predict来训练和预测SVM模型。同时,我们还可以在自己的代码中引入libsvm的头文件,使用其提供的函数和类来训练和使用SVM模型需要注意的是,libsvm除了C语言版本外,还有其他语言的接口,如Python和Java。如果需要在其他编程语言中使用libsvm,我们可以按照相应语言的安装和使用方式进行操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值