当前位置:网站首页>【无标题】
【无标题】
2022-07-06 19:49:00 【weixin_41958486】
使用LibSVM
LibSVM的使用非常简单,只需调用有限的接口
示例1:
from libsvm.python.svmutil import *
from libsvm.python.svm import *
y, x = [1,-1], [{1:1, 2:1}, {1:-1,2:-1}]
prob = svm_problem(y, x)
param = svm_parameter('-t 0 -c 4 -b 1')
model = svm_train(prob, param)
yt = [1]
xt = [{1:1, 2:1}]
p_label, p_acc, p_val = svm_predict(yt, xt, model)
print(p_label)输出结果:
optimization finished, #iter = 1
nu = 0.062500
obj = -0.250000, rho = 0.000000
nSV = 2, nBSV = 0
Total nSV = 2
test:
Model supports probability estimates, but disabled in predicton.
Accuracy = 100% (1/1) (classification)
[1.0]在SVM数据中下载train1.txt和test1.txt。
LibSVM可以在文件中读取训练数据,这样便于大规模数据的使用。
示例:
from libsvm.python.svmutil import *
from libsvm.python.svm import *
y, x = svm_read_problem('train1.txt')
yt, xt = svm_read_problem('test1.txt')
model = svm_train(y, x )
print('test:')
p_label, p_acc, p_val = svm_predict(yt[200:202], xt[200:202], model)
print(p_label)可以看到输出:
optimization finished, #iter = 5371
nu = 0.606150
obj = -1061.528918, rho = -0.495266
nSV = 3053, nBSV = 722
Total nSV = 3053
test:
Accuracy = 40.809% (907/2225) (classification)LibSVM接口
训练数据格式
libsvm的训练数据格式如下:
<label> <index1>:<value1> <index2>:<value2> ...
示例:
1 1:2.927699e+01 2:1.072510e+02 3:1.149632e-01 4:1.077885e+02
主要类型
svm_problem
保存定义SVM模型的训练数据
svm_parameter
存储训练SVM模型所需的各种参数
svm_model
完成训练的SVM模型
svm_node
模型中一个特征的值,只包含一个整数索引和一个浮点值属性。
主要接口:
-svm_problem(y, x)
由训练数据y,x创建svm_problem对象
svm_train()
svm_train有3个重载:
model = svm_train(y, x [, 'training_options'])model = svm_train(prob [, 'training_options'])model = svm_train(prob, param)
用于训练svm_model模型
- `svm_parameter(cmd)
创建svm_parameter对象,参数为字符串。
示例:
param = svm_parameter('-t 0 -c 4 -b 1')svm_predict()
调用语法:
p_labs, p_acc, p_vals = svm_predict(y, x, model [,'predicting_options'])参数:
y 测试数据的标签
x 测试数据的输入向量
model为训练好的SVM模型。
返回值:
p_labs是存储预测标签的列表。
p_acc存储了预测的精确度,均值和回归的平方相关系数。
p_vals在指定参数'-b 1'时将返回判定系数(判定的可靠程度)。
这个函数不仅是测试用的接口,也是应用状态下进行分类的接口。比较奇葩的是需要输入测试标签y才能进行预测,因为y不影响预测结果可以用0向量代替。
svm_read_problem
读取LibSVM格式的训练数据:
y, x = svm_read_problem('data.txt')svm_save_model
将训练好的svm_model存储到文件中:
svm_save_model('model_file', model)
model_file的内容:
svm_type c_svc
kernel_type linear
nr_class 2
total_sv 2
rho 0
label 1 -1
probA 0.693147
probB 2.3919e-16
nr_sv 1 1
SV
0.25 1:1 2:1
-0.25 1:-1 2:-1svm_load_model
读取存储在文件中的svm_model:
model = svm_load_model('model_file')调整SVM参数
LibSVM在训练和预测过程中需要一系列参数来调整控制。
svm_train的参数:
-sSVM的类型(svm_type)0 -- C-SVC(默认)
使用惩罚因子(Cost)的处理噪声的多分类器
1 -- nu-SVC(多分类器)
按照错误样本比例处理噪声的多分类器
2 -- one-class SVM
一类支持向量机,可参见"SVDD"的相关内容
3 -- epsilon-SVR(回归)
epsilon支持向量回归
4 -- nu-SVR(回归)
-t核函数类型(kernel_type)0 -- linear(线性核):
u'*v1 -- polynomial(多项式核):
(gamma*u'*v + coef0)^degree2 -- 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-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静默模式
Matlab
LibSVM的Matlab接口用法类似,Matlab丰富的标准工具箱提供了各种方便。
Statistic Tools工具箱提供了svmtrain和svmclassify函数进行SVM分类。
traindata = [0 1; -1 0; 2 2; 3 3; -2 -1;-4.5 -4; 2 -1; -1 -3];
group = [1 1 -1 -1 1 1 -1 -1]';
testdata = [5 2;3 1;-4 -3];
svm_struct = svmtrain(traindata,group);
Group = svmclassify(svm_struct,testdata);svmtrain接受traindata和group两个参数,traindata以一行表示一个样本,group是与traindata中样本对应的分类结果,用1和-1表示。
svmtrain返回一个存储了训练好的svm所需的参数的结构体svm_struct。
svmclassify接受svm_struct和以一行表示一个样本的testdata,并以1和-1列向量的形式返回分类结果。
Add SVDD to svm module #
边栏推荐
- Oauth2协议中如何对accessToken进行校验
- Redis getting started complete tutorial: replication configuration
- 2022 information security engineer examination outline
- 【2022国赛模拟】多边形——计算几何、二分答案、倍增
- 杰理之FM 模式单声道或立体声选择设置【篇】
- 2022年信息安全工程师考试大纲
- [2022 national tournament simulation] polygon - computational geometry, binary answer, multiplication
- Detailed explanation of 19 dimensional integrated navigation module sinsgps in psins (filtering part)
- [socket] ① overview of socket technology
- Unity uses maskablegraphic to draw a line with an arrow
猜你喜欢

Change your posture to do operation and maintenance! GOPs 2022 Shenzhen station highlights first!

从零安装Redis

ERROR: Could not find a version that satisfies the requirement xxxxx (from versions: none)解决办法

Unity使用MaskableGraphic画一条带箭头的线

【基于 RT-Thread Studio的CPK-RA6M4 开发板环境搭建】

Left value, right value

How to analyze fans' interests?

Redis Getting started tutoriel complet: positionnement et optimisation des problèmes

杰理之在非蓝牙模式下,手机连接蓝牙不要跳回蓝牙模式处理方法【篇】

Utilisation de la promesse dans es6
随机推荐
杰理之发射端在接收端关机之后假死机【篇】
A complete tutorial for getting started with redis: problem location and optimization
从零安装Redis
「小样本深度学习图像识别」最新2022综述
Software testing -- common assertions of JMeter interface testing
Leetcode 77: combination
Development of wireless communication technology, cv5200 long-distance WiFi module, UAV WiFi image transmission application
新标杆!智慧化社会治理
mos管實現主副電源自動切換電路,並且“零”壓降,靜態電流20uA
unrecognized selector sent to instance 0x10b34e810
Redis入門完整教程:問題定比特與優化
Intelligent static presence detection scheme, 5.8G radar sensing technology, human presence inductive radar application
又一百万量子比特!以色列光量子初创公司完成1500万美元融资
MySQL is an optimization artifact to improve the efficiency of massive data query
Metaforce force meta universe fossage 2.0 smart contract system development (source code deployment)
netperf 而网络性能测量
杰理之FM 模式单声道或立体声选择设置【篇】
房费制——登录优化
IDEA重启后无法创建Servlet文件的解决方案
掘金量化:通过history方法获取数据,和新浪财经,雪球同用等比复权因子。不同于同花顺