реализовать кривую ROC для наивного байесовского классификатора с использованием дискретных прогнозов - PullRequest
0 голосов
/ 19 января 2019

Мне нужно реализовать наивный байесовский классификатор и построить кривую ROC для

1) only 2 classes(Trousers and pullovers) out of 10 classes of the [FMNIST][1] dataset and then  

2) second for all the ten classes without using scikit library and just basic matplotlib, pandas libraries from scratch. 

Я успешно реализовал наивный байесовский классификатор для обоих случаев, но я не могу понять, как реализовать кривую ROC, поскольку для этого требуется установить пороговое значение. Наивный байесовский классификатор просто использует правдоподобие и до получения постериодов для дискретных распределений, а значения признаков являются значениями RGB (0-255), которые преобразуются в двоичную форму с использованием порогового значения 127 (количество объектов в тестовом образце составляет 28 * 28 = 784). Я думаю, что для 10 классов мне нужно построить 10 кривых, взяв один из классов за положительный, а остальные за другим.

Мой классификатор предсказывает класс для тестовой выборки на основе максимума апостериорных вероятностей для всех классов. Но я не могу понять, как я могу определить порог и как построить кривую ROC. Я просмотрел некоторые из стековых потоков и другие ссылки, но не смог понять. Пожалуйста, объясните, как я новичок в машинном обучении.

1 Ответ

0 голосов
/ 11 августа 2019

Немного поздно, но ...

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

Например, если ваш порог был 0,8, а 1 и 0 означают положительный и отрицательный соответственно; тогда ваш прогноз будет 1, если P (Y = 1 | X)> = 0,8 и 0 в противном случае.

...