Представьте себе проблему двоичной классификации. Допустим, у меня есть 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
уже имеет функцию, которая делает это.