该示例演示了一类SVM分类器 ;它尽可能简单,同时仍显示完整的LIBSVM工作流程。
第1步 :导入NumPy和LIBSVM
import numpy as NP
from svm import *
第2步:生成综合数据:在此示例中,给定边界内有500个点(注意:LIBSVM 网站上提供了很多真实数据集)
Data = NP.random.randint(-5, 5, 1000).reshape(500, 2)
步骤3:现在,为一类分类器选择一些非线性决策边界:
rx = [ (x**2 + y**2) < 9 and 1 or 0 for (x, y) in Data ]
步骤4:接下来,根据此决策边界任意分割数据w / r / t:
I类 :位于任意圆 上或任意圆 内的圆
II类 :决策边界外的所有点(圆形)
SVM模型构建从这里开始;在此之前的所有步骤仅是为了准备一些综合数据。
步骤5 :通过调用svm_problem ,传入决策边界函数和数据 ,构造问题描述 ,然后将此结果绑定到变量。
px = svm_problem(rx, Data)
步骤6:为非线性映射选择一个核函数
对于此示例,我选择了RBF (径向基函数)作为我的内核函数
pm = svm_parameter(kernel_type=RBF)
步骤7:通过调用svm_model训练分类器 ,传入问题描述 (px)和内核 (pm)
v = svm_model(px, pm)
步骤8:最后,通过调用训练后的模型对象('v')上的预测来测试训练后的分类器
v.predict([3, 1])
# returns the class label (either '1' or '0')
对于上面的示例,我使用了LIBSVM 3.0版(发布此答案时的当前稳定版本)。
最后,w / r / t问题的一部分与内核函数的选择有关,支持向量机并不特定于特定的内核函数-例如,我可以选择其他内核(高斯,多项式等)。
LIBSVM包含所有最常用的内核函数-这是一个很大的帮助,因为您可以看到所有可能的替代方案并选择一个在模型中使用的替代方案,只需调用svm_parameter并为kernel_type (所选内核的三个字母的缩写)。
最后,您选择用于训练的内核函数必须与用于测试数据的内核函数匹配。
0
我非常需要在Python中使用LibSVM的分类任务示例。我不知道输入应该是什么样子,哪个函数负责训练,哪个函数负责测试,谢谢