热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

[446]python使用libsvm

一个lisvm包的安装,网上教程太多,众说纷纭,在此做一个简单的总结LibSVM是台湾林智仁(Chih-JenLin)教授2001年开发的

一个lisvm包的安装,网上教程太多,众说纷纭,在此做一个简单的总结

LibSVM是台湾林智仁(Chih-Jen Lin)教授2001年开发的一套支持向量机的库,这套库运算速度还是挺快的,可以很方便的对数据做分类或回归。由于libSVM程序小,运用灵活,输入参数少,并且是开源的,易于扩展,因此成为目前国内应用最多的SVM的库。


下载安装libsvm包


第一种方式

whl文件下载(下载对应python版本的)
https://www.lfd.uci.edu/~gohlke/pythonlibs/#libsvm

打开cmd,安装(对应路径和文件名)

pip install libsvm‑3.22‑cp37‑cp37m‑win_amd64.whl

有人说:
安装成功后,会在python目录下的一个库文件夹site-packages下找到新生成的libsvm.dll,一样将其放置到C:\windows\system32目录

测试

from svmutil import *
from 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)

运行没错的话应该就安装成功了

第二种方式

1.下载
网站:http://www.csie.ntu.edu.tw/~cjlin/libsvm/oldfiles/。这个网站也可以下载,推荐给大家看。http://www.csie.ntu.edu.tw/~cjlin/libsvm/


2.添加动态链接文件(.dll文件)

在下载的libsvm文件夹中,有一个文件夹叫做windows,里面有一个动态链接文件libsvm.dll,这个文件默认是32位系统格式的,如果你的Python是32位的话,则可以直接用这个dll文件,将在拷贝到C:\Windows\System32下即可。

如果你的系统是64位的,则需要重新编译64位的dll文件。假设你已经安装了VS,以安装了VS2015为例,你可以在win10的全部应用中的VS目录下找到 VS2015 x64 本机工具命令提示符,这个小黑框,然后用cd命令进入到你下载的libsvm的文件中,输入以下指令:

nmake -f Makefile.win clean all

便会自动调用指令生成64位的dll,生成后,拷贝到C:\Windows\System32目录下。因为Python版本的svm需要调用很多c语言实现的接口,所以必须添加这个动态链接文件,否则运行会出错。

如果本机上没有安装VS,可使用第一种方法生成的libsvm.dll将其放置到C:\windows\system32即可

3.导入模块

如果libsvm需要经常使用,可以将libsvm包添加到Python的默认lib中,也就是放到Python安装路径下的Lib文件夹下的site-packages文件夹中。然后再libsvm文件夹中添加_init_.py(init前后都是双下划线)文件,在libsvm中的Python文件夹中也添加_init_.py文件。Python包,也就是能够导入的文件夹包中,必须包含_init_.py,否则无法实现导入。
这样在导入:

from libsvm.python.svm import *
from libsvm.python.svmutil import *

也可以不添加到Python默认路径中,直接

import sys
sys.path.append("libsvm/python")
import svm
import svmutil

这样也是可以的,但建议前面那种

在运行时发现还是出错,说svmutil中找不到模块svm。这是因为在svmutil.py模块中有两个导入语句:

from svm import *
from svm import __all__ as svm_all

这两个导入语句中,默认svm已经是在系统路径中,但是实际上不是,如果我们 已经将libsvm添加到Python默认路径中,则直接将上面的改为:

from libsvm.python.svm import *
from libsvm.python.svm import __all__ as svm_all

这样就可以正确找到svm.py模块了。

第三种方式

将zip 放到一个特定的位置,我直接放到D盘目录底下了。其他地方也可以

测试一下LibSVM是否可用了,打开Python IDE,输入以下代码:

能够看到84%的准确度。
##训练数据

假设训练数据集文件路径为:G:\train.txt
预测数据集文件路径为:G:\predict.txt
则使用svm方法为:
第一步,加载文件数据到序列或元组,让svm接口能够使用
其中label是类别,value是特征值

train_label, train_value = svm_read_problem("G:\\train.txt") #训练数据集
predict_label, predict_value = svm_read_problem("G:\\predict.txt") #预测数

训练模型

model = svm_train(train_label,train_value)

用模型预测数据类别
结构返回为,预测类别集合,准确率,

p_label, p_acc, p_val = svm_predict(predict_label, predict_value, model)
print(p_acc)#打印预测结果

p_labs是存储预测标签的列表。

p_acc存储了预测的精确度,均值和回归的平方相关系数。

p_vals在指定参数’-b 1’时将返回判定系数(判定的可靠程度)。



LibSVM简单说明

下载.zip格式的版本,解压后可以看到,主要有5个文件夹和一些c++源码文件。

Java——主要是应用于java平台;

Python——是用来参数优选的工具,稍后介绍;

svm-toy——一个可视化的工具,用来展示训练数据和分类界面,里面是源码,其编译后的程序在windows文件夹下;

tools——主要包含四个python文件,用来数据集抽样(subset),参数优选(grid),集成测试(easy),数据检查(checkdata);

windows——包含libSVM四个exe程序包,我们所用的库就是他们,里面还有个heart_scale,是一个样本文件,可以用记事本打开,用来测试用的。

其他.h和.cpp文件都是程序的源码,可以编译出相应的.exe文件。其中,最重要的是svm.h和svm.cpp文件,svm-predict.c、svm-scale.c和svm-train.c(还有一个svm-toy.c在svm-toy文件夹中)都是调用的这个文件中的接口函数,编译后就是windows下相应的四个exe程序。另外,里面的 README 跟 FAQ也是很好的文件,对于初学者如果E文过得去,可以看一下。

下面以svm-train为例,简单的介绍下,怎么编译:(这步很简单,也没必要,对于仅仅使用libsvm库的人来说,windows下的4个exe包已经足够了,之所以加这步,是为了那些做深入研究的人,可以按照自己的思路改变一下svm.cpp,然后编译验证)

我用的是VC 6.0,新建一个控制台(win32 console application)程序,程序名叫svm-train(这个可以随意),点击OK后,选择empty。

进入程序框架后,里面什么都没有,然后找到你的程序目录,把svm-train.c、svm.h和svm.cpp拷贝过去(.c文件是c语言的,要是你习惯了c++,你尽可以改成.cpp),然后把这3个文件添加到工程,编译。。。如果没错误,到debug下面看看,是不是有个svm-train.exe。其实windows下的svm-train.exe就是这样编译出来的。

哈哈,怎么样是不是很简单。但是,这样的程序直接运行没意义,他要在dos下运行,接收参数才行。下面开始我们的libsvm的体验之旅。

第一次体验LibSvm

1.把LibSVM包解压到相应的目录(因为我只需要里面windows文件夹中的东东,我们也可以只把windows文件夹拷到相应的目录),比如D:/libsvm。

2.在电脑“开始”的“运行”中输入cmd,进入DOS环境。定位到d:/ libsvm下,具体命令如下:

d: (回车)
cd /libsvm/windows (回车)
(上面第一行是先定位到盘符d,第二行cd是定位到相应盘符下的目录)

3.进行libsvm训练,输入命令:(这里要注意文件的名字,2.89以前版本都是svmtrain.exe)

svm-train heart_scale train.model

heart_scale**——**是目录下的已经存在的样本文件,要换成自己的文件,只需改成自己的文件名就可以了

train.model**——**是创建的结果文件,保存了训练后的结果

可以看到结果:

*optimization finished, #iter = 162nu = 0.431029obj = -100.877288, rho = 0.424462nSV = 132, nBSV = 107Total nSV = 132

其中,#iter为迭代次数,nu是你选择的核函数类型的参数,obj为SVM文件转换为的二次规划求解得到的最小值,rho为判决函数的偏置项b,nSV为标准支持向量个数(0

在目录下,还可以看到产生了一个train.model文件,可以用记事本打开,记录了训练后的结果。

svm_type c_svc//所选择的svm类型,默认为c_svc

kernel_type rbf//训练采用的核函数类型,此处为RBF核

gamma 0.0769231//RBF核的参数γ

nr_class 2//类别数,此处为两分类问题

total_sv 132//支持向量总个数

rho 0.424462//判决函数的偏置项b

label 1 -1//原始文件中的类别标识

nr_sv 64 68//每个类的支持向量机的个数

SV//以下为各个类的权系数及相应的支持向量

1 1:0.166667 2:1 3:-0.333333 … 10:-0.903226 11:-1 12:-1 13:1

0.5104832128985164 1:0.125 2:1 3:0.333333 … 10:-0.806452 12:-0.333333 13:0.5

…………

-1 1:-0.375 2:1 3:-0.333333…. 10:-1 11:-1 12:-1 13:1

-1 1:0.166667 2:1 3:1 …. 10:-0.870968 12:-1 13:0.5

到现在,第一次体验libsvm到这就基本结束了,其他的两个(svm-predict、svm-scale)的使用过程类似

参考:https://www.cnblogs.com/-ldzwzj-1991/p/5893054.html
http://www.cnblogs.com/-ldzwzj-1991/p/5897199.html
https://baijiahao.baidu.com/s?id=1580049402237436090&wfr=spider&for=pc


推荐阅读
  • 在 Windows 10 系统下配置 Python 3 和 OpenCV 3 的环境时,建议使用 Anaconda 分发版以简化安装过程。Anaconda 可以从其官方网站(https://www.anaconda.com/download)下载。此外,本文还推荐了几本关于 Python 和 OpenCV 的专业书籍,帮助读者深入理解和应用相关技术。 ... [详细]
  • 内网渗透技术详解:PTH、PTT与PTK在域控环境中的应用及猫盘内网穿透配置
    本文深入探讨了内网渗透技术,特别是PTH、PTT与PTK在域控环境中的应用,并详细介绍了猫盘内网穿透的配置方法。通过这些技术,安全研究人员可以更有效地进行内网渗透测试,解决常见的渗透测试难题。此外,文章还提供了实用的配置示例和操作步骤,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 结语 | 《探索二进制世界:软件安全与逆向分析》读书笔记:深入理解二进制代码的逆向工程方法
    结语 | 《探索二进制世界:软件安全与逆向分析》读书笔记:深入理解二进制代码的逆向工程方法 ... [详细]
  • Python网络爬虫入门:利用urllib库进行数据抓取
    Python网络爬虫入门:利用urllib库进行数据抓取在数据科学和Web开发领域,Python凭借其简洁高效的特性成为首选语言。本文主要介绍了如何在Windows环境下使用Python的urllib库进行基本的网络数据抓取。考虑到命令行操作的不便,作者选择了Jupyter Notebook作为开发环境,不仅简化了配置过程,还提供了直观的数据处理和可视化功能。通过实例演示,读者可以轻松掌握urllib的基本用法,为深入学习网络爬虫技术打下坚实基础。 ... [详细]
  • 本文介绍了如何在 PyCharm 中高效利用 Anaconda 管理项目环境配置。首先,确保已安装必要的软件。以 Windows 10 64位专业版为例,建议使用 PyCharm 2018.2 或更高版本。通过 Anaconda 创建和管理虚拟环境,可以显著提升开发效率,确保项目依赖的一致性和隔离性。文章详细阐述了从安装到配置的每一步操作,帮助开发者快速上手并充分利用这些工具的优势。 ... [详细]
  • 从零起步:使用IntelliJ IDEA搭建Spring Boot应用的详细指南
    从零起步:使用IntelliJ IDEA搭建Spring Boot应用的详细指南 ... [详细]
  • 深入解析 Django 中用户模型的自定义方法与技巧 ... [详细]
  • 本文介绍了使用 Python 编程语言高效抓取微博文本和动态网页图像数据的方法。通过详细的示例代码,展示了如何利用爬虫技术获取微博内容和动态图片,为数据采集和分析提供了实用的技术支持。对于对网络数据抓取感兴趣的读者,本文具有较高的参考价值。 ... [详细]
  • Python – 遍历日期序列的高效方法与技巧 ... [详细]
  • Python学习:环境配置与安装指南
    Python作为一种跨平台的编程语言,适用于Windows、Linux和macOS等多种操作系统。为了确保本地已成功安装Python,用户可以通过终端或命令行界面输入`python`或`python3`命令进行验证。此外,建议使用虚拟环境管理工具如`venv`或`conda`,以便更好地隔离不同项目依赖,提高开发效率。 ... [详细]
  • 本文详细介绍了如何在Linux系统中搭建51单片机的开发与编程环境,重点讲解了使用Makefile进行项目管理的方法。首先,文章指导读者安装SDCC(Small Device C Compiler),这是一个专为小型设备设计的C语言编译器,适合用于51单片机的开发。随后,通过具体的实例演示了如何配置Makefile文件,以实现代码的自动化编译与链接过程,从而提高开发效率。此外,还提供了常见问题的解决方案及优化建议,帮助开发者快速上手并解决实际开发中可能遇到的技术难题。 ... [详细]
  • 在Python 2.7环境中使用PyCharm进行Cvxopt的安装及线性规划问题求解。具体步骤包括:通过PyCharm的文件菜单进入项目设置,选择解释器选项,点击右侧的“+”按钮,在可用包列表中搜索并安装Cvxopt。安装完成后,可以通过导入Cvxopt库并调用其函数来解决线性规划问题,提高模型的准确性和效率。 ... [详细]
  • 因缺失VCRUNTIME140_1.dll文件导致代码无法运行,建议重新安装程序以解决问题
    因缺失VCRUNTIME140_1.dll文件导致代码无法运行,建议重新安装程序以解决问题 ... [详细]
  • 本书《.NET Core 2.* 开发者指南》是面向开发者的全面学习与实践手册,涵盖了从基础到高级的各个层面。书中详细解析了 .NET Core 的核心概念,包括如何创建 .NET Core 网站,并通过视频教程直观展示操作过程。此外,还深入探讨了 Startup 类的作用、项目目录结构的组织方式以及如何在应用中使用静态文件等内容。对于希望深入了解 .NET Core 架构和开发技巧的开发者来说,本书提供了丰富的实践案例和详尽的技术指导。 ... [详细]
  • 程序连接MySQL数据库的多种方法详解 ... [详细]
author-avatar
Li-zHihuAn
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有