libsvm和liblinear的使用总结

0.安装方法

unix系统下的安装方法:到官网下载源包(目前最新版本为libsvm-3.20、liblinear-1.96),解压后,打开终端进入makefile所在的目录,键入make即可。

以下为一些基本的使用命令,ubuntu系统下。


1.生成符合要求的数据格式,以图像数据为例

  1. 从图像库得到csv文件 (csv文件里每一行存储一张图:label,feat1,feat2,…..),在终端下键入:

    python gen_datafile.py
    

    注:gen_datafile.py是我自己写的一个python脚本,放在我的github

  2. 生成可执行文件 a.out,在终端下键入:
    gcc convert.c
    
  3. 用上面得到的csv文件和a.out文件生成libsvm格式的文件, 在终端下键入:
    ./a.out csvfile > targetfile
    

    注:targetfile是存放最终数据的文件。


2.训练模型的命令

在终端下切换到目录liblinear-1.96或libsvm-3.20,然后键入以下命令,会提示具体用法:

./svm-train (liblinear为./train)
./svm-predict (liblinear为./predict)
./svm-scale (数据缩放)

3.tools中easy.py的使用

easy.py是一条龙服务,从data scaling到参数选取都帮你做。

需要先安装gnuplot,安装命令:

sudo apt-get install gnuplot-x11

之后键入:

python easy.py training_file [testing_file]

4.tools中grid.py的使用:

grid.py用于自动搜索参数。用法,在终端下键入:

pyhton grid.py [grid_options] [svm_options] dataset

要查看options的具体信息,可以先不带参数地键入 pyhton grid.py,这是libsvm的通用方法。


5.tools中subset.py的使用

subset.py用于分割数据集。用法:

Usage: subset.py [options] dataset subset_size [output1] [output2]

This script randomly selects a subset of the dataset.

options:
-s method : method of selection (default 0)
     0 -- stratified selection (classification only)
     1 -- random selection

例如要随机选取dataset中的2000个样本作为trainset,剩下的作为testset,则键人:

python subset.py  dataset 2000 trainset testset

6.tools中checkdata.py的使用

checkdata.py检查数据格式符不符合要求。键入:

python checkdata.py dataset

7.其他:

  • 使用交叉验证是不能生成model文件的?(我使用过程中发现不能,不知道是不是真的不能)
  • 训练完的结果解读(选自网友博文):
    optimization finished, #iter = 162
    
    nu = 0.431029
    
    obj = -100.877288, rho = 0.424462
    
    nSV = 132, nBSV = 107
    
    Total nSV = 132
    
      其中,#iter为迭代次数,nu 是你选择的核函数类型的参数,obj为SVM文件转换为的二次规划求解得到的最小值,rho为判决函数的偏置项b,nSV 为标准支持向量个数(0<a[i]<c),nBSV为边界上的支持向量个数(a[i]=c),Total nSV为支持向量总个数(对于两类来说,因为只有一个分类模型Total nSV = nSV,但是对于多类,这个是各个分类模型的nSV之和)。
    
      在目录下,还可以看到产生了一个train.model文件,可以用记事本打开,记录了训练后的结果。
    
          svm_type c_svc                     //所选择的svm类型,默认为c_svc
    
          kernel_type rbf                       //训练采用的核函数类型,此处为RBF核
    
          gamma 0.0769231                   //RBF核的参数γ
    
          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 … 10:-0.903226 11:-1 12:-1 13:1
    
       0.5104832128985164 1:0.125 2:1 3:0.333333 … 10:-0.806452 12:-0.333333 13:0.5
    
       ………..
    
       -1 1:-0.375 2:1 3:-0.333333…. 10:-1 11:-1 12:-1 13:1
    
        -1 1:0.166667 2:1 3:1 …. 10:-0.870968 12:-1 13:0.5
    
时间: 2025-01-08 14:57:43

libsvm和liblinear的使用总结的相关文章

LIBSVM与LIBLINEAR

原文: http://orangeprince.info/2014/11/23/libsvm-liblinear-2/ http://orangeprince.info/2014/11/22/libsvm-liblinear-1/ LIBSVM与LIBLINEAR(一) 在过去的十几年里,支持向量机(Support Vector Machines)应该算得上是机器学习领域影响力最大的算法了.而在SVM算法的各种实现工具中,由国立台湾大学林智仁老师开发的工具包LIBSVM,又无疑是影响力最大的.2

LibLinear(SVM包)的MATLAB安装

LibLinear(SVM包)的MATLAB安装 1 LIBSVM介绍 LIBSVM是众所周知的支持向量机分类工具包(一些支持向量机(SVM)的开源代码库的链接及其简介),运用方便简单,其中的核函数(常用核函数-Kernel Function)可以自己定义也可以默认.但是对一些大数据来说,有没有非线性映射,他们的性能差不多.如果不使用核,我们可以用线性分类或者回归来训练一个更大的数据集.这些数据往往具有非常高维的特征,例如文本分类Document classification.所以LIBSVM就

LibLinear(SVM包)使用说明之(一)README

LibLinear(SVM包)使用说明之(一)README LibLinear(SVM包)使用说明之(一)README [email protected] http://blog.csdn.net/zouxy09 本文主要是翻译liblinear-1.93版本的README文件.里面介绍了liblinear的详细使用方法.更多信息请参考: http://www.csie.ntu.edu.tw/~cjlin/liblinear/ 在这里我用到的是LibLinear的Matlab接口,这个在下一博文

在weka中添加libSVM或者HMM等新算法

转:http://kasy-13.blog.163.com/blog/static/8214691420143226365887/ Weka的全名是怀卡托智能分析环境(Waikato Environment for Knowledge Analysis),是一款免费的,非商业化(与之对应的是SPSS公司商业数据挖掘产品--Clementine )的,基于JAVA环境下开源的机器学习(machine learning)以及数据挖掘(data minining)软件.它和它的源代码可在其官方网站(h

Support Vector Machines for classification

Support Vector Machines for classification To whet your appetite for support vector machines, here’s a quote from machine learning researcher Andrew Ng: “SVMs are among the best (and many believe are indeed the best) ‘off-the-shelf’ supervised learni

推荐系统——(一)经典论文文献及业界应用

转: http://www.360doc.com/content/14/0315/11/14268060_360747574.shtml http://semocean.com/%E6%8E%A8%E8%8D%90%E7%B3%BB%E7%BB%9F%E7%BB%8F%E5%85%B8%E8%AE%BA%E6%96%87%E6%96%87%E7%8C%AE%E5%8F%8A%E8%B5%84%E6%96%99/ 列了一些之前设计开发百度关键词搜索推荐引擎时, 参考过的论文, 书籍, 以及调研过的

TOP 10开源的推荐系统简介

最近这两年推荐系统特别火,本文搜集整理了一些比较好的开源推荐系统,即有轻量级的适用于做研究的SVDFeature.LibMF.LibFM等,也有重量级的适用于工业系统的 Mahout.Oryx.EasyRecd等,供大家参考.PS:这里的top 10仅代表个人观点. #1.SVDFeature 主页:http://svdfeature.apexlab.org/wiki/Main_Page 语言:C++一个feature-based协同过滤和排序工具,由上海交大Apex实验室开发,代码质量较高.在

改写libsvmread读取多标记数据集

在libsvm和liblinear软件包里有一个C函数叫libsvmread,这个函数的作用是把如下格式的文本文件\begin{align*} 1 & \ \ *:* \ \ *:* \\ -1 & \ \ *:* \ \ *:* \end{align*}读取进MATLAB,将第一列的$1,-1$串存成一个类标记向量,之后的特征存成矩阵. 但是有一些多标记数据集是保存成如下格式的\begin{align*} 1,3,6 & \ \ *:* \ \ *:* \\ 0,3,8 &

开源的推荐系统

我收集和整理的目前互联网上所能找到的知名开源推荐系统(open source project for recommendation system),并附上了个人的一些简单点评(未必全面准确), 这方面的中文资料很少见,希望对国内的朋友了解掌握推荐系统有帮助 陈运文 SVDFeature 由上海交大的同学开发的,C++语言,代码质量很高 .去年我们参加KDD竞赛时用过,非常好用,而且出自咱们国人之手,所以置顶推荐! 项目地址: http://svdfeature.apexlab.org/wiki/