SVM-python libsvm解读

关于libSVM的一些总结 libsvm相关参数 阅读详情

基础实验见前一篇博文: SVM– pycharm中libsvm基础实验 

参考文献:LibSVM for Python 使用

使用LibSVM

LibSVM的使用非常简单,只需调用有限的接口

示例1:

from libsvm322.python.svmutil import *
from libsvm322.python.svmutil import *
    
y, x =[1,-1],[{1:1,2:2},{1:1,2:0}]
prob  = svm_problem(y, x)
param = svm_parameter('-t 0 -c 4 -b 1')
model = svm_train(prob, param)
yt = [1]
xt = [{1:2,2:3}]
p_label, p_acc, p_val = svm_predict(yt, xt, model)
print(p_label)

输出结果:

*
optimization finished, #iter = 1
nu = 0.125000
obj = -0.500000, rho = 1.000000
nSV = 2, nBSV = 0
Total nSV = 2
Model supports probability estimates, but disabled in predicton.
Accuracy = 100% (1/1) (classification)
[1.0]

LibSVM可以在文件中使用svm_read_problem读取训练数据,这样便于大规模数据的使用。

示例见上一篇博文SVM– pycharm中libsvm基础实验 中实验:

y,x = svm_read_problem('D:\javaTools\code\MachineLearning\libsvm-3.22\heart_scale')
m = svm_train(y[:200], x[:200], '-c 4')
print '----------------'
lable, acc, val = svm_predict(y[200:], x[200:], m)

可以看到输出:

optimization finished, #iter = 257
nu = 0.351161obj = -225.628984, 
rho = 0.636110nSV = 91, 
nBSV = 49Total nSV = 91
----------------
Accuracy = 84.2857% (59/70) (classification)

LibSVM接口

训练数据格式

libsvm的训练数据格式如下:

<label> <index1>:<value1> <index2>:<value2> ...

或:

<label> <value1> <index2> ...

主要类型

  • 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模型

如:

>>>y2,x2=[1,-1],[[1,2],[2,3]]
>>>model2=svm_train(y2,x2)
*optimization finished, #iter = 1
nu = 1.000000obj = -1.367879, rho = 0.000000
nSV = 2, nBSV = 2Total nSV = 2
>>> yt2,xt2=[1,1],[[1,2],[2,3]]         
>>> v1,v2,v3=svm_predict(yt2,xt2,model2)
Accuracy = 50% (1/2) (classification)

  • 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:-1 
  • svm_load_model

读取存储在文件中的svm_model:

 model = svm_load_model('model_file')

调整SVM参数

LibSVM在训练和预测过程中需要一系列参数来调整控制。

svm_train的参数:

  • -s SVM的类型(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'*v

    • 1 -- polynomial(多项式核):

      (gamma*u'*v + coef0)^degree

    • 2 -- 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 静默模式




【机器学习】libsvm python开发环境搭建与测试 机器学习 模式识别 python libsvm 阅读详情

相关推荐

libsvm获得决策函数模型

文章目录1,安装libsvm2,构建数据集并获得决策模型3,总结4,参考 1,安装libsvm 下载whl文件,利用pip安装,不会的点这里 2,构建数据集并获得决策模型 点击libsvm下svm-toy.exe,然后手动构建 这是我点的点保存下来的数据,保存为txt文件 然后时代吗 先导入包 from libsvm.svmutil import * from libsvm.svm import * import scipy.spatial 读取数据 #根据文件路径直接返回要使用的数据格式 label

qq_53329531的博客 1658

python使用libsvm

注意包含包的时候不能直接写。

weixin_45226065的博客 2744

libsvm 的 python 版使用办法

title: “libsvm 的 python 版使用办法” date: 2021-08-06T21:56:09+08:00 lastmod: 2021-08-06T21:56:09+08:00 keywords: [‘svm’, ‘machine learning’, ‘libsvm’] description: “记录 libsvm 的 python 使用办法。” tags: [‘svm’] categories: [机器学习] author: “筱氚” 简介 记录 libsvm 的 python 使.

Kearney 1460

libsvm库简介及使用

libsvm库简介及使用

网络资源是无限的 2万+

LIBSVM高级进阶

SVM怎样才能得到较好的结果 1)对数据归一化处理(simple scale) 2)应用RBF kernel 3)用交叉验证(cross-validation)和grid-search得到最优的C和g 4)训练数据并预测

liumei90 9500

保姆级教程:用Python+LIBSVM复现周志华《机器学习》西瓜数据集3.0α实验

本文提供了一份详细的Python+LIBSVM实战指南,帮助读者复现周志华《机器学习》中的西瓜数据集3.0α实验。从数据预处理、模型训练到参数调优和结果可视化,全面解析SVM在分类任务中的应用,特别对比了线性核和高斯核的性能差异,适合机器学习初学者快速上手。

weixin_30431923的博客 242

(周志华《机器学习》西瓜书 小白Python学习笔记(八) ———— 第六章 支持向量机SVM LIBSVM实现以及结果解读(课后题6.2)

周志华《机器学习》西瓜书 小白Python学习笔记(八) ———— 第六章 支持向量机LIBSVM实现

River_J777的博客 1564

语音测试(二)音频标注(praat)

通过点击红线下方的圆点进行区域划分,在区域中标注所属的类别。按住Alt+Backspace 键取消蓝色线条。

beishida123的博客 3733

libsvm基本函数

本文整理自https://www.cnblogs.com/jiahuiyu/p/5415936.html 侵删!!!  libSVM 中包含的内容 (1)Java文件夹  ,主要应用于java平台;   (2)Python文件夹,是用来参数优选的工具,稍后介绍;   (3)tools文件夹,主要包含四个python文件,用来数据集抽样(subset),参数优选(grid),集成测试(ea...

MWooooo的博客 899

YIUI框架深度解析:基于ET的数据驱动UI开发实践

在Unity游戏开发中,UI管理是构建复杂应用的核心挑战之一。传统命令式编程需要开发者手动操作每个UI组件,导致业务逻辑与视图层高度耦合,代码难以维护。数据驱动是一种先进的架构思想,它通过建立数据模型与UI组件之间的绑定关系,实现数据变化时UI的自动更新,从而将开发者的关注点从“如何操作UI”转移到“数据状态是什么”。这种模式显著提升了代码的可维护性和开发效率,尤其适用于状态频繁变化的游戏界面。YIUI框架正是这一思想在Unity UGUI上的工程化实践,它通过Model-View-Component的清晰

java天气 430

机械臂速成小指南(八):标准DH法实战——从连杆坐标系到运动学方程

本文详细介绍了机械臂运动学建模中的标准DH法,从连杆坐标系的建立到运动学方程的求解,提供了实用的操作步骤和代码示例。通过DH参数表和变换矩阵的构建,帮助读者快速掌握机械臂运动学建模的核心技术,并解决实际应用中的常见问题。

oo7890的博客 211

基于深度学习的医疗图像预分类平台开发与实现

摘 要本文课题设计是基于深度学习中支持向量机算法的医疗图像预分类平台的开发与实现。现阶段,医疗图像中病情的确认都由医生进行判定,从效率方面来讲,人工判断的效率远远小于使用机器学习判断医疗图像中病情的效率,因此,本文课题设计旨在设计实现算法将医疗图像进行分类,产生新的符合机器进行判断的医疗图像。配合使用深度学习中的卷积神经网络经过训练对医疗图像进行一定程度的...

220

1.STM32H743VGT6最小系统板

此款MCU具备较大算力进行频谱运算,为复杂数据运算提供更高效的保障。该MCU具备REV-V和REV-Y两个型号,后者为新版本。

Audiation88的博客 3793

java实现读取dicom内部信息_[源码和文档分享]基于深度学习的医疗图像预分类平台开发与实现...

本文课题设计是基于深度学习中支持向量机算法的医疗图像预分类平台的开发与实现。现阶段,医疗图像中病情的确认都由医生进行判定,从效率方面来讲,人工判断的效率远远小于使用机器学习判断医疗图像中病情的效率,因此,本文课题设计旨在设计实现算法将医疗图像进行分类,产生新的符合机器进行判断的医疗图像。配合使用深度学习中的卷积神经网络经过训练对医疗图像进行一定程度的解读,用来辅助或代替医生诊断病情。使用机器进行病...

weixin_28941715的博客 214

SAP 集成泛微 OA Open API 新建流程申请接口

《SAP ERP 与泛微 OA 的系统集成》系列文章。泛微 Open API 是基于 HTTPS 的 Restful 接口,上篇文章,我已经完成了调用业务接口之前的准备工作,这篇文章我以新建流程申请这个系统集成最重要的接口为例,讲解接口设计、泛微 API 调用的过程、遇到的问题、解决的办法。

SAP李斌,本人承诺所有原创文章均不使用任何AI生成技术,请大家放心阅读。 3552

传感器应用案例:压力传感器在工业自动化中的应用_(13).压力传感器的数据采集与处理

数据采集系统(Data Acquisition System, DAS)是连接传感器和控制系统的重要桥梁。它包括硬件(如数据采集卡、信号调理器)和软件(如数据采集软件、数据处理算法)两部分。信号调理:将传感器输出的模拟信号转换为适合AD转换的信号。AD转换:将模拟信号转换为数字信号。数据传输:将数字信号传输到控制系统或上位机。存储:将采集的数据存储在本地或远程数据库中。实时性:保证数据的实时性和准确性。压力传感器的数据采集与处理是工业自动化中不可或缺的一部分。

2401_87715305的博客 1620

关于LibSVM中easy.py文件的解读

libsvm-3.32/tools/easy.py文件的解读

Kelly_Ai_Bai的博客 1137

【通信原理】基于【MATLAB】的通信OFDM系统仿真

主要进行OFDM系统的仿真,使用MATLAB软件对OFDM系统的接收端和发射端分别进行模拟仿真。

ALi.S的博客 5791

Libsvm中grid.py文件的解读

支持向量机(SVM)的网格搜索python代码实现

Kelly_Ai_Bai的博客 1265

基于 Python + Flask + Echarts 的疫情监控系统

基于 Python + Flask + Echarts 的疫情监控系统

743

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

LIBSVM 常见问题解答与技术指南

LIBSVM 是一个功能强大、简单易用的支持向量机(Support Vector Machine,SVM)软件库,由林智仁教授团队开发。它支持多种 SVM 类型,包括分类、回归和单类 SVM,并提供自动参数选择工具。本文旨在为 LIBSVM 用户提供全面的技术指南和常见问题解答。 ## 核心功能特性 LIBSVM 提供以下核心功能: | 功能类型 | 支持算法 | 主要参数 | |-----

gitblog_01072的博客 378

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Fiber 中间件实战:基于 expvar 在 `/debug/vars` 端点实时暴露运行时与业务指标

> 阅读本篇后,你将掌握如何在 Fiber(v3)应用中接入 expvar 中间件、通过标准 `expvar` 包登记自定义计数器,并借助 `/debug/vars` 端点及其 `?r=key` 过滤能力实时观测 Go 进程的运行时状态(内存、命令行参数等)与自身业务指标。 ## 中间件能做什么 `expvar` 是 Go 标准库中专门用于「通过 HTTP 以 JSON 形式发布进程内变量」的

gitblog_01050的博客 427

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

深入解析libsvm决策函数:从模型文件到工程化部署

支持向量机(SVM)作为经典的机器学习算法,其核心原理在于寻找一个最优的超平面来最大化分类间隔,从而实现高效的模式识别。这一原理赋予了SVM强大的泛化能力和清晰的数学解释性,使其在金融风控、工业质检等高价值场景中备受青睐。理解其决策函数的数学本质,是解锁模型可解释性与工程化部署的关键。通过深入解析libsvm模型文件,我们可以提取支持向量、系数及偏置等核心参数,从而将“黑箱”预测转化为可计算、可移植的“白盒”模型。这不仅增强了模型的可解释性,更为跨平台部署和性能优化(如预计算权重向量)奠定了坚实基础,最终自

weixin_34301132的博客 368

python下使用libsvm:计算点到超平面的距离

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34166847的博客 1241

SVM实战指南:支持向量、核函数与参数调优的工业级解析

支持向量机(SVM)是一种基于最大间隔原理的经典监督学习算法,其核心在于通过支持向量构造最优分离超平面,兼具小样本适应性、高维特征处理能力与强泛化保障。不同于深度学习依赖海量数据,SVM凭借核技巧可隐式映射至高维空间,适用于医疗诊断、工业质检等高噪声、强解释需求场景;RBF核与线性核的选择、C值对误分类容忍度的调控、γ对决策边界曲率的影响,共同构成模型性能的关键杠杆。标准化是SVM生效的前提而非可选项,而libsvm等底层工具提供的细粒度参数控制(如-w+1/-w-1),则支撑了金融风控、缺陷检测等业务中对

458

libsvm和liblinear的使用总结

libsvm和liblinear的使用总结

qq_43667111的博客 483
上一篇: SVM-- pycharm中libsvm基础实验
下一篇: django-1
王小禾
博客等级 码龄11年 80粉丝 291原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值