Как я могу узнать вероятность класса, предсказанного функцией prec() в Vector Vector Machine?
Как я могу узнать вероятность выборки, которую он принадлежит классу, предсказанному функцией prec() Scikit-Learn в поддержке Vector Machine?
>>>print clf.predict([fv])
[5]
Есть ли какая-либо функция?
Ответы
Ответ 1
Используйте clf.predict_proba ([fv]), чтобы получить список с прогнозируемыми вероятностями для каждого класса. Однако эта функция недоступна для всех классификаторов.
Что касается вашего комментария, рассмотрите следующее:
>> prob = [ 0.01357713, 0.00662571, 0.00782155, 0.3841413, 0.07487401, 0.09861277, 0.00644468, 0.40790285]
>> sum(prob)
1.0
Сумма вероятности равна 1.0, поэтому умножьте на 100, чтобы получить процент.
Ответ 2
Определенно прочитайте этот раздел документации, так как там задействованы некоторые тонкости. См. Также Scikit-learn predict_proba дает неправильные ответы
В принципе, если у вас многоклассовая проблема с большим количеством данных, предсказываемая ранее предсказанная версия, работает хорошо. В противном случае вам, возможно, придется делать с заказом, который не дает оценки вероятности из функции принятия решения.
Вот хороший мотив для использования pred_proba для получения словаря или списка классов с вероятностью:
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))
Ответ 3
При создании класса SVC для вычисления вероятностных оценок устанавливается probability=True
:
http://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html
Затем вызовите fit
, как обычно, а затем predict_proba([fv])
.