voglio calcolare il precision
, recall
e f-score
utilizzando libsvm in Python, ma io non so come. Ho trovato this site ma non ho capito come chiamare la funzione, se puoi aiutarmi con l'esempio.Come calcolare la precisione, richiamo e F-score con libSVM in python
5
A
risposta
10
È possibile usufruire di scikit-learn
, che è uno dei migliori pacchetti per l'apprendimento automatico in Python. La sua attuazione SVM utilizza libsvm
e si può lavorare di precisione, richiamo e F-score, come mostrato nel seguente frammento di codice:
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)
che produrrà un output simile a questo:
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]]
Naturalmente, puoi usare lo libsvm tools
che hai menzionato, tuttavia sono progettati per funzionare solo con la classificazione binaria mentre scikit
ti consente di lavorare con multiclasse.
Quale set di dati si sta caricando? Per esempio se il mio set di dati è nel file di testo come usarli? –
Nell'esempio ho usato un set di dati predefinito chiamato iris fornito con 'scikit-learn'. Per un particolare set di dati è necessario convertire i dati del testo in matrici numpy. – jabaldonedo