2013-06-04 8 views

Odpowiedz

10

Możesz skorzystać z scikit-learn, który jest jednym z najlepszych pakietów do uczenia maszynowego w Pythonie. Jego realizacja SVM wykorzystuje libsvm i można wypracować precyzję, przywołanie i F-wynik, jak pokazano w poniższym przykładzie:

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) 

która będzie produkować moc podobną do tej:

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

oczywiście możesz użyć wspomnianego libsvm tools, ale są one zaprojektowane do pracy tylko z klasyfikacją binarną, natomiast scikit umożliwia pracę z multiclass.

+0

Jakich zestawów danych ładujesz? Na przykład, jeśli mój zestaw danych znajduje się w pliku tekstowym, jak z nich korzystać? –

+0

W przykładzie użyłem predefiniowanego zestawu danych o nazwie iris, który jest dostarczany z 'scikit-learn'. W przypadku konkretnego zestawu danych konieczne będzie przekonwertowanie danych tekstowych na numpy. – jabaldonedo

Powiązane problemy