В настоящее время я работаю над заданием, в котором мне нужно создать наивный байесовский классификатор с использованием полиномиального распределения, используя только python, pandas и numpy (без sklearn).Цель классификатора - указать, является ли финансовая транзакция мошеннической или нет.Данные поезда имеют 5,5 м образцов, а данные испытаний - 660000 образцов.Модель обучена с 8 функциями в данных, и каждая функция состоит из более чем 800 различных значений.
Мне удалось вычислить предыдущие вероятности и вероятности набора данных, но когда дело доходит до таких данных, большую часть времени вы сталкиваетесь с новыми значениями в функциях.то есть функция «количество» имеет 676 различных значений в обучающем наборе, но в наборе тестирования может быть даже больше невидимых значений.Итак, как я могу вычислить вероятность этих значений.Должен ли я использовать функцию smothing:
1 / (Nc + |V|)
или я должен учитывать, что данные фактически никогда не появлялись, и вычислять вероятность появления этих данных в функции
.i.e (1 / (Nc + |V|)) / (1/Number_of_unique_values_in_the_feature)
Я попробовал и то, и другое позже, но немного хуже, чем первое, но все же трудно различить различия.