libsvm学习之第一次预测一个模型

接上一回文件解压至D:\svm_tools\libsvm-3.31。 路径随着自己的喜好

环境准备
尝试前的准备
如上图所示,在使用libsvm的时候 需要提前准备好的环境 python与gnuplot。

首先准备数据集,因为原来的libsvm当中已经有一个heart_scale数据集。可以直接拿来使用测试。那我这里为了从无到有就直接去UCI 里面获取,一个新的数据集

访问地址:http://archive.ics.uci.edu/ml/index.php
machine learning
UCI是符合机器学习算法的一个数据集,感兴趣的可以去百度

在这里我们取iris的数据集,
iris
点上一步,进入下一步
在这里插入图片描述
直接下载
data

准备好数据集之后。因为直接下载的数据还不能直接用来分类,我们打开数据集看看
iris数据集
libSVM的数据格式 前面四项是属性,最后一项是分类标签。svm当中用数字来替代。

Label 1:value 2:value ….

Label:是类别的标识,比如train.model中提到的1 -1,你可以自己随意定,比如-10,0,15。当然,如果是回归,这是目标值,就要实事求是了。

Value:就是要训练的数据,从分类的角度来说就是特征值,数据之间用空格隔开

打开excel 进行标签替换,Iris-setosa换成1、Iris-versicolor换成2、Iris-virginica换成3.
然后进行数据整理,教程有很多百度即可。
整理数据
以上数据工作准备完成之后。可以进入 D:\svm_tools\libsvm-3.31\tools 路径(根据自己的安装路径)
使用checkdata.py 来检验数据

在这里插入图片描述
数据表示没有问题

进入正题
svmscale的用法

svmscale是用来对原始样本进行缩放的,范围可以自己定,一般是[0,1]或[-1,1]。缩放的目的主要是

1)防止某个特征过大或过小,从而在训练中起的作用不平衡;

2)为了计算速度。因为在核计算中,会用到内积运算或exp运算,不平衡的数据可能造成计算困难。

用法:svmscale [-l lower] [-u upper]

                     [-y y_lower y_upper]

                     [-s save_filename]

                     [-r restore_filename] filename

其中,[]中都是可选项:

     -l:设定数据下限;lower:设定的数据下限值,缺省为-1

     -u:设定数据上限;upper:设定的数据上限值,缺省为 1

     -y:是否对目标值同时进行缩放;y_lower为下限值,y_upper为上限值;

     -s save_filename:表示将缩放的规则保存为文件save_filename;

     -r restore_filename:表示将按照已经存在的规则文件restore_filename进行缩放;

     filename:待缩放的数据文件,文件格式按照libsvm格式。

svm-scale.exe iris > iris_out

默认情况下,只需要输入要缩放的文件名就可以了:

   ![在这里插入图片描述](https://img-blog.csdnimg.cn/128d8c766a17458ab5b90463715f6422.png)

这时生成归一化的数据集
回到D:\svm_tools\libsvm-3.31\tools
使用 subset.py 进行一个数据的分类
在这里插入图片描述
Usage: subset.py [options] dataset number [output1] [output2]

This script selects a subset of the given data set.

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

output1 : the subset (optional)
output2 : the rest of data (optional)

If output1 is omitted, the subset will be printed on the screen.

在这里插入图片描述
生成两个数据

进行训练集的一个模型
svm-train.exe trainData trainData.model

      trainData ——是目录下的已经存在的样本文件,要换成自己的文件,只需改成自己的文件名就可以了

     train.model ——是创建的结果文件,保存了训练后的结果

在这里插入图片描述
其中,#iter为迭代次数,nu 是你选择的核函数类型的参数,obj为SVM文件转换为的二次规划求解得到的最小值,rho为判决函数的偏置项b,nSV 为标准支持向量个数(0<a[i]<c),nBSV为边界上的支持向量个数(a[i]=c),Total nSV为支持向量总个数(对于两类来说,因为只有一个分类模型Total nSV = nSV,但是对于多类,这个是各个分类模型的nSV之和)。

在目录下,还可以看到产生了一个train.model文件,可以用notepad++打开,记录了训练后的结果。
在这里插入图片描述
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                                          //以下为各个类的权系数及相应的支持向量

到现在,已经构建了一个模型,下一节继续讲解怎么玩测试。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值