Libsvm学习笔记

1.LIBSVM 是支持向量机svm的库,支持不同版本,这里选用python接口。

在libsvm-3.22的python文件夹下主要包括了两个文件svm.py和svmutil.py。
svmutil.py接口主要包括了high-level的函数,这些函数的使用和LIBSVM的MATLAB接口大体类似。

svmutil中主要包含了以下几个函数:

   svm_train() : 训练svm模型,接受特定的输入才能产生模型,才能对模型进行预测

   svm_predict(): 依照已经 train 好的 model, 再加上给定的输入 ( 新值 ), 输出 predict ( 预测 ) 新值所对应的类别 (class)

   svm_read_problem() : 从libsvm格式的文件读取数据

   svmscale:重新调整数据,因为原始数据可能范围过大或者过小,svmscale可以将数据重新缩放到适当范围,方便使用稀疏矩阵

   svm_load_model() : 加载libsvm模型

   svm_save_model(): 保存模型到文件中

   evaluations() : 评估预测结果

svm.py接口主要包括了一些low-level的应用。在svm.py中采用了python内置的ctypes库,由此python可以直接访问svm.h中定义的C结构和接口函数。svm.py主要运用了四个数据结构svm_node, svm_problem, svm_parameter和svm_model。

2. 使用LIBSVM的一般步骤:

1)按照LIBSVM软件包所要求的格式准备数据集;                                    

2)对数据进行简单的缩放操作;                                   

3)首要考虑选用RBF 核函数;

4)采用交叉验证选择最佳参数C与g ;

5)采用最佳参数C与g 对整个训练集进行训练获取支持向量机模型;

6)利用获取的模型进行测试与预测。

3.1 libsvm的数据格式:

[label] [index1]:[value1]  [index2]:[value2] ...    E:+1 1:0.708 2:1 3:1 4:-0.320 5:-0.105 6:-1

[类别编号][特征1][特征值][特征2][特征值]...

label(class)要分类的种类,一般为整数,可以自己随意定,但如果是回归的话就要实事求是

index:有顺序的索引,通常是连续的整数,若value为0,序号可以不连续

value:要训练的数据,从分类的角度说就是特征值

不同数据之间用空格隔开。

3.2对数据进行简单的缩放操作

svmscale是用来对原始样本进行缩放的, 因为原始数据可能范围过大或过小,缩放到适当范围使训练与预测速度更快,范围可以自己定, 一般是[0,1]或[-1,1]. 

用法: svmscale [-l lower] [-u upper]                            [-l 数据下限值] [-u 数据上限值]

              [-y y_lower y_upper]                                    [-y 缩放的下限值 缩放的上限值]

              [-s save_filename]                                      [-s 将缩放的规则保存的文件名]

              [-r restore_filename] filename                    [-r 将已经存在的规则文件名restore_filename进行缩放] [要缩放的文件名]

其中, []中都是可选项:

         -l: 设定数据下限; lower: 设定的数据下限值, 缺省为-1

         -u: 设定数据上限; upper: 设定的数据上限值, 缺省为1

         -y: 是否对目标值同时进行缩放; y_lower为下限值, y_upper为上限值;

         -s save_filename: 表示将缩放的规则保存为文件save_filename;

         -r restore_filename: 表示将按照已经存在的规则文件restore_filename进行缩放;

         filename: 待缩放的数据文件, 文件格式按照libsvm格式.

默认情况下, 只需要输入要缩放的文件名就可以了: 比如(已经存在的文件为test.txt)

         svmscale test.txt

这时, test.txt中的数据已经变成[-1,1]之间的数据了. 但是, 这样原来的数据就被覆盖了, 为了让规划好的数据另存为其他的文件, 我们用一dos的重定向符>来另存为(假设为out.txt):

         svmscale test.txt > out.txt

运行后, 我们就可以看到目录下多了一个out.txt文件, 那就是规范后的数据. 假如, 我们想设定数据范围[0,1], 并把规则保存为test.range文件:

         svmscale –l 0 –u 1 –s test.range test.txt > out.txt

这时, 目录下又多了一个test.range文件, 可以用记事本打开, 下次就可以用-r test.range来载入了.

3.3考虑选用RBF核函数

svmtrain主要实现对训练数据集的训练, 并可以获得SVM模型

用法: svmtrain [options] training_set_file [model_file]

其中, options为操作参数, 可用的选项即表示的涵义如下所示:

-s 设置svm类型:

         0 – C-SVC

         1 – v-SVC

         2 – one-class-SVM

         3 – ε-SVR

         4 – n – SVR

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值