libsvm获得决策函数模型(python+手工iris数据集)

少年

  • 一、libsvm的安装
  • 二、基本介绍
  • 三、构建数据集并获得决策模型
  • 四、总结
  • 五、参考

一、libsvm的安装

  • libsvm可以选择主流方式,选择进入官网下载即可,就算不用这个包也需要下载,需要使用一个txt文件构建数据libsvm获得决策函数模型(python+手工iris数据集)_第1张图片

  • 也可以选择下载whl文件,利用pip安装,点这里

二、基本介绍

  • 例子代码
from libsvm.python.svmutil import *
    
y, x = [1,-1], [{
     1:1, 2:1}, {
     1:-1,2:-1}]       # 输入的数据
options = '-t 0 -c 4 -b 1'                     # 训练参数设置
model = svm_train(y,x,options)                 # 进行训练
 
yt = [1]
xt = [{
     1:1, 2:1}]
p_label, p_acc, p_val = svm_predict(yt, xt, model)     # 使用得到的模型进行预测
print(p_label)
  • 例子说明

y: 输入的数据样本对应的标签

  x: 输入的样本的属性值,其中每一个样本的格式是一个字典类型,键值对中键是一个索引值,值是对应的数据属性值

  options: 训练的一些参数设置,主要有以下的一些设置

    -s    SVM的类型(svm_type)

                         0 -- C-SVC(默认)          使用惩罚因子(Cost)的处理噪声的多分类器

                         1 -- nu-SVC(多分类器)           按照错误样本比例处理噪声的多分类器

                         2 -- one-class SVM           一类支持向量机,可参见"SVDD"的相关内容

                         3 -- epsilon-SVR(回归)     epsilon支持向量回归 (也就是使用 E-不敏感损失函数进行回归)

                         4 -- nu-SVR(回归)

    -t   核函数类型(kernel_type)

                        0 -- linear(线性核):             u'*v

                        1 -- polynomial(多项式核):                   (gamma*u'*v + coef0)^degree

                        2 -- radial basis function(RBF,径向基核/高斯核):                 exp(-gamma*|u-v|^2)

                        3 -- sigmoid(S型核):                         tanh(gamma*u'*v + coef0)

                        4 -- precomputed kernel(预计算核):               核矩阵存储在training_set_file中

        下面是调整SVM或核函数中参数的选项:

    -d           调整核函数的degree参数,默认为3

    -g           调整核函数的gamma参数,默认为1/num_features

    -r           调整核函数的coef0参数,默认为0

    -c           调整C-SVC, epsilon-SVR 和 nu-SVR中的Cost参数,默认为1(就是优化问题中的那个C)

    -n           调整nu-SVC, one-class SVM 和 nu-SVR中的错误率nu参数,默认为0.5

    -p           调整epsilon-SVR的loss function中的epsilon参数,默认0.1

    -m           调整内缓冲区大小,以MB为单位,默认100

    -e           调整终止判据,默认0.001

    -wi   调整C-SVC中第i个特征的Cost参数

         调整算法功能的选项:

    -b           是否估算正确概率,取值0 - 1,默认为0

    -h           是否使用收缩启发式算法(shrinking heuristics),取值0 - 1,默认为0

    -v           交叉校验

    -q           静默模式

三、构建数据集并获得决策模型

  • 手工部署数据集,解压刚刚下载的压缩包,进入windows文件夹,打开svmtoy.exe文件libsvm获得决策函数模型(python+手工iris数据集)_第2张图片
  • 在打开的exe点击点类似左边的图一般,弄好了之后点击save保存在txt文件里,最好弄两份,一份用来训练,一份用来检测准确度libsvm获得决策函数模型(python+手工iris数据集)_第3张图片- 文件的格式如下图,第一类时分类,后面的冒号前面的1,2指的是特征libsvm获得决策函数模型(python+手工iris数据集)_第4张图片
  • 先导入包
from libsvm.svmutil import *
from libsvm.svm import *
import scipy.spatial
  • 这里读取数据,svm_read_problem函数的作用是读取刚刚生成的文件并返回合适的格式便于训练
#根据文件路径直接返回要使用的数据格式
label,data= svm_read_problem('..\\source\\iris.txt')#训练数据

p_label,p_data=svm_read_problem('..\\source\\predict.txt')#预测数据
  • 设置训练参数
para ='-t 1 -c 4 -b 1'
'''
-t 
0为线性核
1为多项式核
2为高斯核(默认)
'''
  • 训练并将模型保存在文件里,同时测试准确度
#多项式核
model=svm_train(label,data,para)
svm_save_model('..\\source\\multi.txt',model)
acc=svm_predict(p_label,p_data,model)
  • 文件里的内容
    libsvm获得决策函数模型(python+手工iris数据集)_第5张图片
  • 高斯核也是一样,不过将para的里面-t 对应的值改为2
para ='-t 2 -c 4 -b 1'
'''
-t 
0为线性核
1为多项式核
2为高斯核(默认)
'''
  • 训练并保存模型进文件中
model=svm_train(label,data,para)
svm_save_model('..\\source\\gaosi.txt',model)
acc=svm_predict(p_label,p_data,model)
  • 文件内容,备注与刚刚的一样,这份就不写了
    libsvm获得决策函数模型(python+手工iris数据集)_第6张图片

四、总结

  • libsvm的使用与sklearn里的svm使用一样方便,libsvm对于模型的描述相较于sklearn来说更全面一点,不过使用libsvm需要注意数据的格式

五、参考

libsvm for python 安装
LIBSVM 在 python 环境下的使用

你可能感兴趣的:(ai,c++,opencv,开发语言)