Как предикат_проба в склеарне выдает два столбца? каково их значение? - PullRequest
0 голосов
/ 27 апреля 2019

Я использовал простую логистическую регрессию для прогнозирования проблемы и пытался построить precision_recall_curve и roc_curve с predict_proba(X_test). Я проверил строку документации predict_proba, но у меня не было много деталей о том, как это работает. Я каждый раз получал неверные данные и проверял, что y_test, predict_proba(X_test) не совпадает. Наконец обнаруженный predict_proba() производит 2 столбца, и люди используют второй.

Было бы очень полезно, если бы кто-то мог объяснить, как он создает две колонки и их значение. ТИА.

1 Ответ

1 голос
/ 27 апреля 2019

predict_proba() производит вывод формы (N, k), где N - количество точек данных, а k - количество классов, которые вы пытаетесь классифицировать. Кажется, у вас есть два класса и, следовательно, у вас есть 2 столбца. Скажите, что ваши ярлыки (классы) - «здоровые», «диабет»], если прогнозируется, что точка данных имеет 80% шансов заболеть диабетом и, следовательно, 20% шансов быть здоровым, тогда ваш выходной ряд для этой точки будет [0,2 0,8], чтобы отразить эти вероятности. В общем, вы можете пройти прогнозируемый массив и получить вероятности для k-го класса с помощью model.predict_proba(X)[:,k-1]

Что касается построения графика, вы можете сделать следующее для precision_recall_curve:

predicted = logisticReg.predict_proba(X_test)
precision, recall, threshold = precision_recall_curve(y_test, predicted[:,1])

Для РПЦ:

predicted = logisticReg.predict_proba(X_test)
fpr, tpr, thresholds = precision_recall_curve(y_test, predicted[:,1])

Обратите внимание, что это изменится для классификации по нескольким меткам. Вы можете найти пример этого в документации по sklearn здесь

...