У меня есть двухклассная проблема классификации Байеса с четырьмя непрерывными функциями. Я пытаюсь частично воспроизвести алгоритм алгоритмов байков, который использует Orange для расчета вероятностей. Но мне не удалось получить те же значения, что и оранжевые.Алгоритм Orange Bayes с непрерывными функциями
наборданных Размер: 150 (class0: 88 и class1: 62)
Я использую следующий алгоритм
p(class0 | X1, X2, X3, X4) = L0/(L0 + L1)
p(class1 | X1, X2, X3, X4) = L1/(L0 + L1)
где L0 и L1 являются Вероятности
L0 = prior_class0 * product(p(Xi|class0))
L1 = prior_class1 * product(p(Xi|class1))
prior_class0 and prior_class1 are Laplacian estimators
prior_class0 = (88 + 1)/(150 + 2)
prior_class1 = (62 + 1)/(150 + 2)
Orange использует лесс для вычисления условных вероятностей (я думаю, его не нужно воспроизводить). Для этого набора данных он выводит 49 точек для обоих классов, как указано в python object classifier.conditional_distributions. Используя линейную интерполяцию между соседними точками для Xi, я могу вычислить p (Xi | class0) и p (Xi | class1).
1) Можно ли комментировать алгоритм Orange Bayes с непрерывными функциями?
2) Или любой технический совет, как настроить компилятор/IDE, чтобы я мог отлаживать код Orange C++ и проверять некоторые промежуточные результаты от функций в оранжевом/источнике/оранжевом/bayes.cpp?
Спасибо за ответ! Разделение p (class0 | Xi)/p (класс0) делает разницу, и теперь я получаю те же результаты, что и в выходе Orange. Таким образом, вероятность рассчитывается для ex L0 = before_class0 * product (p (Xi | class0)/p (class0)). Однако возникает вопрос, как эта формула связана с теоремой Байеса? если я правильно понимаю, то по теореме Байеса вероятность вычисляется путем умножения предыдущей вероятности с условными вероятностями, как в исходном сообщении. Можете ли вы дать некоторую ссылку на оправдание формулы, которую использует оранжевый, поскольку я не очень хорошо знаком с классификацией байков? –