如何利用python使用libsvm
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何利用python使用libsvm相关的知识,希望对你有一定的参考价值。
把包解压在C盘之中,如:C:\\libsvm-3.182.因为要用libsvm自带的脚本grid.py和easy.py,需要去官网下载绘图工具gnuplot,解压到c盘.进入c:\\libsvm\\tools目录下,用文本编辑器(记事本,edit都可以)修改grid.py和easy.py两个文件,找到其中关于gnuplot路径的那项,根据实际路径进行修改,并保存
python与libsvm的连接(参考SVM学习笔记(2)LIBSVM在python下的使用)
1.打开IDLE(pythonGUI),输入>>>importsys>>>sys.version
2.如果你的python是32位,将出现如下字符:
(default,Apr102012,23:31:26)[MSCv.150032bit(Intel)]’
这个时候LIBSVM的python接口设置将非常简单。在libsvm-3.16文件夹下的windows文件夹中找到动态链接库libsvm.dll,将其添加到系统目录,如`C:\\WINDOWS\\system32\\’,即可在python中使用libsvm
wk_ad_begin(pid : 21);wk_ad_after(21, function()$(\'.ad-hidden\').hide();, function()$(\'.ad-hidden\').show(););
3.执行一个小例子
importos
os.chdir(\'C:\\libsvm-3.18\\python\')#请根据实际路径修改
fromsvmutilimport*
y,x=svm_read_problem(\'../heart_scale\')#读取自带数据
m=svm_train(y[:200],x[:200],\'-c4\')
p_label,p_acc,p_val=svm_predict(y[200:],x[200:],m)
##出现如下结果,应该是正确安装了optimizationfinished,#iter=257nu=0.351161
obj=-225.628984,rho=0.636110nSV=91,nBSV=49
TotalnSV=91
Accuracy=84.2857%(59/70)(classification) 参考技术A 把包解压在C盘之中,如:C:\libsvm-3.182.
因为要用libsvm自带的脚本grid.py和easy.py,需要去官网下载绘图工具gnuplot,解压到c盘.进入c:\libsvm\tools目录下,用文本编辑器(记事本,edit都可以)修改grid.py和easy.py两个文件,找到其中关于gnuplot路径的那项,根据实际路径进行修改,并保存
python与libsvm的连接(参考SVM学习笔记(2)LIBSVM在python下的使用)
1.打开IDLE(pythonGUI),输入>>>importsys>>>sys.version
2.如果你的python是32位,将出现如下字符:
(default,Apr102012,23:31:26)[MSCv.150032bit(Intel)]’
这个时候LIBSVM的python接口设置将非常简单。在libsvm-3.16文件夹下的windows文件夹中找到动态链接库libsvm.dll,将其添加到系统目录,如`C:\WINDOWS\system32\’,即可在python中使用libsvm
wk_ad_begin(pid : 21);wk_ad_after(21, function()$('.ad-hidden').hide();, function()$('.ad-hidden').show(););
3.执行一个小例子
importos
os.chdir('C:\libsvm-3.18\python')#请根据实际路径修改
fromsvmutilimport*
y,x=svm_read_problem('../heart_scale')#读取自带数据
m=svm_train(y[:200],x[:200],'-c4')
p_label,p_acc,p_val=svm_predict(y[200:],x[200:],m)
##出现如下结果,应该是正确安装了optimizationfinished,#iter=257nu=0.351161
obj=-225.628984,rho=0.636110nSV=91,nBSV=49
TotalnSV=91
Accuracy=84.2857%(59/70)(classification)
如何在 python 中使用 libSVM 计算精度、召回率和 F 分数
【中文标题】如何在 python 中使用 libSVM 计算精度、召回率和 F 分数【英文标题】:How to calculate precision, recall and F-score with libSVM in python 【发布时间】:2013-05-31 10:43:44 【问题描述】:我想在 Python 中使用 libsvm 计算 precision
、recall
和 f-score
,但我不知道如何。我找到了this site,但我不明白如何调用该函数,如果你能通过示例帮助我。
【问题讨论】:
【参考方案1】:您可以利用 scikit-learn
,它是 Python 中机器学习的最佳软件包之一。它的 SVM 实现使用libsvm
,您可以计算出精度、召回率和 f-score,如下面的 sn-p 所示:
from sklearn import svm
from sklearn import metrics
from sklearn.cross_validation import train_test_split
from sklearn.datasets import load_iris
# prepare dataset
iris = load_iris()
X = iris.data[:, :2]
y = iris.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
# svm classification
clf = svm.SVC(kernel='rbf', gamma=0.7, C = 1.0).fit(X_train, y_train)
y_predicted = clf.predict(X_test)
# performance
print "Classification report for %s" % clf
print
print metrics.classification_report(y_test, y_predicted)
print
print "Confusion matrix"
print metrics.confusion_matrix(y_test, y_predicted)
这将产生类似这样的输出:
Classification report for SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0, degree=3, gamma=0.7,
kernel=rbf, max_iter=-1, probability=False, shrinking=True, tol=0.001,
verbose=False)
precision recall f1-score support
0 1.00 1.00 1.00 9
1 0.90 0.69 0.78 13
2 0.64 0.88 0.74 8
avg / total 0.86 0.83 0.84 30
Confusion matrix
[[9 0 0]
[0 9 4]
[0 1 7]]
当然,您可以使用您提到的libsvm tools
,但它们仅适用于二进制分类,而scikit
允许您使用多类。
【讨论】:
您正在加载什么数据集?例如,如果我的数据集在文本文件中,如何使用它们? 在示例中,我使用了一个名为 iris 的预定义数据集,它带有scikit-learn
。对于特定数据集,您需要将文本数据转换为 numpy 矩阵。以上是关于如何利用python使用libsvm的主要内容,如果未能解决你的问题,请参考以下文章