Моя цель - нарисовать PR-кривую по отсортированной вероятности каждого образца для определенного класса. Тем не менее, я обнаружил, что полученные вероятности svm's pred_proba() имеют два разных поведения, когда я использую два разных стандартных набора данных: диафрагму и цифры.Сбивание вероятностей предсказания svm scikit-learn svm scikit-learn
Первый случай оценивается с помощью «диафрагмы» с приведенным ниже кодом python, и он работает разумно, что класс получает наивысшую вероятность.
D = datasets.load_iris()
clf = SVC(kernel=chi2_kernel, probability=True).fit(D.data, D.target)
output_predict = clf.predict(D.data)
output_proba = clf.predict_proba(D.data)
output_decision_function = clf.decision_function(D.data)
output_my = proba_to_class(output_proba, clf.classes_)
print D.data.shape, D.target.shape
print "target:", D.target[:2]
print "class:", clf.classes_
print "output_predict:", output_predict[:2]
print "output_proba:", output_proba[:2]
Затем он производит выходные данные, как показано ниже. По-видимому, самая высокая вероятность каждого образца соответствует выходам прогноза(): 0,97181088 для образца №1 и 0,96961523 для образца № 2.
(150, 4) (150,)
target: [0 0]
class: [0 1 2]
output_predict: [0 0]
output_proba: [[ 0.97181088 0.01558693 0.01260218]
[ 0.96961523 0.01702481 0.01335995]]
Однако, когда я изменить набор данные на «цифру» со следующим кодом, вероятности показывают обратное явление, что самая низкая вероятность каждого образца доминирует выводимые метки прогнозировани() с вероятностью 0.00190932 для образец №1 и 0,00220549 для образца №2.
D = datasets.load_digits()
Выходы:
(1797, 64) (1797,)
target: [0 1]
class: [0 1 2 3 4 5 6 7 8 9]
output_predict: [0 1]
output_proba: [[ 0.00190932 0.11212957 0.1092459 0.11262532 0.11150733 0.11208733
0.11156622 0.11043403 0.10747514 0.11101985]
[ 0.10991574 0.00220549 0.10944998 0.11288081 0.11178518 0.11234661
0.11182221 0.11065663 0.10770783 0.11122952]]
Я прочитал this post и это приводит решение с использованием линейной SVM с decision_function(). Однако из-за моей задачи мне все еще нужно сосредоточиться на ядре chi-squared для SVM.
Любые решения?
Поскольку вы уже поняли это, каков ваш вопрос? – omerbp
Мой вопрос заключается в том, как нарисовать кривую PR для вывода квадратного СВМ квадрата. Благодаря :) – user3030046