Hos*_*ein 24 python machine-learning svm libsvm
我迫切需要在python中使用LibSVM的分类任务示例.我不知道输入应该是什么样的,哪个功能负责培训,哪个功能用于测试谢谢
Shi*_*oir 24
这里列出的代码示例不适用于LibSVM 3.1,所以我或多或少地通过mossplix移植了这个示例:
from svmutil import *
svm_model.predict = lambda self, x: svm_predict([0], [x], self)[0][0]
prob = svm_problem([1,-1], [[1,0,1], [-1,0,-1]])
param = svm_parameter()
param.kernel_type = LINEAR
param.C = 10
m=svm_train(prob, param)
m.predict([1,1,1])
Run Code Online (Sandbox Code Playgroud)
dou*_*oug 20
这个例子演示了一个单类SVM分类器 ; 它仍然显示完整的LIBSVM工作流程,尽可能简单.
第1步:导入NumPy和LIBSVM
import numpy as NP
from svm import *
Run Code Online (Sandbox Code Playgroud)
第2步:生成合成数据:对于此示例,给定边界内的500个点(注意:LIBSVM网站上提供了相当多的实际数据集)
Data = NP.random.randint(-5, 5, 1000).reshape(500, 2)
Run Code Online (Sandbox Code Playgroud)
第3步:现在,为一类分类器选择一些非线性决策边界:
rx = [ (x**2 + y**2) < 9 and 1 or 0 for (x, y) in Data ]
Run Code Online (Sandbox Code Playgroud)
步骤4:接下来,任意划分数据w/r/t这个决策边界:
I类:那些位于上或内的任意的圆
第二类:决策边界以外的所有点(圆圈)
SVM模型构建从这里开始; 在此之前的所有步骤只是为了准备一些合成数据.
步骤5:通过调用 svm_problem构建问题描述,传入决策边界函数和数据,然后将此结果绑定到变量.
px = svm_problem(rx, Data)
Run Code Online (Sandbox Code Playgroud)
步骤6:为非线性映射选择内核函数
对于这个例子,我选择了RBF(径向基函数)作为我的核函数
pm = svm_parameter(kernel_type=RBF)
Run Code Online (Sandbox Code Playgroud)
步骤7:通过调用 svm_model训练分类器,传入问题描述(px)和内核(pm)
v = svm_model(px, pm)
Run Code Online (Sandbox Code Playgroud)
步骤8:最后,通过在训练的模型对象('v')上调用预测来测试训练的分类器
v.predict([3, 1])
# returns the class label (either '1' or '0')
Run Code Online (Sandbox Code Playgroud)
对于上面的示例,我使用了3.0版本的LIBSVM(此答案发布时的当前稳定版本).
最后,w/r/t关于内核函数选择的问题部分,支持向量机并不特定于特定的内核函数 - 例如,我可以选择不同的内核(高斯,多项式等).
LIBSVM包括所有最常用的内核函数-这是一个很大的帮助,因为你可以看到所有可行的替代品,并选择一个为模型中使用,只需要调用的事svm_parameter和值传递的kernel_type(一所选内核的三字母缩写).
最后,您选择用于训练的内核函数必须与用于测试数据的内核函数相匹配.
mos*_*lix 13
LIBSVM从包含两个列表的元组中读取数据.第一个列表包含类,第二个列表包含输入数据.创建具有两个可能类的简单数据集,您还需要通过创建svm_parameter来指定要使用的内核.
>> from libsvm import *
>> prob = svm_problem([1,-1],[[1,0,1],[-1,0,-1]])
>> param = svm_parameter(kernel_type = LINEAR, C = 10)
## training the model
>> m = svm_model(prob, param)
#testing the model
>> m.predict([1, 1, 1])
| 归档时间: |
|
| 查看次数: |
42460 次 |
| 最近记录: |