一,LIBSVM的安装
  1,下载安装包
下载网站:http://www.csie.ntu.edu.tw/~cjlin/libsvm/oldfiles/
     http://www.csie.ntu.edu.tw/~cjlin/libsvm/
LIBSVM的安装与使用(Python)
最新版本3.23,下载后解压。
  2,测试libsvm是否可用(Python)

#测试代码:(注意libsvm-3.23/python路径)
import sys
path='C:/Users/Administrator/libsvm-3.23/python'
sys.path.append(path)
from svmutil import *
train_label,train_pixel = svm_read_problem('../heart_scale')
model = svm_train(train_label[:200],train_pixel[:200],'-c 4')
print("result:")
p_label, p_acc, p_val = svm_predict(train_label[200:], train_pixel[200:], model);
print(p_acc)

LIBSVM的安装与使用(Python)
  二,libsvm的使用
  1,数据预处理
  在数据预处理阶段,需要将数据集转化为libsvm要求的格式,通常的原始数据集格式为:
value1 value2 value3… label
 1   2  3     1
 1   2  3     -1
  而libsvm要求格式为:
label 1:value1 2:value2 3:value3 …
 1   1:1   2:2    3:3
 -1  1:1   2:2    3:3

  实现上述转换,简单的方法是利用 FormatDataLibsvm.xls
  (1).xls格式->libsvm格式的转换
  Step1: 运行FormatDataLibsvm.xls(注意这时会有一个关于“宏已禁宏”的安全警示,点击“选项”,选择“启用此内容”,确定即可);
  Step2: 打开data.xls,(注:直接将数据粘贴到sheet1的topleft单元)
  Step3: “工具”–>“宏”–>执行下面有一个选项  (FormatDatatoLibsvm)–>执行,要选中这个然后点击“运行”
等数据转换完成后,将该文件保存为.txt文件。这时数据转换的问题就解决了。
  (2).txt格式->libsvm格式的转换
  这里所提的.txt文本数据是指数据文件带有逗号、空格、顿号、分号等数据分离符号的数据文件。因为其用符号来分离,导致所有数据项都归类为一个属性,无法实现上面2步骤的格式输入,也就无法实现正确结果格式的输出了。
  Step1: 运行FormatDataLibsvm.xls数据导入文本文件
  Step2: 根据data.txt文件本身的数据特点选择“原始数据类型(分隔符号)”
  Step3: 选择“列数据格式”(常规)->完成
重复(1).xls格式->libsvm格式的转换里面的步骤操作即可。
  2,个人数据(Python)

import sys
path='C:/Users/Administrator/libsvm-3.23/python'
sys.path.append(path)

from svmutil import *
train_label,train_pixel = svm_read_problem('C:/Users/Administrator/Desktop/Data1.txt')
practical_label,predict_pixel = svm_read_problem('C:/Users/Administrator/Desktop/Data1.txt')
model = svm_train(train_label,train_pixel,'-s 0 -t 2 -c 1 -g 0.8)
print("result:")
p_label, p_acc, p_val = svm_predict(practical_label, predict_pixel, model);
print(p_acc)
print(practical_label)
print(p_label)

  在libsvm-3.23的python文件夹下主要包括了两个文件svm.py和svmutil.py。svm.py接口主要包括了一些low-level的应用。在svm.py中采用了 python内置的ctypes库,由此python可以直接访问svm.h中定义的C结构和接口函数。svm.py主要运用了四个数据结构 svm_node, svm_problem, svm_parameter和svm_model。svmutil.py接口主要包括了high-level的函数,如下:
svm_read_problem() : read the data from a LIBSVM-format file.
svm_train()    : train an SVM model
svm_predict() : predict testing data
svm_load_model() : load a LIBSVM model.
svm_save_model() : save model to a file.
evaluations()    : evaluate prediction results.
3,svm_train()参数
-s 分类回归选择
-t 核函数类型
-c 惩罚系数
-g 核函数里面的一个参数
options:
-s svm_type : set type of SVM (default 0)
0 – C-SVC (multi-class classification)
1 – nu-SVC (multi-class classification)
2 – one-class SVM
3 – epsilon-SVR (regression)
4 – nu-SVR (regression)
LIBSVM的安装与使用(Python)
-t kernel_type : set type of kernel function (default 2)
0 – linear: u’v
1 – polynomial: (gamma
u’v + coef0)^degree
2 – radial basis function: exp(-gamma
|u-v|^2)
3 – sigmoid: tanh(gamma*u’*v + coef0)
4 – precomputed kernel (kernel values in training_set_file)
LIBSVM的安装与使用(Python)
-c cost : set the parameter C of C-SVC, epsilon-SVR, and nu-SVR (default 1)
-g gamma : set gamma in kernel function (default 1/num_features)

相关文章: