2017-02-27 1 views
0

Ich benutze die scikit-learn SVM zur Textklassifizierung und befolge die Richtlinie here. Aber ich bin verwirrt, wie die predict_proba Methode zu verwenden, um die Wahrscheinlichkeiten, assoziieren mit dem richtigen Etikett zu holen und holen die oben 3.scikit-learn/svm - Hol Wahrscheinlichkeiten und zugehörige Beschriftungen nach 'predict_proba'

vectorizer = HashingVectorizer() 
clf = svm.SVC(probability=True,class_weight='balanced') 

test_data = [...] 

test_vectors = vectorizer.transform(test_data) 
predicted = clf.predict_proba(test_vectors) 
for doc, pred in zip(test_labels, predicted): 
    print('%r => %s' % (doc, test_labels[pred])) 

Auf den obigen Code läuft ich diese Ausnahme erhalten:

TypeError: only integer arrays with one element can be converted to an index

Dies ist verständlich, da die test_labels eine Reihe von Wahrscheinlichkeiten ist, aber ich bin mir nicht sicher, wie man die zugehörige Bezeichnung und Wahrscheinlichkeit holt.

+0

Bitte buchen Sie die vollständige Fehler-Stack-Trace. In welcher Zeile bekommen Sie den Fehler? Und zeigen Sie auch einige Beispiele Ihrer Daten –

Antwort

0

Dies ist, was ich getan habe und es hat für mich geklappt. Hoffe, dass dies für jemanden hilfreich wäre:

clf = cPickle.load(...) 
    test_data, test_labels = load_testfiles(_testpath) 

    for td in zip(test_data,test_labels): 
     X = vectorizer.transform([td[0]]) 
     label = td[1] 
     res = clf.predict_proba(X)[0] 
     # sd = np.std(res) 
     # max = np.amax(res) 
     # min = np.amin(res) 
     # mean = np.mean(res) 
     # median = np.median(res) 
     print("test--->actual=",label,"pred=",res) 
Verwandte Themen