SVM-- pycharm中libsvm基础实验

1 导入libsvm包

libsvm下载地址:http://www.csie.ntu.edu.tw/~cjlin/libsvm/oldfiles/

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

这里写图片描述

导入包检测不报错即可

>>> from libsvm322.python.svm import *
>>> from libsvm322.python.svmutil import *

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

import sys
sys.path.append("...libsvm322\python")
import svm 
import svmutil

注意:
pycharm中,会将运行环境复制一份到当前项目下,作为目录venv。在pycharm中运行,必须要将包复制到当前项目下的venv\Lib\site-packages目录下。

2 完整实验代码

#coding = utf-8

from libsvm322.python.svm import *
from libsvm322.python.svmutil import *

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.351161
obj = -225.628984, rho = 0.636110
nSV = 91, nBSV = 49
Total nSV = 91
----------------
Accuracy = 84.2857% (59/70) (classification)

Process finished with exit code 0

能够看到84%的准确度。

3 数据格式

libsvm的数据格式如下:
<label> <index1>:<value1> <index2>:<value2> ...

+1 1:0.708333 2:1 3:1 
-1 1:0.583333 2:-1 3:0.333333 
+1 1:0.166667 2:1 3:-0.333333 

第一列代表标签
第二列是第一个特征值,只包含一个整数索引和一个浮点值属性。
第三列是第二个特征值,只包含一个整数索引和一个浮点值属性。

所以,先要把数据按规定格式整理好。然后开始训练.。

4 其他数据实验

我们造几列数据进行实验。

1 1:175 2:60
1 1:185 2:70
-1 1:155 2:40
-1 1:165 2:50
-1 1:170 2:50

1表示男,-1表示女。我们将前4行训练,最后一行预测。

# -*- coding = utf-8 -*-
from libsvm322.python.svmutil import *

y,x = svm_read_problem('data')

m = svm_train(y[:4], x[:4], '-c 4')
print '----------------'
lable, acc, val = svm_predict(y[4:], x[4:], m)
print lable

结果:

*
optimization finished, #iter = 2
nu = 0.250000
obj = -2.000000, rho = 0.000000
nSV = 4, nBSV = 0
Total nSV = 4
----------------
Accuracy = 100% (1/1) (classification)
[-1.0]

Process finished with exit code 0

Python接口

在libsvm-3.20的python文件夹下主要包括了两个文件svm.pysvmutil.py
svmutil.py接口主要包括了high-level的函数,这些函数的使用和LIBSVM的MATLAB接口大体类似

svmutil.py中主要包含了以下几个函数:

  • svm_train() : train an SVM model
  • svm_predict() : predict testing data
  • svm_read_problem() : read the data from a LIBSVM-format file.
  • svm_load_model() : load a LIBSVM model.
  • svm_save_model() : save model to a file.
  • evaluations() : evaluate prediction results.

svm.py接口主要包括了一些low-level的应用。在svm.py中采用了 python内置的ctypes库,由此python可以直接访问svm.h中定义的C结构和接口函数。svm.py主要运用了四个数据结构 svm_node, svm_problem, svm_parameter和svm_model。  

参考:
https://www.cnblogs.com/-ldzwzj-1991/p/5893054.html

  • 4
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值