2013-06-04 16 views

Antwort

10

Sie können scikit-learn nutzen, eines der besten Pakete für maschinelles Lernen in Python. Seine SVM-Implementierung verwendet libsvm und Sie können im folgenden Ausschnitt wie gezeigt Präzision, Rückruf und f-score ausrechnen:

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) 

, die einen Ausgang ähnlich wie diese produzieren:

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]] 

Natürlich Sie können die libsvm tools verwenden, die Sie erwähnt haben, aber sie sind so konzipiert, dass sie nur mit binärer Klassifizierung arbeiten, während scikit Ihnen erlaubt, mit Multiclass zu arbeiten.

+0

Welchen Datensatz laden Sie? Zum Beispiel, wenn mein Datensatz in der Textdatei ist, wie man sie benutzt? –

+0

Im Beispiel habe ich einen vordefinierten Datensatz namens Iris verwendet, der mit "scikit-learn" geliefert wird. Für ein bestimmtes Datenset müssen Sie Ihre Textdaten in nuepy Matrizen konvertieren. – jabaldonedo