Реализация наивного байесовского алгоритма в Java - Нужны некоторые рекомендации - PullRequest
7 голосов
/ 22 мая 2010

Как школьное задание я должен реализовать наивный алгоритм Байеса, который я собираюсь сделать на Java.

Пытаясь понять, как это делается, я прочитал книгу «Интеллектуальный анализ данных - практические инструменты и методы машинного обучения», в которой есть раздел на эту тему, но до сих пор не уверен в некоторых основных моментах, которые блокируют мой прогресс.

Поскольку я ищу здесь руководство, а не решение, я расскажу вам, ребята, о чем я думаю в своей голове, что я думаю о правильном подходе, и взамен потребую исправления / руководства, которые будут очень благодарны. обратите внимание, что я абсолютный новичок в наивном алгоритме Байеса, интеллектуальном анализе данных и общем программировании, поэтому вы можете увидеть глупые комментарии / расчеты ниже:

Набор данных обучения, который мне дан, имеет 4 атрибута / функции, которые являются числовыми и нормализованными (в диапазоне [0 1]) с использованием Weka (без пропущенных значений) и одного номинального класса (да / нет)

1) Данные, поступающие из CSV-файла, являются числовыми HENCE

В Java я использую ArrayList of ArrayList и Double для хранения значений атрибутов.

наконец, я не уверен, как получить новые данные? Должен ли я попросить входной файл (например, CSV) или командную строку и попросить 4 значения?

Сейчас я остановлюсь здесь (у меня есть еще вопросы), но я боюсь, что это не получит никаких ответов, учитывая, как долго он получил. Я буду очень признателен тем, кто уделяет время чтению моих проблем и комментариям.

1 Ответ

5 голосов
/ 24 мая 2010

То, что вы делаете, почти правильно.

         + Then to find P( yes | E) and P( no | E) i multiply the PDF value of all 4 given attributes and compare which is larger, which indicates the class it belongs to 

Здесь вы забыли умножить предыдущее P (да) или P (нет). Запомните формулы решения:

P(Yes | E) ~= P(Attr_1 | Yes) * P(Attr_2 | Yes) * P(Attr_3 | Yes) * P(Attr_4 | Yes) * P(Yes)

Для наивных байесовских (и любых других контролируемых алгоритмов обучения / классификации) вам необходимо иметь данные обучения и данные тестирования. Вы используете данные обучения для обучения модели и прогнозирования данных тестирования. Вы можете просто использовать данные обучения в качестве данных тестирования. Или вы можете разделить файл CSV на две части, одну для обучения и одну для тестирования. Вы также можете сделать перекрестную проверку файла CSV.

...