[英]How to calculate precision, recall and F-score with libSVM in python
I want to calculate the precision
, recall
and f-score
using libsvm in Python but I do not know how. 我想用Python中的libsvm来计算
precision
, recall
和f-score
,但我不知道如何。 I have found this site but I have not understand how to call the function, if you can help me through example. 我找到了这个网站,但我不知道如何调用该函数,如果你可以帮助我通过例子。
You can take advantage of scikit-learn
, which is one of the best packages for machine learning in Python. 您可以利用
scikit-learn
,这是Python中机器学习的最佳软件包之一。 Its SVM implementation uses libsvm
and you can work out precision, recall and f-score as shown in the following snippet: 它的SVM实现使用
libsvm
,你可以计算精度,召回和f-score,如下面的代码片段所示:
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)
Which will produce an output similar to this: 这将产生类似于此的输出:
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]]
Of course, you can use the libsvm tools
you have mentioned, however they are designed to work only with binary classification whereas scikit
allows you to work with multiclass. 当然,您可以使用您提到的
libsvm tools
,但是它们只能用于二进制分类,而scikit
允许您使用多类。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.