libsvm学习(一)


libsvm学习(一)
2011年12月27日
  (记录下过程,以备使用的时候查阅)
  一、所需三个软件:
   python3.1.2 下载链接:http://www.python.org/ftp/python/3.1.2/
   libsvm2.9 下载链接:http://download.csdn.net/download/phoeni_seu/1857117
   gnuplot软件   下载链接:http://www.mirrorservice.org/sites/download.sourceforge.net/pub/sourceforge/g/project/gn/gnuplot/gnuplot/4.2.3/
  python需要安装,其他两个解压即可使用。当然亦可以选择java、VC环境。
  二、一般过程
  LibSVM   使用的一般步骤是: 
  1  )按照  LIBSVM  软件包所要求的格式准备数据集;                                          
  2  )对数据进行简单的缩放操作;                                         
  3  )首要考虑选用  RBF   核函数; 
  4  )采用交叉验证选择最佳参数  C  与  g   ; 
  5  )采用最佳参数  C  与  g   对整个训练集进行训练获取支持向量机模型; 
  6  )利用获取的模型进行测试与预测。 
  三、注意事项
  1、LibSVM的输入有格式要求,可以按照格式要求编写程序实现,也可以参考http://download.csdn.net/detail/dadaadao/1571409  在excel中直接生成libsvm所用格式数据。
  2、配置
  修改easy.py和grid.py最上方两行有关libsvm、python和gnuplot的路径的代码。其中,svmpath 代表 svmscale.exe、svmtrain.exe 等可执行文件的路径,pythonpath 代表easy.py和grid.py等脚本文件路径,gnuplotpath 代表 pgnuplot.exe 的路径。
  这里,我把easy.py和grid.py复制到\libsvm-2.9\python下,然后修改这两个文件中的路径代码(记得用绝对路径,也可以设置成环境变量后使用相对路径),如下:
  //easy.py修改
  else:
  # example for windows
  svmscale_exe = r"d:\libsvm-2.9\windows\svm-scale.exe"
  svmtrain_exe = r"d:\libsvm-2.9\windows\svm-train.exe"
  svmpredict_exe = r"d:\libsvm-2.9\windows\svm-predict.exe"
  gnuplot_exe = r"d:\gnuplot\bin\pgnuplot.exe"
  grid_py = r"d:\libsvm-2.9\python\grid.py"
  //grid.py修改
  else:
  # example for windows
  svmtrain_exe = r"d:\libsvm-2.9\windows\svm-train.exe"
  gnuplot_exe = r"d:\gnuplot\bin\pgnuplot.exe"
  四、至此环境算是搭好了,下面可以开始进行分类、回归、预测等试验。
  使用时,可以直接使用easy.py,或者手动进行,步骤如下:
  规范化训练样本、交叉验证寻找最合适参数、利用寻找到的参数进行模型训练、规范化测试样本、使用模型进行分类预测。
  刚开始接触,直接使用easy.py执行,
  命令行为:
  cmd
  cd d:\python31
  python d:\libsm-2.9\python\easy.py  d:\libsm-2.9\python\heart_scale
  回车执行,dos运行结果
  Scaling training data...
  Cross validation...
  Best c=2048.0, g=0.0001220703125 CV rate=84.0741
  Training...
  Output model: heart_scale.model
  执行后可以得到相应的结果,结果保存在python31目录下,产生了5个新文件train.libsvm.model(预测模型)、train.libsvm.range(缩放规则)、train.libsvm.scale(缩放结果)、train.libsvm.scale.out(规范化结果)、train.libsvm.scale.png(寻参图示)。
  解释下.modle中训练结果头部几个字段,
  svm_typec_svc                    // 所选择的 svm 类型,默认为 c_svc
  kernel_typerbf                      // 训练采用的核函数类型,此处为 RBF 核
  gamma0.000122071                  //RBF 核的参数 γ
  nr_class2                              // 类别数,此处为两分类问题
  total_sv103                         // 支持向量总个数
  rho1.61698                         // 判决函数的偏置项 b
  label 1-1                                // 原始文件中的类别标识
  nr_sv 51 52                          // 每个类的支持向量机的个数
  SV                                         // 以下为各个类的权系数及相应的支持向量
            ...........
  五、学习情况(待续)
  
  

猜你喜欢

转载自bos274km.iteye.com/blog/1357903