LIMSVM python接口使用说明(1)

1 安装

<span id="1">1</span>
对于linux系统,在github上下载文件,网址:https://github.com/cjlin1/libsvm
在主文件目录下打开terminal,输入sudo make。另外安装gnuplot, 输入sudo apt-get install gnuplot。

2 应用函数

<h2 id="2">
输入>>> from svmutil import *

上述命令导入如下函数

  • svm_train() : 训练一个 SVM model
  • svm_predict() : 预测测试数据
  • svm_read_problem() : 从一个LIBSVM格式的文件读取数据
  • svm_load_model() : 导入一个 LIBSVM model.
  • svm_save_model() : save model to a file.
  • evaluations() : 评价预测结果

2.1 svm_train

<h2 id="3">
有三种方式调用svm_train()

    >>> model = svm_train(y, x [, 'training_options'])
    >>> model = svm_train(prob [, 'training_options'])
    >>> model = svm_train(prob, param)

参数

  • y: 训练标签的一个list/turple(数据类型不必须是int/double)。如:[1,-1]
  • x: 训练样本的list/turple
  • training_options: string
-s svm_type : set type of SVM (default 0)
    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)
    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)

  • prob: 用svm_problem(y, x)创建
  • param: 用svm_parameter('training_options')创建
  • model: 返回的svm_model实例

例子

    >>> prob = svm_problem(y, x)
    >>> param = svm_parameter('-s 3 -c 5 -h 0')
    >>> m = svm_train(y, x, '-c 5')
    >>> m = svm_train(prob, '-t 2 -c 5')
    >>> m = svm_train(prob, param)
    >>> CV_ACC = svm_train(y, x, '-v 3')

2.2 svm_predict

<h2 id="4">

用一个训练好的model预测测试数据,使用:
>>> p_labs, p_acc, p_vals = svm_predict(y, x, model [,'predicting_options'])

参数

  • y: 真值标签的list/tuple。当真值未知时使用$$[0]*len(x) $$

  • x: 预测样本的list/tuple

  • model: an svm_model instance.

  • predicting_options: -b probability_estimates: whether to predict probability estimates, 0 or 1 (default 0); for one-class SVM only 0 is supported

  • p_labels: 预测得到的标签

  • p_acc: a tuple including accuracy (for classification), mean squared error, and squared correlation coefficient (for regression).

  • p_vals: a list of decision values or probability estimates(当'-b 1'被指定时)。如果k是训练数据的类别数,对于decision values来说,每个元素包含预测的$$k(k-1)/2$$个2-类SVM的结果。对分类来说,$$k=1$$是一个特殊情况,对每个测试数据返回decision value [+1],而不是一个空list。

    对于概率来说,每个元素包含k个值,表示测试样本属于个个类的概率。

例子

    >>> p_labels, p_acc, p_vals = svm_predict(y, x, m)

2.3 svm_read_problem/svm_load_model/svm_save_model

<h2 id="5">

    >>> y, x = svm_read_problem('data.txt')
    >>> m = svm_load_model('model_file')
    >>> svm_save_model('model_file', m)

2.4 evaluations

<h2 id="6">
评价分类结果
>>> (ACC, MSE, SCC) = evaluations(ty, pv)

参数

  • ty:真值标签的list
  • pv:预测值的标签
  • ACC:精度
  • MSE:mean squared error.
  • SCC:squared correlation coefficient.
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,045评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,114评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,120评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,902评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,828评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,132评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,590评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,258评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,408评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,335评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,385评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,068评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,660评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,747评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,967评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,406评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,970评论 2 341

推荐阅读更多精彩内容

  • 本文讲使用台湾大学林智仁(Lin Chih-Jen)教授等开发设计开发设计的一个简单、易用的SVM模式识别与回归的...
    Allen3333阅读 30,849评论 1 5
  • 药 (文/亦浓) 浓情 抚慰旧日伤痛 蜜语 掩藏心头煎熬 纯纯相依恋 痴痴盼眷好 多么温暖的依靠 相聚每一分 绕进...
    开在夜里的花儿阅读 296评论 4 7
  • 文/老叟 你总说时间很长、很长 连爱情都习惯性的地老天荒 我总说时间很短、很短 等待一切都海枯石烂 我还想抚摸你的...
    编辑鹿深阅读 164评论 0 2
  • 摘要: 动画效果可以给用户提供流畅的用户体验,在iOS系统中,Core Animation提供了一定的API来实现...
    悟2023阅读 704评论 3 5