2013-06-04 17 views

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.

+0

Quale set di dati si sta caricando? Per esempio se il mio set di dati è nel file di testo come usarli? –

+0

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