1.下载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语言实现的接口,所以必须添加这个动态链接文件,否则运行会出错。

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模块了。

4.训练数据

假设训练数据集文件路径为: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)                                                          #打印预测结果

某完整代码如下:

from libsvm.python.svm import *
from libsvm.python.svmutil import *train_label,train_pixel = svm_read_problem('G:\\data\\good-image-data')
predict_label,predict_pixel = svm_read_problem('G:\\data\\predict-image-data')model = svm_train(train_label, train_pixel)
print("result:")
p_label, p_acc, p_val = svm_predict(predict_label, predict_pixel, model);print(p_acc)

更详细的使用libsvm接口的办法请查看libsvm中的readme文件。

Python中使用libsvm相关推荐

  1. 在Python中使用lightgbm

    前言-lightgbm是什么? LightGBM 是一个梯度 boosting 框架, 使用基于学习算法的决策树. 它是分布式的, 高效的, 装逼的, 它具有以下优势: 速度和内存使用的优化 减少分割 ...

  2. python中定义结构体

    2019独角兽企业重金招聘Python工程师标准>>> python中定义结构体通过继承_ctypes中的Structure类,标准写法如下: c: struct beer_reci ...

  3. (转)python 搭建libsvm方法。python版本和libsvm版本匹配很重要!

    <集体智慧编程>关于婚介数据集的SVM分类 转自:http://muilpin.blog.163.com/blog/static/165382936201131875249123/ 作者写 ...

  4. XGBoost原理及在Python中使用XGBoost

    原理见:http://www.myexception.cn/operating-system/2084839.html 译文转自:http://blog.csdn.net/zc02051126/art ...

  5. 选取最优模型--scikit-learn的Python中抽查回归机器学习算法

    抽查是一种发现哪种算法在机器学习问题上表现良好的方法. 无法事先知道哪种算法是最适合的,必须尝试多种方法并将注意力集中在那些证明最有效果的方法上. ------------------- 概述 本文将 ...

  6. Python中运用的基础库

    库名称简介 Chardet字符编码探测器,可以自动检测文本.网页.xml的编码. colorama主要用来给文本添加各种颜色,并且非常简单易用. Prettytable主要用于在终端或浏览器端构建格式 ...

  7. 在python中使用liblinear

    在python中使用liblinear 1.安装 1.从http://www.csie.ntu.edu.tw/~cjlin/liblinear/ 下载压缩文件,解压 2.进入liblinear主目录, ...

  8. 如何优雅的在python中暂停死循环?

    死循环 有时候在工作中可能会遇到要一直执行某个功能的程序,这时候死循环就派上用途了,python中死循环的具体形式大致如下 while True:run_your_code() 结束死循环 通常我们结 ...

  9. 关于python中的dict和defaultdict

    dict 在Python中如果访问字典中不存在的键,会引发KeyError异常,所以一般当我们比如统计一句话的词频时候,我们总是使用这样的处理方式: strings = ('puppy', 'kitt ...

最新文章

  1. 刻意练习:LeetCode实战 -- Task01. 两数之和
  2. 独家 | 如何用简单的Python为数据科学家编写Web应用程序?(附代码链接)
  3. 在Linux下怎样让top命令启动之后就按内存使用排序(或CPU使用排序)?
  4. 如何使用sed在文件中确定行插入带有变量的字符串
  5. [转]select、poll、epoll的比较
  6. 思考--为何早晨型人更容易成功
  7. JavaScript instanceof的实现
  8. c# 开发window服务
  9. Java应用程序的基本框架
  10. c语言计算分段函数_Rust能够取代C语言吗?
  11. 《剑指Offer》面试题5-替换空格
  12. c#截取两个指定字符串中间的字符串
  13. LeetCode刷题——167. 两数之和 II - 输入有序数组
  14. 魔方游戏程序设计制作(C语言)
  15. Android控件 TabHost,Android控件开发之TabHost
  16. 视觉三维重建:colmap从理论到实战
  17. 计算机专用计算器,功率计算器
  18. IT运维工程师要会什么?
  19. 本周AI热点回顾:百度推出全球首个mRNA疫苗不稳定性解决方案、性能提升20倍:英伟达GPU旗舰A100
  20. 在数据增强、蒸馏剪枝下ERNIE3.0分类模型性能提升

热门文章

  1. oninput,onpropertychange,onchange的使用方法和差别
  2. Winform使用DevExpress的WaitDialogForm画面 z
  3. Cocos2d-x win7 + vs2010 配置图文详解(转)
  4. 用简单的代码测一测你是否真的了解:Asp.Net中的事件和委托的实现
  5. Vue Cli3 项目 vue.config.js 配置
  6. 图片服务 - thumbor过滤器
  7. 当Spring 容器初始化完成后执行某个方法
  8. iOS-WKWebView的使用
  9. SpringMVC 控制层注解
  10. 04737 c++ 自学考试2019版 第四章课后程序设计题1