2013-02-22 8 views

Antwort

12

Verwenden Sie clf.predict_proba ([fv]), um eine Liste mit vorhergesagten Wahrscheinlichkeiten pro Klasse zu erhalten. Diese Funktion ist jedoch nicht für alle Klassifikatoren verfügbar.

Ihren Kommentar In Bezug auf Folgendes beachten:

>> prob = [ 0.01357713, 0.00662571, 0.00782155, 0.3841413, 0.07487401, 0.09861277, 0.00644468, 0.40790285] 
>> sum(prob) 
1.0 

Die Wahrscheinlichkeiten auf 1,0 summieren, so mit 100 multiplizieren Prozentsatz zu erhalten.

5

Wenn SVC-Klasse erstellen, die Wahrscheinlichkeitsschätzungen zu berechnen, indem probability=True Einstellung:

http://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html

Dann rufen Sie fit wie gewohnt und dann predict_proba([fv]).

+0

Es gibt: vorhergesagte Werte Array „[[0,01357713 0,00662571 0,00782155 0,3841413 0,07487401 0,09861277 0,00644468 0,40790285]]“ nicht eine Wahrscheinlichkeit, wie: Klasse 8: 80%, Klasse 4: 40% – postgres

+3

Nun, genau das, was Sie suchen: 40% für Klasse 7 (vorausgesetzt, die erste Klasse ist "Klasse 0"), 38% für Klasse 3, 10% für Klasse 5 und 7% für Klasse 4. – ogrisel

11

Lesen Sie unbedingt this section of the docs, da es einige Feinheiten gibt. Siehe auch Scikit-learn predict_proba gives wrong answers

Grundsätzlich, wenn Sie ein Multi-Klassen-Problem mit vielen Daten haben, funktioniert predict_proba wie vorgeschlagen früher gut. Andernfalls müssen Sie möglicherweise mit einer Reihenfolge auskommen, die keine Wahrscheinlichkeitswerte von decision_function liefert.

Hier ist ein schönes Motiv für predict_proba mit einem Wörterbuch oder eine Liste der Klasse vs Wahrscheinlichkeit zu erhalten:

model = svm.SVC(probability=True) 
model.fit(X, Y) 
results = model.predict_proba(test_data)[0] 

# gets a dictionary of {'class_name': probability} 
prob_per_class_dictionary = dict(zip(model.classes_, results)) 

# gets a list of ['most_probable_class', 'second_most_probable_class', ..., 'least_class'] 
results_ordered_by_probability = map(lambda x: x[0], sorted(zip(model.classes_, results), key=lambda x: x[1], reverse=True)) 
Verwandte Themen