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