Ⅰ-LIVSVM是什么
LIBSVM – A Library for Support Vector Machines Chih-Chung Chang and Chih-Jen Lin LIBSVM是台湾大学林智仁教授等开发设计的一个简单、易于使用和快速有效的SVM模式识别与回归的软件包。
Ⅱ-使用LIBSVM生成数据集
1.启动LIBSVM 解压好的libsvm目录下找到windows文件夹 2.鼠标左键单击手动绘制点 3.再绘制不同颜色的另一组 4.保存做为训练集,同理设置测试集
Ⅲ-使用LIBSVM求决策函数
libsvm用法:svm-train [options] training_set_file [model_file] options: -s svm_type:设定SVM类型(默认为0) 0 – C-SVC (多类分类) 1 – nu-SVC (多类分类) 2 – one-class SVM 3 – epsilon-SVR (回归) 4 – nu-SVR (回归) -t kernel_type:设定核函数类型(默认为2) 0 – linear: u’v 线性核函数 1 – polynomial: (gammau’v + coef0)^degree 多项式核函数 2 – radial basis function: exp(-gamma|u-v|^2) 径向基函数 3 – sigmoid: tanh(gamma*u’v + coef0) sigmoid核函数 4 – precomputed kernel (kernel values in training_set_file) 自定义核函数 -d degree:设定核函数的 degree 值(默认为 3) -g gamma:设定核函数的 gamma 值(默认为 1/k) -r coef0:设定核函数的 coef0 值(默认为 0) -c cost:设定 C-SVC,epsilon-SVR,nu-SVR 的参数惩罚因子C值(默认为 1) -n nu:设定 nu-SVC,one-class SVM,nu-SVR 的参数nu值(默认为 0.5) -p epsilon:设定 epsilon-SVR 的损失函数中的 epsilon 值(默认为 0.1) -m cachesize:设定缓存大小,以 MB 为单位(默认为 100) -e epsilon:设定终止条件的允差(默认为 0.001) -h shrinking:是否使用 shrinking heuristics(PS:这玩意太不好翻译),0 或 1(默认为 1) -b probability_estimates:是否训练一个 SVC 或 SVR 模型做概率估计,0或1(默认为 0) -wi weight : 对于 C-SVC,设定 i 类的参数 C 为 weightC(默认为1) -v n:n-折交叉验证模式 -q :退出模式(无输出) -g 选项中的的 k 为输入数据的属性数量。 -v 选项随机截取数据为 n 个部分,计算它们的交叉验证的精度或者均方误差。
线性核
from libsvm.svmutil import *
from libsvm.svm import *
import scipy.spatial
label,data= svm_read_problem('E:/P_R_O_J/FOLDER/libsvm-3.25/new/train.txt')
p_label,p_data=svm_read_problem('E:/P_R_O_J/FOLDER/libsvm-3.25/new/test.txt')
para ='-t 0 -c 4 -b 1'
model=svm_train(label,data,para)
svm_save_model('E:/P_R_O_J/FOLDER/libsvm-3.25/new/model1.txt',model)
acc=svm_predict(p_label,p_data,model)
多项式核
只需将-t 0改成1
from libsvm.svmutil import *
from libsvm.svm import *
import scipy.spatial
label,data= svm_read_problem('E:/P_R_O_J/FOLDER/libsvm-3.25/new/train.txt')
p_label,p_data=svm_read_problem('E:/P_R_O_J/FOLDER/libsvm-3.25/new/test.txt')
para ='-t 1 -c 4 -b 1'
model=svm_train(label,data,para)
svm_save_model('E:/P_R_O_J/FOLDER/libsvm-3.25/new/model2.txt',model)
acc=svm_predict(p_label,p_data,model)
高斯核
只需1改成2
from libsvm.svmutil import *
from libsvm.svm import *
import scipy.spatial
label,data= svm_read_problem('E:/P_R_O_J/FOLDER/libsvm-3.25/new/train.txt')
p_label,p_data=svm_read_problem('E:/P_R_O_J/FOLDER/libsvm-3.25/new/test.txt')
para ='-t 2 -c 4 -b 1'
model=svm_train(label,data,para)
svm_save_model('E:/P_R_O_J/FOLDER/libsvm-3.25/new/model3.txt',model)
acc=svm_predict(p_label,p_data,model)
小结
此次使用libsvm,对数据进行了处理。
链接: 译 libsvm-3.12中的 README(一)
|