-
2022-03-24 11:15:15
一、引言:
LIBSVM提供了多语言(java、python和matlab)的SVM实现,可以便捷地处理分类或回归问题,本文记录基于matlab的LIBSVM学习笔记。
二、环境搭建:
LIBSVM下载链接:https://github.com/cjlin1/libsvm
Windows系统下安装:预编译的mex文件存放在’…/windows’,需要将其复制到matlab文件夹下
matlab软件中编译:首先将libsvm所在的matlab文件夹及其子文件夹添加到matlab搜索路径中;然后在命令行中输入make
编译得到’libsvmread.mex’, ‘libsvmwrite.mex’, ‘svmtrain.mex’, and
'svmpredict.mex’文件。三、使用:
1.数据说明及其读取方法
数据格式:[label] [index1]:[value1] [index2]:[value2] …
示例:/* 0.099 1:5000 2:0.06 3:2 4:1 */
数据读取方式
[label_train, inst_train] = libsvmread('filePath');
其中:
- label_train:训练标签,m*1矩阵(m表示样本数),类型必须为double;
- inst_train:训练实例,m*n矩阵(n表示样本的特征数),类型必须为double;
2.SVM模型训练
model = svmtrain(label_train, inst_train [, 'libsvm_options']);
其中:
- libsvm_options:模型参数,string类型
libsvm_options
-s 设置svm类型:
0 – C-SVC
1 – v-SVC
2 – one-class-SVM
3 –ε-SVR
4 – n - SVR-t 设置核函数类型,默认值为2
0 –线性核:u’v
1 –多项式核:(gu’v+coef0)degree
2 – RBF核:exp(-γ||u-v||2)
3 – sigmoid核:tanh(γ*u’*v+coef0)其它设置
/** -d degree:设置多项式核中degree的值,默认为3; -g γ:设置核函数中γ的值,默认为1/k,k为特征(或者说是属性)数; -r coef 0:设置核函数中的coef 0,默认值为0; -c cost:设置C-SVC、ε-SVR、n - SVR中从惩罚系数C,默认值为1; -n v:设置v-SVC、one-class-SVM与n - SVR中参数n,默认值0.5; -p ε:设置v-SVR的损失函数中的e,默认值为0.1; -m cachesize:设置cache内存大小,以MB为单位,默认值为40; -e ε:设置终止准则中的可容忍偏差,默认值为0.001; -h shrinking:是否使用启发式,可选值为0或1,默认值为1; -b 概率估计:是否计算SVC或SVR的概率估计,可选值0或1,默认0; -wi weight:对各类样本的惩罚系数C加权,默认值为1; -v n:n折交叉验证模式; */
示例:
model = svmtrain(label_train, inst_train, '-s 4 -t 2');
3.预测
[predicted_label, accuracy, decision_values/prob_estimates] = svmpredict(label_test, inst_test, model [, 'libsvm_options']);
示例:
[label_predicted, accuracy, dec_values] = svmpredict(label_test, inst_test, model)
参考:
[1] 勉旃,LIBSVM使用方法。
[2] AlanDreamer,matlab安装LIBSVM。更多相关内容 -
LibSVM训练
2021-11-18 20:34:05一、LIBSVM 二、LIBSVM的下载及安装 三、基于LIBSVM处理手工生成数据集 1. 启动LIBSVM 2. 手工绘制数据集 3. 利用LIBSVM训练模型并求出决策函数 四、总结 五 参考链接 一、LIBSVM 这是一个简单、易于使用和...目录
一、LIBSVM
这是一个简单、易于使用和快速有效的SVM模式识别与回归的软件包,他不但提供了编译好的可在Windows系列系统的执行文件,还提供了源代码,方便改进、修改以及在其它操作系统上应用;该软件对SVM所涉及的参数调节相对比较少,提供了很多的默认参数,利用这些默认参数可以解决很多问题;并提供了交互检验(Cross Validation)的功能。该软件可以解决C-SVM、ν-SVM、ε-SVR和ν-SVR等问题,包括基于一对一算法的多类模式识别问题。
二、LIBSVM的下载及安装
下载地址:
LIBSVM -- A Library for Support Vector Machines
将下载的压缩文件解压即可:
三、基于LIBSVM处理手工生成数据集
1. 启动LIBSVM
点击解压文件夹下的
windows
文件夹,在文件夹中找到名为svm-toy.exe
的运行程序并运行2. 手工绘制数据集
点击鼠标左键可进行描点
点击Change切换颜色,再描一组点
点击Save将数据保存为test作为训练集
再设置一组数据作为测试集
3. 利用LIBSVM训练模型并求出决策函数
导入库:
from libsvm.svmutil import * from libsvm.svm import * import scipy.spatial
数据导入:
label,data= svm_read_problem('test.txt')#训练数据 p_label,p_data=svm_read_problem('test1.txt')#测试数据
使用线性核训练模型
para ='-t 0 -c 4 -b 1' #训练参数 model=svm_train(label,data,para) svm_save_model('model1.txt',model) acc=svm_predict(p_label,p_data,model)
运行结果:
模型参数及结果:
使用多项式核训练模型
para ='-t 1 -c 4 -b 1' #训练参数 #多项式核 model=svm_train(label,data,para) svm_save_model('model2.txt',model) acc=svm_predict(p_label,p_data,model)
运行结果:
模型参数及结果:
使用高斯核训练模型
para ='-t 2 -c 4 -b 1'#训练参数 model=svm_train(label,data,para) svm_save_model('model3.txt',model) acc=svm_predict(p_label,p_data,model)
运行结果:
模型参数及结果
四、总结
SVM用于模式识别或回归时,SVM方法及其参数、核函数及其参数的选择,也就是说最优SVM算法参数选择还只能是凭借经验、实验对比、大范围的搜寻或者利用软件包提供的交互检验功能进行寻优。
五 参考链接
-
libsvm的安装及使用
2021-10-28 17:12:59参考:带有权重的libsvm的安装及使用参考LibSVM 安装使用 - ranjiewen - 博客园 libsvm下载网址:LIBSVM -- A Library for Support Vector Machines 需要的windows版本svm工具包位置如下 如果需要其他扩展版本...参考:带有权重的libsvm的安装及使用参考LibSVM 安装使用 - ranjiewen - 博客园
MATLAB libsvm 安装和使用_qq:843375677的博客-CSDN博客_libsvm安装
libsvm下载网址:LIBSVM -- A Library for Support Vector Machines
需要的windows版本svm工具包位置如下
如果需要其他扩展版本,比如带有权重的svm,可以到LIBSVM_tools下查找。
注意:
建议直接去官网找发布的libsvm工具包,最开始直接用了自己以前编译好的,matlab报出了各种错误,从选择编译器开始,到无法导出mex文件……等一系列问题。后来去官网直接找最新版本,mex -setup; make两步一次性就成功了!就很离谱,白费半天时间
安装完成后的测试:
将Libsvm文件下的测试数据集heart_scale复制到Libsvm\matlab下,后续的操作将在该文件夹下进行,同时将MATLAB工作路径转至该文件下(在MATLAB中也可完成文件的复制粘贴工作)。
在命令行窗口输入
[heart_scale_label,heart_scale_inst]=libsvmread('heart_scale'); model = svmtrain(heart_scale_label,heart_scale_inst) ; [predict_label,accuracy,dec_values] = svmpredict(heart_scale_label,heart_scale_inst,model);
结果为
或者带权重的测试
% 1、测试带权重的svm [heart_scale_label, heart_scale_inst] = libsvmread('heart_scale'); %读取数据 heart_scale_weight = load('heart_scale.wgt'); model = libsvmtrain(heart_scale_weight, heart_scale_label, heart_scale_inst, '-c 1'); %改名字了 +lib ;将编译完的svmtrain改为libsvmtrain,不然svmtrain会与早期matlab自带的svm重名 % model = libsvmtrain([], heart_scale_label, heart_scale_inst, '-c % 1');%不带权重的 [predict_label, accuracy, dec_values] = libpredict(heart_scale_label, heart_scale_inst, model); %svmpredict改为libpredict
结果
-
新闻文本分类libsvm格式数据
2010-08-17 21:57:59有搜狗分类新闻语料库得出的libsvm格式数据,特征词选择方法为IG,更多了解请参阅个人博客http://hi.baidu.com/finallyliuyu/home 查阅相关文章 -
Excel数据转libsvm数据
2014-03-29 15:10:59由于libsvm支持的数据格式是有固定规范的(采用[分类标示 序号:值 …]的形式)。用户若想将一些波形数据导入到libsvm工具中分析运算,则首先要解决格式转换问题。这个过程虽然不困难,但是也会消耗实验人员一定的... -
libsvmmatlab代码-libsvm:虚拟机
2021-06-16 15:11:16libsvm matlab 代码 libsvm libsvm matlab 自带的参数 和 libsvm的库是不一样的。。。详见代码。。。 代码主要作用:比较在mnist这个数据集上,svm 和 cnn性能的比较 -
获取libsvm格式的数据
2018-01-11 17:29:42#!/usr/bin/python # -*- coding:utf-8 -*- #author: by Tong import sys import csv reload(sys) sys.setdefaultencoding("utf-8") def setlibsvm(): readin = open('data.txt','r') output = open("lib_#!/usr/bin/python # -*- coding:utf-8 -*- #author: by Tong import sys import csv reload(sys) sys.setdefaultencoding("utf-8") def setlibsvm(): readin = open('data.txt','r') output = open("lib_to_svm.txt",'wb') try: col = 0 the_line = readin.readline() while the_line: if col == 0: output.write(the_line) col = col +1 the_line = readin.readline() continue the_line = the_line.strip('\n') output_line = '' index = 0 # print the_line.split('\t') for sub_line in the_line.split(' '): if index == 0 : output_line = sub_line if index > 0 and sub_line != '0': output_line += ' '+str(index)+':'+str(sub_line) index = index + 1 output.write(output_line) output.write('\n') the_line = readin.readline() finally: readin.close() if __name__ == "__main__": setlibsvm()
数据的格式为:
label feature1 feature2 feature3
其中以空格作为分隔符,其中的代码可以改变
label feature1 feature2 feature3 feature4 1 1:434 2:32 3:2 0 1:323 3:3 4:3 0 2:3 4:3 0 1:23 2:3 3:2 4:1
这是最终的数据格式。好处是对于稀疏的数据能够节省空间。
原数据格式为:
label feature1 feature2 feature3 feature4 1 434 32 2 0 0 323 0 3 3 0 0 3 0 3 0 23 3 2 1 1 3 12 0 55
-
matlab使用libsvm进行分类代码实例(带最新libsvm超详细安装教程)
2019-03-28 23:37:28首先通过博客,安装好libsvm库,博客地址:https://blog.csdn.net/qq874455953/article/details/88782121, 然后直接点击运行代码即可, 同时你也可以添加数据集,然后更改一下矩阵参数就可以利用自己的数据集进行... -
如何在Visual Studio(VS)里使用libsvm工具箱 与博文相关的代码包
2020-06-08 03:00:50参考博文请移步:http: blog csdn net u014691453 article details 40393137">博文以图文并茂的方式 细致讲解了如何在Visual Studio(VS2012 & VS2010 使用 libsvm (libsvm 3 18)工具箱的过程 ... -
libsvm python版安装包
2016-07-18 14:30:28安装python版的libsvm,具体参照http://blog.csdn.net/m624197265/article/details/41894261就可以了 -
基于支持向量机libsvm的回归预测分析
2018-07-22 17:04:16基于基于支持向量机libsvm的回归预测分析拟合模型,利用数据做预测,数据代码都在压缩包里。 -
matlab 安装libSVM
2021-02-20 14:34:531.libsvm下载或者从这里下载 2.将libsvm 解压到任意目录下(无空格,非中文): 3.运行matlab,在主页(home)的设置路径(set path)中添加libsvm: 4. 将当前路径设置到libsvm /matlab 后,在命令行窗口运行 》... -
libsvm数据格式转换
2016-12-05 21:43:44libsvm要求的数据格式转换工具,excel宏文件,可以把 *.xls文件转换成libsvm的数据格式,方便快捷,本人已使用过! -
libsvm-3.11-matlab-bin.7z
2019-08-15 00:35:12Matlab编译好的库,下载下来,扔到matlab安装目录下面的tools文件夹下, 1、将libsvm-3.11文件夹复制到matlab/tools下面 ...更多详情请参考:https://blog.csdn.net/pang9998/article/details/99617880 -
Libsvm在matlab环境下使用指南
2021-04-21 19:55:12一、安装http://www.csie.ntu.edu.tw/~cjlin/libsvm/matlab/。...打开matlab,在matlab的面板上找到set path选项(不同版本不一样R2010b在file菜单下),将刚下载的libsvm整个目录都添加到matlab的... -
matlab中libsvm安装问题
2015-04-14 22:52:02matlab7.1安装libsvm步骤,以及出现的问题和解决方法 -
matlab安装LIBSVM
2019-02-27 16:14:14由于matlab中自带的svmtrain和svmclassify函数只能进行原始的二分(标签只能包含两个类别,正和负),如果想使用多类别标签分类,比如高光谱分类等等,那么就需要使用libsvm工具箱,下面就win10系统的matlab R2016a... -
Python库 | libsvm_official-3.25.0-cp37-cp37m-win_amd64.whl
2022-05-06 23:34:54资源分类:Python库 所属语言:Python 资源全名:libsvm_official-3.25.0-cp37-cp37m-win_amd64.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059 -
MATLAB libsvm 安装和使用
2018-09-13 14:01:35最近在学习SVM,在matlab上安装和使用Libsvm的过程中遇到了好多问题,在网上查看了许多资料,踩了许多坑。 整理一下供大家分享,希望能节省大家在安装过程中的时间。 一、安装 1.libsvm 下载 本人使用windows ... -
Libsvm安装教程(详细版)
2017-01-06 15:04:20Libsvm安装教程 1. 下载 在LIBSVM的主页上下载最新版本的软件包,并解压到合适目录中。一般包括下列文件: 2. 编译 首先在Matlab中进入LIBSVM根目录下的matlab目录(如C:\libsvm-3.17\matlab),在命令... -
libsvm简单代码解释
2019-10-14 10:11:49https://blog.csdn.net/zhf1234abc/article/details/46853857 首先来看一下Libsvm的模型训练部分: 采用为One-against-one的策略假如有1,2,3,4个类可以(1,2)(1,3)(1,4)(2,3)(2,4)(2,4)可以... -
libsvm
2020-06-06 11:41:49https://blog.csdn.net/Jibaoxian/article/details/52181588 https://www.cnblogs.com/sub2020/p/8007516.html https://blog.csdn.net/YoungLittleT/article/de... -
LIBSVM的使用方法以及参数注释总结
2021-10-14 10:39:141.1libsvmtrain三个输入参数,其中 1.2libsvmtrain返回参数 1.3 模型最佳参数选取 1.4 SVM 怎样能得到好的结果 2. 使用训练模型进行预测 2.1 libsvmpredict输入参数 2.1 libsvmpredict返回参数 3. 训练的参数...