当前位置:首页 » 编程语言 » pythonlibsvm

pythonlibsvm

发布时间: 2024-08-24 17:25:08

1. 如何利用python使用libsvm

把包解压在C盘之中,如:C:\libsvm-3.182.
因为要用libsvm自带的脚本grid.py和easy.py,需要去官网下载绘图工具gnuplot,解压到c盘.进入c:\libsvm\tools目录下,用文本编辑器(记事本,edit都可以)修改grid.py和easy.py两个文件,找到其中关于gnuplot路径的那项,根据实际路径进行修改,并保存
python与libsvm的连接(参考SVM学习笔记(2)LIBSVM在python下的使用)

1.打开IDLE(pythonGUI),输入>>>importsys>>>sys.version
2.如果你的python是32位,将出现如下字符:
(default,Apr102012,23:31:26)[MSCv.150032bit(Intel)]’
这个时候LIBSVM的python接口设置将非常简单。在libsvm-3.16文件夹下的windows文件夹中找到动态链接库libsvm.dll,将其添加到系统目录,如`C:\WINDOWS\system32\’,即可在python中使用libsvm
wk_ad_begin({pid : 21});wk_ad_after(21, function(){$('.ad-hidden').hide();}, function(){$('.ad-hidden').show();});
3.执行一个小例子

importos
os.chdir('C:\libsvm-3.18\python')#请根据实际路径修改
fromsvmutilimport*
y,x=svm_read_problem('../heart_scale')#读取自带数据
m=svm_train(y[:200],x[:200],'-c4')
p_label,p_acc,p_val=svm_predict(y[200:],x[200:],m)
##出现如下结果,应该是正确安装了optimizationfinished,#iter=257nu=0.351161
obj=-225.628984,rho=0.636110nSV=91,nBSV=49
TotalnSV=91

Accuracy=84.2857%(59/70)(classification)

2. 如何利用python使用libsvm

  • 准备工具

    libsvm软件包;

    电脑;

  • 步骤操作

  1. 把包解压在C盘之中,如:C:libsvm-3.18;

  2. 用libsvm自带的脚本grid.py和easy.py,需要去官网下载绘图工具gnuplot,解压到c盘;

  3. 进入c:libsvm ools目录下,用文本编辑器(记事本,edit都可以)修改grid.py和easy.py两个文件,找到其中关于gnuplot路径的那项,根据实际路径进行修改,并保存;


  4. 3. python调用libSVM异常,svm_save_model(modelName,model)。总说第一个参数类型错误

    可以看看python文件夹下面的README。第一个参数是:保存model的文件名,字符串类型。第二个参数就是svm_train返回的model。
    README里面有详细的例子。按照你的错误,
    model_file_name是字符串类型吗?检查一下就行吧

    4. 如何下载libsvm python

    下载libsvm python的方法:

    1、访问“www.csie.ntu.e.tw/~cjlin/libsvm/”网页,下载zip格式的数据包

    2、将文件解压到python的site-packages文件夹中就可以了

    更多Python知识,请关注:Python自学网!!

    5. 如何利用python使用libsvm

    一:libsvm包下载与使用:

    LIBSVM是台湾大学林智仁(Lin Chih-Jen)副教授等开发设计的一个简单、易于使用和快速有效的SVM模式识别与回归的软件包,他不但提供了编译好的可在Windows系列系统的执行文件,还提供了源代码,方便改进.
    把包解压在C盘之中,如:C:\libsvm-3.18
    2.
    因为要用libsvm自带的脚本grid.py和easy.py,需要去官网下载绘图工具gnuplot,解压到c盘
    3.
    进入c:\libsvm\tools目录下,用文本编辑器(记事本,edit都可以)修改grid.py和easy.py两个文件,找到其中关于gnuplot路径的那项,根据实际路径进行修改,并保存
    4python与libsvm的连接(参考SVM学习笔记(2)LIBSVM在python下的使用 )

    a.打开IDLE(python GUI),输入
    >>>import sys
    >>>sys.version
    如果你的python是32位,将出现如下字符:
    ‘2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)]’
    这个时候LIBSVM的python接口设置将非常简单。在libsvm-3.16文件夹下的windows文件夹中找到动态链接库libsvm.dll,将其添加到系统目录,如`C:\WINDOWS\system32\’,即可在python中使用libsvm
    b.如果你是64位的请参考文献,请参考上述连接。

    5.执行一个小例子

    import os

    os.chdir('C:\libsvm-3.18\python')#请根据实际路径修改

    from svmutil import *

    y, x = svm_read_problem('../heart_scale')#读取自带数据

    m = svm_train(y[:200], x[:200], '-c 4')

    p_label, p_acc, p_val = svm_predict(y[200:], x[200:], m)

    ##出现如下结果,应该是正确安装了
    optimization finished, #iter = 257
    nu = 0.351161
    obj = -225.628984, rho = 0.636110
    nSV = 91, nBSV = 49
    Total nSV = 91
    Accuracy = 84.2857% (59/70) (classification)

    二几个简单的例子
    从下载实验数据集。并且将数据集拷贝到C:\libsvm-3.18\windows下(因为之后我们需要利用该文件夹下的其他文件,这样比较方便,当然之后你用绝对地址也可以了)
    建立一个py文件,写下如下代码:
    例1:

    import os

    os.chdir('C:\libsvm-3.18\windows')#设定路径
    from svmutil import *

    y, x = svm_read_problem('train.1.txt')#读入训练数据
    yt, xt = svm_read_problem('test.1.txt')#训练测试数据
    m = svm_train(y, x )#训练
    svm_predict(yt,xt,m)#测试

    执行上述代码,精度为:Accuracy = 66.925% (2677/4000) (classification)

    常用接口
    svm_train() : train an SVM model#训练
    svm_predict() : predict testing data#预测
    svm_read_problem() : read the data from a LIBSVM-format file.#读取libsvm格式的数据
    svm_load_model() : load a LIBSVM model.
    svm_save_model() : save model to a file.
    evaluations() : evaluate prediction results.
    - Function: svm_train#三种训练写法
    There are three ways to call svm_train()
    >>> model = svm_train(y, x [, 'training_options'])
    >>> model = svm_train(prob [, 'training_options'])
    >>> model = svm_train(prob, param)

    有关参数的设置(read me 文件夹中有详细说明):
    Usage: svm-train [options] training_set_file [model_file]
    options:
    -s svm_type : set type of SVM (default 0)#选择哪一种svm
    0 -- C-SVC (multi-class classification)
    1 -- nu-SVC (multi-class classification)
    2 -- one-class SVM
    3 -- epsilon-SVR (regression)
    4 -- nu-SVR (regression)
    -t kernel_type : set type of kernel function (default 2)#是否用kernel trick
    0 -- linear: u'*v
    1 -- polynomial: (gamma*u'*v + coef0)^degree
    2 -- radial basis function: exp(-gamma*|u-v|^2)
    3 -- sigmoid: tanh(gamma*u'*v + coef0)
    4 -- precomputed kernel (kernel values in training_set_file)
    -d degree : set degree in kernel function (default 3)
    -g gamma : set gamma in kernel function (default 1/num_features)
    -r coef0 : set coef0 in kernel function (default 0)
    -c cost : set the parameter C of C-SVC, epsilon-SVR, and nu-SVR (default 1)
    -n nu : set the parameter nu of nu-SVC, one-class SVM, and nu-SVR (default 0.5)
    -p epsilon : set the epsilon in loss function of epsilon-SVR (default 0.1)
    -m cachesize : set cache memory size in MB (default 100)
    -e epsilon : set tolerance of termination criterion (default 0.001)
    -h shrinking : whether to use the shrinking heuristics, 0 or 1 (default 1)
    -b probability_estimates : whether to train a SVC or SVR model for probability estimates, 0 or 1 (default 0)
    -wi weight : set the parameter C of class i to weight*C, for C-SVC (default 1)
    -v n: n-fold cross validation mode
    -q : quiet mode (no outputs)

    三提高预测的准确率:
    通过一定的过程,可以提高预测的准确率(在文献2中有详细介绍):
    a.转换数据为libsvm可用形式.(可以通过下载的数据了解格式)
    b.进行一个简单的尺度变换
    c.利用RBF kernel,利用cross-validation来查找最佳的参数 C 和 r
    d.利用最佳参数C 和 r ,来训练整个数据集
    e.测试

    再看例子1:
    1.进入cmd模式下,输入如下代码,将现有数据进行适度变换,生成变换后的数据文件train.1.scale.txt

    参数说明:
    -l 变换后的下限
    -u 变换后的上限
    -s 参考上文

    2执行以下代码

    import os

    os.chdir('C:\libsvm-3.18\windows')#设定路径
    from svmutil import *

    y, x = svm_read_problem('train.1.scale.txt')#读入训练数据
    yt, xt = svm_read_problem('test.1.scale.txt')#训练测试数据
    m = svm_train(y, x )#训练
    svm_predict(yt,xt,m)#测试

    精确度为Accuracy = 95.6% (3824/4000) (classification)。
    可见我们只是做了简单的尺度变换后,预测的正确率大大提升了。

    3通过选择最优参数,再次提高预测的准确率:(需要把tools文件下的grid.py拷贝到'C:\libsvm-3.18\windows'下)

    import os
    os.chdir('C:\libsvm-3.18\windows')#设定路径
    from svmutil import *
    from grid import *

    rate, param = find_parameters('train.1.scale.txt', '-log2c -3,3,1 -log2g -3,3,1')

    y, x = svm_read_problem('train.1.scale.txt')#读入训练数据
    yt, xt = svm_read_problem('test.1.scale.txt')#训练测试数据
    m = svm_train(y, x ,'-c 2 -g 4')#训练
    p_label,p_acc,p_vals=svm_predict(yt,xt,m)#测试

    执行上面的程序,find_parmaters函数,可以找到对应训练数据较好的参数。后面的log2c,log2g分别设置C和r的搜索范围。搜索机制是以2为底指数搜索,如 –log2c –3 , 3,1 就是参数C,从2^-3,2^-2,2^-1…搜索到2^3.
    搜索到较好参数后,在训练的时候加上参数的设置。
    另外,读者可以自己试试数据集2,3.

    6. 如何加速基于Python的libsvm速度

    if not is_win32: svmtrain_exe = "../svm-train" gnuplot_exe = "/usr/bin/gnuplot" else: gnuplot_exe = "/usr/bin/gnuplot"这一行少了一个TAB键。建设你把所有行前面的空格跟TAB删除后重新打上空格或TAB键。

热点内容
当贝上传应用 发布:2024-11-25 13:01:23 浏览:272
中国联通湖北服务器地址 发布:2024-11-25 13:00:38 浏览:747
访问内网计算机 发布:2024-11-25 12:37:53 浏览:969
苹果文件夹名字大全 发布:2024-11-25 12:28:03 浏览:590
ipad上b站缓存分屏 发布:2024-11-25 12:27:59 浏览:981
数据库日志文件查看 发布:2024-11-25 12:17:28 浏览:48
腾讯视频明明缓存了看不了 发布:2024-11-25 12:08:01 浏览:182
存储区域网络分布 发布:2024-11-25 12:07:12 浏览:389
安卓怎么用汤不热 发布:2024-11-25 11:49:06 浏览:844
java线程调用 发布:2024-11-25 11:42:45 浏览:845