libsvm 订阅
LIBSVM是台湾大学林智仁(Lin Chih-Jen)教授等开发设计的一个简单、易于使用和快速有效的SVM模式识别与回归的软件包,他不但提供了编译好的可在Windows系列系统的执行文件,还提供了源代码,方便改进、修改以及在其它操作系统上应用;该软件对SVM所涉及的参数调节相对比较少,提供了很多的默认参数,利用这些默认参数可以解决很多问题;并提供了交互检验(Cross Validation)的功能。该软件可以解决C-SVM、ν-SVM、ε-SVR和ν-SVR等问题,包括基于一对一算法的多类模式识别问题。 展开全文
LIBSVM是台湾大学林智仁(Lin Chih-Jen)教授等开发设计的一个简单、易于使用和快速有效的SVM模式识别与回归的软件包,他不但提供了编译好的可在Windows系列系统的执行文件,还提供了源代码,方便改进、修改以及在其它操作系统上应用;该软件对SVM所涉及的参数调节相对比较少,提供了很多的默认参数,利用这些默认参数可以解决很多问题;并提供了交互检验(Cross Validation)的功能。该软件可以解决C-SVM、ν-SVM、ε-SVR和ν-SVR等问题,包括基于一对一算法的多类模式识别问题。
信息
多项式
(r*u'v+coef0)^degree
类    型
SVM设置类型(默认0)
中文名
LIBSVM
Options
可用的选项即表示的涵义如下
LIBSVM概述补充
SVM用于模式识别或回归时,SVM方法及其参数、核函数及其参数的选择,也就是说最优SVM算法参数选择还只能是凭借经验、实验对比、大范围的搜寻或者利用软件包提供的交互检验功能进行寻优。LIBSVM拥有C、Java、Matlab、C#、Ruby、Python、R、Perl、Common LISP、Labview、php等数十种语言版本。最常使用的是C、Matlab、Java和命令行(c语言编译的工具)的版本。以上各版本在林智仁(Lin Chih-Jen)主页上均有链接。
收起全文
精华内容
下载资源
问答
  • LiBSVM

    2021-02-01 22:13:00
    LiBSVM???? 简介 LIBSVM是台湾大学林智仁(Lin Chih-Jen)教授等开发设计的一个简单、易于使用和快速有效的SVM模式识别与回归的软件包,他不但提供了编译好的可在Windows系列系统的执行文件,还提供了源代码,方便改进...

    LiBSVM🌳

    简介

    LIBSVM是台湾大学林智仁(Lin Chih-Jen)教授等开发设计的一个简单、易于使用和快速有效的SVM模式识别与回归的软件包,他不但提供了编译好的可在Windows系列系统的执行文件,还提供了源代码,方便改进、修改以及在其它操作系统上应用;该软件对SVM所涉及的参数调节相对比较少,提供了很多的默认参数,利用这些默认参数可以解决很多问题;并提供了交互检验(Cross Validation)的功能。该软件可以解决C-SVM、ν-SVM、ε-SVR和ν-SVR等问题,包括基于一对一算法的多类模式识别问题。(via 百度百科)

    LiSVM数据集

    LiSVM数据集是十分著名的机器学习数据集

    数据格式

    该数据集使用如下方法编码数据:

    [label] [index1]:[value1] [index2]:[value2] ...
    [label] [index1]:[value1] [index2]:[value2] ...
    

    其中:

    label:数据标签;

    index:数据维度(按递增顺序);

    value:数据值;

    下面是原数据

    8 1:88 2:92 3:2 4:99 5:16 6:66 7:94 8:37 9:70 12:24 13:42 14:65 15:100 16:100
    8 1:80 2:100 3:18 4:98 5:60 6:66 7:100 8:29 9:42 12:23 13:42 14:61 15:56 16:98
    8 2:94 3:9 4:57 5:20 6:19 7:7 9:20 10:36 11:70 12:68 13:100 14:100 15:18 16:92
    9 1:95 2:82 3:71 4:100 5:27 6:77 7:77 8:73 9:100 10:80 11:93 12:42 13:56 14:13
    9 1:68 2:100 3:6 4:88 5:47 6:75 7:87 8:82 9:85 10:56 11:100 12:29 13:75 14:6
    1 1:70 2:100 3:100 4:97 5:70 6:81 7:45 8:65 9:30 10:49 11:20 12:33 14:16
    

    安装(python下)

    使用pip安装

    pip install libsvm
    

    简单使用

    from libsvm.svmutil import svm_train, svm_save_model, svm_predict
    from libsvm.commonutil import svm_read_problem
    
    train_data = svm_read_problem('dataset\ijcnn1\ijcnn1')
    test_data = svm_read_problem('dataset\ijcnn1\ijcnn1.t')
    
    model = svm_train(*(train_data))
    
    predict = svm_predict(*(test_data), model)
    
    print(len(predict))
    print(predict[1])
    
    准确率:92.78742870852008
    

    更详细的使用以及源代码见Git

    展开全文
  • libsvm

    2019-10-07 03:42:23
    LibSVM是台湾林智仁(Chih-Jen Lin)教授2001年开发的一套支持向量机的库,这套库运算速度还是挺快的,可以很方便的对数据做分类或回归。由于libSVM程序小,运用灵活,输入参数少,并且是开源的,易于扩展,因此成为...

    代码文件主要针对Matlab进行说明,但个人仍觉得讲解的支持向量机内容非常棒,可以做为理解这一统计方法的辅助资料;

          LibSVM是台湾林智仁(Chih-Jen Lin)教授2001年开发的一套支持向量机的库,这套库运算速度还是挺快的,可以很方便的对数据做分类或回归。由于libSVM程序小,运用灵活,输入参数少,并且是开源的,易于扩展,因此成为目前国内应用最多的SVM的库。

    这套库可以从http://www.csie.ntu.edu.tw/~cjlin/免费获得,目前已经发展到2.89版。下载.zip格式的版本,解压后可以看到,主要有5个文件夹和一些c++源码文件。

    Java——主要是应用于java平台;

    Python——是用来参数优选的工具,稍后介绍;

    svm-toy——一个可视化的工具,用来展示训练数据和分类界面,里面是源码,其编译后的程序在windows文件夹下;

    tools——主要包含四个python文件,用来数据集抽样(subset),参数优选(grid),集成测试(easy),数据检查(checkdata);

    windows——包含libSVM四个exe程序包,我们所用的库就是他们,里面还有个heart_scale,是一个样本文件,可以用记事本打开,用来测试用的。

    其他.h和.cpp文件都是程序的源码,可以编译出相应的.exe文件。其中,最重要的是svm.h和svm.cpp文件,svm-predict.c、svm-scale.c和svm-train.c(还有一个svm-toy.c在svm-toy文件夹中)都是调用的这个文件中的接口函数,编译后就是windows下相应的四个exe程序。另外,里面的 README 跟 FAQ也是很好的文件,对于初学者如果E文过得去,可以看一下。

    下面以svm-train为例,简单的介绍下,怎么编译:(这步很简单,也没必要,对于仅仅使用libsvm库的人来说,windows下的4个exe包已经足够了,之所以加这步,是为了那些做深入研究的人,可以按照自己的思路改变一下svm.cpp,然后编译验证)

    我用的是VC 6.0,新建一个控制台(win32 console application)程序,程序名叫svm-train(这个可以随意),点击OK后,选择empty。

    进入程序框架后,里面什么都没有,然后找到你的程序目录,把svm-train.c、svm.h和svm.cpp拷贝过去(.c文件是c语言的,要是你习惯了c++,你尽可以改成.cpp),然后把这3个文件添加到工程,编译。。。如果没错误,到debug下面看看,是不是有个svm-train.exe。其实windows下的svm-train.exe就是这样编译出来的。

    哈哈,怎么样是不是很简单。但是,这样的程序直接运行没意义,他要在dos下运行,接收参数才行。下面开始我们的libsvm的体验之旅。

     

    转载于:https://www.cnblogs.com/zle1992/p/5989113.html

    展开全文
  • LibSVM

    2017-08-16 11:49:09
    1 Libsvm 下载 … 3 2 Libsvm3.0 环境变量设置 … 3 3 训练和测试数据集下载 … 3 4 运行 python 程序的环境配置 … 3 5 LIBSVM 使用的一般步骤是: … 3 6 再来说一下, libsvm-3.0 的...

    1 Libsvm 下载 … 3

    2 Libsvm3.0 环境变量设置 … 3

    训练和测试数据集下载 … 3

    运行 python 程序的环境配置 … 3

    5 LIBSVM  使用的一般步骤是: … 3

    再来说一下, libsvm-3.0 的需要的数据及其格式。 … 4

    7 Libsvm 数据格式制作: … 4

    8 Windows 版本的工具 … 4

    核函数的使用简介 … 8

    10 grid.py 的使用 … 10

    11 subset.py 使用方法 … 11

    12 checkdata.py 的使用方法 … 12

    13 easy.py 使用方法 … 12

    14  一个具体的应用实例 … 13

    15  备注:常见问题的解决办法 … 15

    1 Libsvm 下载

    在你给我发的邮件地址 http://www.csie.ntu.edu.tw/~cjlin/libsvm/    下载 libsvm 的最新版本,现在最新版本是 3.0 的,下载地址为 http://www.csie.ntu.edu.tw/~cjlin/libsvm/libsvm-3.0.zip

    1、    libsvm-3.0.zip 解压,我的解压到了 C:\ 根目录下了。

    2 Libsvm3.0 环境变量设置

    添加环境变量到 path :我的电脑 -> 属性 -> 高级 -> 环境变量 -> 系统变量 -> 变量列表里面双击  Path ,在变量值最后添加 ;C:\libsvm-3.0\windows    然后点击确定即可。

    训练和测试数据集下载

    在以下网址 http://www.csie.ntu.edu.tw/%7Ecjlin/papers/guide/data/   可以下载到用来训练的数据集合用来测试的数据集,这都是一些简单的数据。

    运行 python 程序的环境配置

    由于有可能使用到 C:\libsvm-3.0\tools 下的工具,所以的搭建相应的环境,下载两个软件 python gnuplot ,下面说一下两个软件的下载地址和配置:

    a. 对于 python ,下载地址在 http://www.python.org 上寻找下载,目前版本是 3.2 的,但是我用 的是 2.6 的,测试成功。安装就默认安装在 C:\ 就行,记得将 C:\Python26  添加到系统环境变量中。另外将 C:\Python26  中的 python.exe 添加到 C:\libsvm-3.0\windows 下面即可。

    b. 对于 gnuplot  ,下载地址在 http://www.gnuplot.info/   。目前最新版本是 4.4.3 。他不用安装,直接解压放到 C \ 根目录即可。(这注:部分不需要了)。

    c. 下载 gp440win32.zip ,在网址 http://u.xunzai.com/fileview_352799.html   下载,这个解压放到 C 盘根目录,然后拷贝 C:\gnuplot\binary 中的 gnuplot.exe 放到 C:\libsvm-3.0\windows 下面即可。

    5 LIBSVM  使用的一般步骤

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

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

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

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

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

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

    6 libsvm-3.0 数据及其格式

    该软件使用的训练数据和检验数据文件格式如下:

        [label] [index1]:[value1] [index2]:[value2] …

        [label] [index1]:[value1] [index2]:[value2] …

        Label  就是说 class (属于哪一类) 就是你要分类的种类,通常是一些整数。

        index  是有順序的索引,通常是连续的整数。就是指特征编号,必须按照升序排列

        value  就是特征值,用来  train  的数据,通常是一堆实数组成。

    (注: 修改训练和测试数据的格式为程序可以识别的程序

    目标值   第一维特征编号:第一维特征值   第二维特征编号:第二维特征值

    目标值   第一维特征编号:第一维特征值   第二维特征编号:第二维特征值

    ……

    目标值   第一维特征编号:第一维特征值   第二维特征编号:第二维特征值

    例如:  2.3 1:5.6 2:3.2

    表示训练用的特征有两维,第一维是 5.6 ,第二维是 3.2 ,目标值是 2.3

    注意:训练和测试数据的格式必须相同,都如上所示。测试数据中的目标值是为了计算误差用  

    7 Libsvm 数据格式制作

    该过程可以自己使用 excel 或者编写程序来完成,也可以使用网络上 FormatDataLibsvm.xls 来完成。  FormatDataLibsvm.xls 使用说明:

    a.  先将数据按照下列格式存放(注意 label 放最后面):

    value1 value2 … label

    value1 value2 … label

    value1 value2 … label

    b.  然后将以上数据粘贴到 FormatDataLibsvm.xls 中的最左上角单元格,接着工具 -> -> 执行 FormatDataToLibsvm 宏。就可以得到 libsvm 要求的数据格式。测试可用,下载地址在( http://ishare.iask.sina.com.cn/f/9299654.html?from=like   ),或者自己再 google 中搜索下载即可。

    8 Windows 版本的工具

    Windows 版本的工具 svm-scale.exe 进行训练和测试数据的归一化, svm-train.exe 进行模型训练, svm-predict.exe 进行预测,具体步骤和过程在下面介绍。

    2、   C:\libsvm- 3.0\windows 下的工具使用方法

    打开 C:\libsvm- 3.0\windows   ,里面有四个 windowsexe 程序。下面解释一下这四个 exe 执行程序的意义和用法

    s vm scale.exe:  scale 输入数据,简单优化数据以提高精度   扫描数据 .   因为原始数据可能范围过大或过小 , svmscale 可以先将数据重新 scale ( 縮放 )   到适当范围使训练与预测速度更快

    使用方法 : svm-scale.exe [-l lower] [-u upper] [-y y_lower y_upper] [-s save_name] [-r store_name] filename ;其中

        – l 数据下限标记;

    lower :缩放后数据下限   缺省值:  lower = -1

    u 数据上限标记;

    upper 缺省值:  upper =  1代表着没有对 y 进行缩放

    -y :是否对目标值同时进行缩放;

    y_lower :为下限值;

    y_upper :为上限值;(回归需要对目标进行缩放,因此该参数可以设定为  –y -1 1  );

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

    -r store_name :表示将缩放规则文件 store_name 载入后按此缩放;

    filename :待缩放的数据文件(要求满足前面所述的格式)。

    缩放规则文件可以用文本浏览器打开,看到其格式为:

    y

    lower upper min max x

    lower upper

    index1 min1 max1

    index2 min2 max2

    其中的 lower  upper  与使用时所设置的 lower  upper  含义相同; index    示特征序号; min  转换前该特征的最小值; max  转换前该特征的最大值。数据集的缩放结果在此情况下通过 DOS 窗口输出,当然也可以通过 DOS 的文件重定向符号 “>” 将结果另存为指定的文件。该文   件中的参数可用于最后面对目标值的反归一化。反归一化的公式为:

    Value-lower * max-min /(upper – lower)+lower

    其中 value 为归一化后的值,其他参数与前面介绍的相同。

    建议将训练数据集与测试数据集放在同一个文本文件中一起归一化,然后再将归一化结果分成训练集和测试集。

      svm-train.exe 训练数据,生成模型

    使用方法: svm-train.exe [options] training_set_file [model_file] ,其中:

    options (操作参数):可用的选项即表示的涵义如下所示  -s svm 类型:设置 SVM  类型,默认值为 0 ,可选类型有(对于回归只能选 3 4 ):

    0 – C-SVC

    1 – n-SVC

    2 — one-class-SVM

    3 – e-SVR

    4 – n-SVR

    -t  核函数类型:设置核函数类型,默认值为 2 ,可选类型有:

    0 —  线性核: u’*v

    1 —  多项式核:  (g*u’*v+ coef 0)deg ree

    2 — RBF  核: e( u v 2) g –

    3 — sigmoid  核: tanh(g*u’*v+ coef 0)

    -d degree :核函数中的 degree 设置,默认值为 3

    -g g  :设置核函数中的 ,默认值为 1/ k 

    -r coef0 :设置核函数中的 coef 0 ,默认值为 0

    -c cost :设置 C- SVC e – SVR n – SVR 中从惩罚系数 C ,默认值为 1

    -n n  :设置 n – SVC one-class-SVM  n – SVR  中参数 ,默认值 0.5

    -p e  :设置 n – SVR 的损失函数中的 ,默认值为 0.1

    -m cachesize :设置 cache 内存大小,以 MB 为单位,默认值为 40

    -e e  :设置终止准则中的可容忍偏差,默认值为 0.001

    -h shrinking :是否使用启发式,可选值为 1 ,默认值为 1

    -b  概率估计:是否计算 SVC SVR 的概率估计,可选值 1 ,默认 0

    -wi weight :对各类样本的惩罚系数 C 加权,默认值为 1

    -v n n 折交叉验证模式。

    training_set_file :是要进行训练的数据集;

    model_file :是训练结束后产生的模型文件,该参数如果不设置将采用默认的文件名,也可以设置成自己惯用的文件名。

    (注 1 :其中 -g 选项中的 k 是指输入数据中的属性数。操作参数  -v  随机地将数据剖分为 部分并计算交叉检验准确度和均方根误差。以上这些参数设置可以按照 SVM  的类型和核函数所支持的参数进行任意组合,如果设置的参数在函数或 SVM  类型中没有也不会产生影响,程序不会接受该参数;如果应有的参数设置不正确,参数将采用默认值。)

    (注 2 :网上实验中的参数 -s 3 -t 2 (默认)还需确定的参数是 -c -g -p

    另,   实验中所需调整的重要参数是 -c   –g -c -g 的调整除了自己根据经验试之外,还可以使用 gridregression.py 对这两个参数进行优化。(需要补充)

    该优化过程需要用到 Python (测试是 2.5 ), Gnuplot (测试是 4.2 ), gridregression.py 1 、该文件需要修改路径 2 、下载地址在 http://ishare.iask.sina.com.cn/f/6784903.html ,再试没有使用过)。 然后在命令行下面运行:

    python.exe gridregression.py -log2c -10,10,1 -log2g -10,10,1 -log2p -10,10,1 -s 3 –t 2 -v 5 -svmtrain E:\libsvm\libsvm-2.86\windows\svm-train.exe -gnuplot E:\libsvm\libsvm-2.86\gnuplot\bin\pgnuplot.exe E:\libsvm\libsvm-2.86\windows\train.txt > gridregression_feature.parameter

    以上三个路径根据实际安装情况进行修改。

    -log2c :是给出参数 c 的范围和步长

    -log2g :是给出参数 g 的范围和步长

    -log2p :是给出参数 p 的范围和步长上面三个参数可以用默认范围和步长

    -s :选择 SVM 类型,也是只能选 3 或者 4 -t 是选择核函数

    -v  10  将训练数据分成 10 份做交叉验证。默认为 5

    为了方便将 gridregression.py 可以将其存放在 python.exe 安装目录下

    trian.txt 为训练数据,参数存放在 gridregression_feature.parameter 中,可以自己命名。

    搜索结束后可以在 gridregression_feature.parameter 中最后一行看到最优参数。

    其中,最后一行的第一个参数即为 -c ,第二个为 -g ,第三个为 -p ,最后一个参数为均方误差。前三个参数可以直接用于模型的训练。   然后,根据搜索得到的参数,重新训练,得到模型。

    例如: svmtrain.exe -s 3 -p 0.0001 -t 2 -g 32 -c 0.53125 -n 0.99 feature.scaled 

    再例如:运行 svmtrain.exe heart_scale 会得出下面结果输出:

    其中,    

    #iter 为迭代次数,

    nu  是你选择的核函数类型的参数,

    obj SVM 文件转换为的二次规划求解得到的最小值,

    rho 为判决函数的偏置项 b

    nSV  为标准支持向量个数 (0<a[i]<c)

    nBSV 为边界上的支持向量个数 (a[i]=c)

    Total nSV 为支持向量总个数(对于两类来说,因为只有一个分类模型 Total nSV = nSV ,但是对于多类,这个是各个分类模型的 nSV 之和)。

    训练后的模型保存为文件 heart_scale.model ,用记事本打开其内容如下:

    svm_type c_svc          训练所采用的 svm 类型,此处为 C- SVC

    kernel_type rbf      % 训练采用的核函数类型,此处为 RBF

    gamma 0.0769231     % 设置核函数中的 ,默认值为 1/ k

    nr_class 2              % 分类时的类别数,此处为两分类问题

    total_sv 132       % 总共的支持向量个数

    rho 0.424462        % 决策函数中的常数项 b

    label 1 -1           % 类别标签

    nr_sv 64 68        % 各类别标签对应的支持向量个数

    SV                      % 以下为支持向量

    1 1:0.166667 2:1 3:-0.333333 4:-0.433962 5:-0.383562 6:-1 7:-1 8:0.0687023 9:-1 10:-0.903226 11:-1 12:-1 13:1

    0.5104832128985164 1:0.125 2:1 3:0.333333 4:-0.320755 5:-0.406393 6:1 7:1 8:0.0839695 9:1 10:-0.806452 12:-0.333333 13:0.5

    1 1:0.333333 2:1 3:-1 4:-0.245283 5:-0.506849 6:-1 7:-1 8:0.129771 9:-1 10:-0.16129 12:0.333333 13:-1

    1 1:0.208333 2:1 3:0.333333 4:-0.660377 5:-0.525114 6:-1 7:1 8:0.435115 9:-1 10:-0.193548 12:-0.333333 13:1

     svm-predict.exe 用来测试训练结果的准确率

    使用方法: svm-predict.exe [options] test_file model_file output_file

    options (操作参数):

    -b probability_estimates :是否需要进行概率估计预测,可选值为 0 1 ,默认值为 0

    model_file :是由 svm-train.exe  产生的模型文件;

    test_file :是要进行预测的数据文件;

    output_file :是 svmpredict  的输出文件,表示预测的结果值。

    注: 输出结果包括均方误差( Mean squared error )和相关系数( Squared correlation coefficient )。)

    例如: svmpredict.exe feature_test.scaled feature.scaled.model feature_test.predicted

    其中 feature_test.scaled 是归一化后的测试特征文件名, feature.scaled.model 是训练好的模型, SVM 预测的值在 feature_test.predicted  

    核函数的使用简介

    1 )核函数发展历史

    早在 1964 Aizermann 等在势函数方法的研究中就将该技术引入到机器学习领域,但是直到 1992 Vapnik 等利用该技术成功地将线性  SVMs 推广到非线性 SVMs 时其潜力才得以充分挖掘。而核函数的理论则更为古老, Mercer 定理可以追溯到 1909 年,再生核希尔伯特空间  (ReproducingKernel Hilbert Space, RKHS) 研究是在 20 世纪 40 年代开始的。

    2 )核函数方法原理

    根据模式识别理论,低维空间线性不可分的模式通过非线性映射到高维特征空间则可能实现线性可分,但是如果直接采用这种技术在高维空间进行分类或回归,则存   在确定非线性映射函数的形式和参数、特征空间维数等问题,而最大的障碍则是在高维特征空间运算时存在的 维数灾难 。采用核函数技术可以有效地解决这样问   题。

    x,z X,X 属于 R n )空间 , 非线性函数 Φ 实现输入间 X 到特征空间 F 的映射 , 其中 F 属于 R m ,n<<m 。根据核函数技术有:

    K(x,z) =<Φ(x),Φ(z) >  (1)

    其中: <, > 为内积 ,K(x,z) 为核函数。从式 (1) 可以看出,核函数将 m 维高维空间的内积运算转化为 n 维低维输入空间的核函数计算,从而巧妙地解决了在高   维特征空间中计算的 维数灾难 等问题,从而为在高维特征空间解决复杂的分类或回归问题奠定了理论基础。

    3 )核函数特点

    核函数方法的广泛应用 , 与其特点是分不开的:

    1 )核函数的引入避免了 维数灾难 ”, 大大减小了计算量。而输入空间的维数 n 对核函数矩阵无影响,因此,核函数方法可以有效处理高维输入。

    2 )无需知道非线性变换函数 Φ 的形式和参数 .

    3 )核函数的形式和参数的变化会隐式地改变从输入空间到特征空间的映射,进而对特征空间的性质产生影响,最终改变各种核函数方法的性能。

    4 )核函数方法可以和不同的算法相结合,形成多种不同的基于核函数技术的方法,且这两部分的设计可以单独进行,并可以为不同的应用选择不同的核函数和算法。

    4 )常见核函数

    核函数的确定并不困难 , 满足 Mercer 定理的函数都可以作为核函数。常用的核函数可分为两类,即内积核函数和平移不变核函数,如:

    1 )高斯核函数 K(x,xi) =exp(-||x-xi||2/2σ2

    2 )多项式核函数 K(x,xi)=(x·xi+1)^d, d=1,2,…,N  

    3 )感知器核函数 K(x,xi) =tanh(βxi+b)

    4 )样条核函数 K(x,xi) = B2n+1(x-xi)

    5 )核函数方法实施步骤

    核函数方法是一种模块化 (Modularity) 方法,它可分为核函数设计和算法设计两个部分,具体为:

    1 )收集和整理样本 , 并进行标准化;

    2 )选择或构造核函数;

    3 )用核函数将样本变换成为核函数矩阵 , 这一步相当于将输入数据通过非线性函数映射到高维   特征空间;

    4 )在特征空间对核函数矩阵实施各种线性算法;

    5 )得到输入空间中的非线性模型。

    显然 , 将样本数据核化成核函数矩阵是核函数方法中的关键。注意到核函数矩阵是 l×l 的对称矩阵,其中 l 为样本数。

    6 )核函数在模式识别中的应用

    1 )新方法。主要用在基于结构风险最小化 (Structural Risk Minimization,SRM) SVM 中。

    2 )传统方法改造。如核主元分析 (kernel PCA) 、核主元回归 (kernel PCR) 、核部分最小二乘法 (kernel PLS) 、核 Fisher 判别分析 (Kernel Fisher Discriminator, KFD) 、核独立主元分析 (Kernel Independent Component Analysis,KICA) 等,这些方法在模式识别等不同领域的应用中都表现了很好的性能。

    10 grid.py 使用 方法

    文件 grid.py 是对 C-SVC 的参数 cγ 做优选的,原理也是网格遍历,假设我们要对目录 C:\libsvm-3.0 下的样本文件 heart_scale 做优选,其具体用法为:

    第一步: 打开 C:\libsvm-3.0 下的 tools 文件夹,找到 grid.py 文件,将其拷贝到 C:\libsvm-3.0\windows 下。用 python 打开(不能双击,而要右键选择 “Edit with IDLE” ),修改 svmtrain_exegnuplot_exe 的路径。

    svmtrain_exe = r"C:\libsvm-3.0\windows\svm-train.exe"

    gnuplot_exe = r"C:\gnuplot\binary\pgnuplot.exe"

    (注:这里面还有一个是对非 win32 的,可以不用改,只改 #example for windows 下的两行就可以)

    第二步: 运行 cmd ,进入 dos 环境,定位到 C:\libsvm-3.0\windows 文件夹,这里是放置 grid.py 的地方。

    第三步: 输入以下命令:

          python grid.py heart_scale

    (注:还要把数据文件 heart_scale 放置到 C:\libsvm-3.0\windows 下面啊)

    你就会看到 dos 窗口中飞速乱串的 [local] 数据,以及一个 gnuplot 的动态绘图窗口。大约过 10 秒钟,就会停止。 Dos 窗口中的 [local] 数据时局部最优值,这个不用管,直接看最后一行:

           2048.0    0.0001220703125     84.0741

    其意义表示: C = 2048.0γ=0.0001220703125γ 是哪个参数?参看 LibSVM 学习(三)中 svmtrain 的参数说明);交叉验证精度 CV Rate = 84.0741% ,这就是最优结果。

    第四步: 打开目录 C:\libsvm-3.0\windows ,我们可以看到新生成了两个文件: heart_scale.outheart_scale.png ,第一个文件就是搜索过程中的 [local] 和最优数据,第二文件就是 gnuplot 图像。

    现在, grid.py 已经运行完了,你可以把最优参数输入到 svm-train.exe 中进行训练了。当然了,你在当中某一步很可能出现问题,下面就需要注意的问题说明一下:

    1 grid.py svm-train 的版本要统一,也就是说你不能用 2.6grid.py 去调用 2.89 svm-train

    2 你的目录中如果有空格,比如 C:\program files\ libsvm\… ,那么无论是在第一步还是第二步,在运行 cmd 后,请把目录改成 C:\program files\ libsvm\…

    3)  第三步的命令问题。首先要看你定位到哪个目录,那么其下的文件就不需要带路径,否则就要带。像我们上面的命令,我当前的目录是 C:\libsvm-3.0\windows ,那么其下的 grid.pyheart_scale 等文件就不需要加路径,如果 python.exe 是在 C:\python26\ 下,不在当前目录下,那么就要要加路径。其命令就可以改成:

    C:\python26\python  grid.py  heart_scale

    总起来说,命令为 python  目标文件 样本文件,其原则是要让系统找得到文件。假如系统提示你 不是内部或外部命令 ,说明你 python 的路径错误,而如果是 ‘not found file’ 的提示,很可能是其他两个文件路径错误。

    4 假如,你仍旧出现问题,那么请换一下 python 或者 gnuplot 的版本,目前 python 最新版本是 3.1 ,但是好像会出问题,老一点的版本 2.42.5 的兼容性会更好。

    11 subset.py 使用方法

    训练大的数据集会是非常耗时的事情,在某一些场合上,我们可以先工作在一个更小的一个训练集的子集上实验,这也就是 subset.py 的用处所在,它的主要功能就是从大的数据中抽取一定数量的数据子集,它的应用格式是如下的:

    subset.py [options] dataset number [output1] [output2]

    op tions:

    -s method : method of selection (default 0)

       0 — stratified selection (classification only)

       1 — random selection

    dataset    数据文件

    number     要选定的 subset 的个数

    output1    the subset optional

    output2    the rest of data optional

    例如 :  python subset.py heart_scale 100 file1 file2

    From heart_scale 100 samples are randomly selected and stored in

    file1. All remaining instances are stored in file2.

    (注:具体参见 C:\libsvm-3.0\tools 下的 README ,使用记事本或者写字板打开)

    12 checkdata.py 使用方法

    checkdata.py  用于检测样本集存储格式是否正确在控制台下定位到 subset.py 所在的目录(将其拷贝到 C:\libsvm-3.0\windows 下)运行 :

    python checkdata.py  heart_scale

    运行结果:

    No error. ( 表示数据文件 heart_scale 格式 没有错误,可以进行后续的调用 )

    13 easy.py 使用方法

         文件 easy.py 对样本文件做了 一条龙服务 ,从参数优选,到文件预测。因此,其对 grid.pysvm-train.exesvm-scal.exesvm-predict.exe 都进行了调用(当然还有必须的 pythongnuplot )。因此,运行 easy.py 需要保证这些文件的路径都要正确。当然还需要样本文件和预测文件,再简单的测试中,可以使用 heart_scale 作为训练样本,预测文件同样使用 heart_scale ,只是我们复制一份后将其改名为 heart_test ,下面说一下使用方法:

    第一步: easy.py 拷贝到 C:\libsvm-3.0\windows 目录下, python 打开(不能双击,而要右键选择 “Edit with IDLE” ,修改 # example for windows 下的几个路径:

    svmscale_exe = r"C:\libsvm-3.0\windows\svm-scale.exe"

    svmtrain_exe = r"C:\libsvm-3.0\windows\svm-train.exe"

    svmpredict_exe = r"C:\libsvm-3.0\windows\svm-predict.exe"

     gnuplot_exe = r"C:\gnuplot\binary \pgnuplot.exe"

     grid_py = r"C:\libsvm-3.0\windows\grid.py"

        第二步: 运行 cmd ,进入 dos 环境,定位到放置 easy.py 的目录 C:\libsvm-3.0\windows

        第三步: 输入命令:

                       python easy.py heart_scale heart_test

    你就会看到一个 gnuplot 的动态绘图窗口。大约 20s 以后停止, dos 窗口显示为:

    Scaling training data…

    Cross validation…

    Best c=2048.0, g=0.0001220703125 CV rate=84.0741

    Training…

    Output model: heart_scale.model

    Scaling testing data…

    Testing…

    Accuracy = 85.1852% (230/270) (classification)

    Output prediction: heart_test.predict

         这就是最终预测结果,可以看到第三行就是调用 grid.py 的结果。在 C:\libsvm-3.0\windows 下你会看到又多了 7 个文件,都是以前我们碰到的过程文件,都可以用记事本打开。

    14  具体的应用实例

    1)  libsvm-3.0 中的 heart_scale 作为训练数据和测试数据,同时已经将 python2.6 安装至 c 盘,并将 grid.py 文件中关于 gnuplot 路径的默认值修改为实际解压缩后的路径,将 heart_scale grid.py python.exe 拷贝至 C:\libsvm-3.0\windows 文件夹下。

    2) 运行 cmd ,定位到目录 C:\libsvm-3.0\windows 如下所示:

    3 )输入如下命令

    svm-train.exe heart_scale

    得到结果图:

    optimization finished, #iter = 162

    nu = 0.431029

    obj = -100.877288, rho = 0.424462

    nSV = 132, nBSV = 107

    Total nSV = 132

    (注:参数的意义上面有介绍)

    4 )此时,已经得到 heart_scale.model ,进行预测:

    svm-predict heart_scale  heart_scale.model  heart_scale.out

    Accuracy = 86.6667% (234/270) (classification)

    正确率为 Accuracy = 86.6667%

    5 )进行参数最优估计,运行命令

    python grid.py heart_scale

    大概运行 10s 的样子,命令如下所示

    运行到最后得到

    注意到最后一行的参数了吧,就是最有参数:

    最优参数 c=2048 g=0.0001220703125.

    6 )然后在调用命令

    svm-train.exe -c 2048 -g 0.0001220703125 heart_scale 得到 model

    7 )调用命令:

    svm-predict.exe heart_scale  heart_scale.model heart_scale.out

    得到结果窗口如下:

    得到的正确率为 Accuracy = 85.1852%. 这块还有点迷惑?为什么正确率降低了?当然也可以结合 subset.py   easy.py  实现自动化过程。详见上面的相关介绍

    15  备注

    常见问题的解决办法

    网址为: http://www.360doc.com/content/11/0103/11/5316402_83555125.shtml

    1

    Scaling training data…

    Cross validation…

    Traceback (most recent call last):

    File "easy.py", line 61, in ?

    c,g,rate = map(float,last_line.split())

    ValueError: need more than 0 values to unpack

    [ 解析 说明你的 grid.py 运行出现错误,你可以参照上部分 “grid.py 使用方法 运行一下就会发现问题。另外,有的说是相对路径的问题,建议找到 easy.py 的以下部分:

           cmd = "%s -svmtrain %s -gnuplot %s %s" % (grid_py, svmtrain_exe, gnuplot_exe, scaled_file)

    改成

              cmd = "%s %s -svmtrain %s -gnuplot %s %s" % (python_path, grid_py, svmtrain_exe, gnuplot_exe, scaled_file)

    2

    Traceback (most recent call last)

    File "grid.py", line 349, in ?

    main()

    File "grid.py", line 344, in main

    redraw(db)

    File "grid.py", line 132, in redraw

    gnuplot.write("set term windows\n")

    IOError [Errno 22] Invalid argument

     [ 解析 说明你的 gnuplot.exe 在调用过程中出现问题,要么是你的路径不对,要么是你的版本不对,请检查。

     3

    Traceback (most recent call last):

    File "C:\Python24\lib\threading.py", line 442, in __bootstrap

    self.run()

    File "c:\libsvm\tools\gridregression.py", line 212, in run

    self.job_queue.put((cexp,gexp,pexp))

    File "C:\Python24\lib\Queue.py", line 88, in put

    self._put(item)

    File "c:\libsvm\tools\gridregression.py", line 268, in _put

    self.queue.insert(0,item)

    AttributeError: ‘collections.deque’ object has no attribute ‘insert

     [ 解析 很显然,你调用的是 gridregression.py ,其是用来做回归用的。如果你调用 easy.py 也出现这种问题按照原作者的说法,这里是因为你的 python 调用出现错误,很可能是版本不对,如果是 2.4 的版本,请把 easy.py 中的

    self.queue.insert(0,item)

    改成

    if sys.hexversion >= 0x020400A1:

    self.queue.appendleft(item)

    else

    self.queue.insert(0,item)

    展开全文
  • libSVM

    2015-04-22 14:12:08
    libSVM使用之--grid.py  2011-03-20 13:34:28| 分类: 机器学习 | 标签:grid py gnuplot gamma pathname |举报|字号 订阅   下载LOFTER客户端...

    libSVM使用之--grid.py  

    2011-03-20 13:34:28|  分类: 机器学习 |  标签:grid  py  gnuplot  gamma  pathname  |举报|字号 订阅


    此工具利用交叉验证的原理来选择参数c和gamma,是否有更佳的参数,有待考证。其中两参数的作用见如下:

    The SVM with a Gaussian kernel function has two such training parameters: C which controls overfitting of the model, and gamma (γ) which controls the degree of nonlinearity of the model. Gamma is inversely related to sigma which is a degree for spread around a mean in statistics: the higher the value of gamma, the lower the value of sigma, thus the less spread or the more nonlinear the behavior of the kernel. The values of these training parameters C and gamma are determined by grid search and cross validation: the model with the highest estimated performance determines the selected training parameters. Then, the performance of the constructed model is estimated by using 5-fold cross validation on the training data. Finally, the constructed model is validated by predicting the validation data and comparing these predictions with the real observations by means of ROC curves.

    gamma(或Epsilon ε)---不敏感损失函数的参数,gamma越大,支持向量越少,gamma值越小,支持向量越多,RBF宽度越大
     C 惩罚系数,C过大或过小,泛化能力变差
        Usage:  grid.py [-log2c begin,end,step] [-log2g begin,end,step] [-v fold]        [-svmtrain pathname] [-gnuplot pathname] [-out pathname] [-png pathname]        [additional parameters for svm-train] dataset
      Example ======= > python grid.py -log2c -5,5,1 -log2g -4,0,1 -v 5 -m 300 heart_scale >grid.py -log2c -5,5,1 -svmtrain c:\libsvm\windows\svm-train.exe -gnuplot c:\tmp\gnuplot\bin\pgnuplot.exe -v 10 heart_scale
      Output: two files dataset.png: the CV accuracy contour plot generated by gnuplot dataset.out: the CV accuracy at each (log2(C),log2(gamma))
        输出的结果如下所示: [local] 1.0 -3 85.58  (best c=4.0, g=0.125, rate=86.16) [local] -1.0 -3 81.49  (best c=4.0, g=0.125, rate=86.16) [local] 3.0 -3 85.84  (best c=4.0, g=0.125, rate=86.16) 4.0 0.125 86.16 我们只要找最后一行 就是最佳结果   其中尤其要注意的是:
    1、gnuplot pathname 默认是,应用程序所在分区的tmp目录,这需要你在拷贝文件时就配置好,否则会提醒一些人常见的      pgnuplot not found错误
     2、如果在同一台机子上同时调整两个训练集的参数,要设置一个延迟时间,以免提示上面的错误
     
     附:参数意义:
     #iter:迭代次数 epsilon:epsilon-SVR中的参数epsilon
    obj:SVM对偶对题的最优目标函数值
    rho:决策平面(w.x + b)中的b nSV:支持向量的个数 nBSV:边界支持向量的个数
    展开全文
  • LIBSVM

    2012-11-29 16:46:16
    LIBSVM 求助编辑百科名片   LIBSVM的参数优化 LIBSVM是台湾大学林智仁(Lin Chih-Jen)副教授等开发设计的一个简单、易于使用和快速有效的SVM模式识别与回归的软件包,他不但提供了编译好的可在Windows...
  • libSVM

    2010-03-19 13:28:00
    libSVM 是一个 SVM 的实现 http://www.csie.ntu.edu.tw/~cjlin/libsvm
  • libsvm3.14

    2021-02-07 15:00:21
    libsvm 最新
  • libsvm-3.21

    2016-12-27 09:47:39
    libsvm
  • libsvm 实现

    2012-05-02 15:30:24
    libsvm
  • libsvm3.22

    2017-05-16 18:16:49
    libsvm3.22
  • libsvm3.18

    2016-11-27 17:28:00
    libsvm3.18
  • libSVM 3.22

    2018-04-11 15:30:03
    台湾大学林智仁开发的libsvm的matlab最新版libsvm-3.22

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,335
精华内容 2,134
关键字:

libsvm