Точность для каждой вероятности отсечки в задаче бинарной классификации (python точность склеарна) - PullRequest
1 голос
/ 27 января 2020

Представьте себе проблему двоичной классификации. Допустим, у меня есть 800 000 предсказанных вероятностей, хранящихся в pred_test. Я определяю cutoff как любое значение в pred_test, так что значениям, которые больше или равны cutoff, присваивается значение 1, а значениям, которые меньше cutoff, присваивается значение 0.

Есть ли в sklearn функция, которая возвращает точность модели для каждого cutoff в pred_train? Я хотел бы видеть точность модели как функцию каждого среза для систематического выбора среза.

Я пробовал следующее:

_list = []
for cutoff in np.unique(np.sort(pred_test)):
    binary_prediction = np.where(pred_test >= cutoff, 1, 0)
    _list.append( (cutoff, binary_prediction == y_test).sum() / len(pred_test) )

Здесь y_test - это земля истина (массив с наблюдаемыми результатами для каждой из 800 000 строк). Этот код возвращает список, в котором каждое значение содержит отсечку и соответствующий ей показатель точности.

Объект pred_test имеет около 600 000 различных значений, поэтому я повторяюсь около 600 000 раз. Приведенный выше код работает, но это занимает очень много времени, чтобы завершить sh. Есть ли более эффективный способ сделать это? Держу пари, что sklearn уже имеет функцию, которая делает это.

1 Ответ

2 голосов
/ 28 января 2020

Вот какой-то похожий поток для его проверки: Получение максимальной точности для двоичного вероятноста c классификатор в scikit-learn

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

...