Как Школьное присвоение я обязан реализовывать Наивный Байесов алгоритм, который я намереваюсь сделать в Java.
В попытке понять, как его сделанный, я прочитал книгу "Анализ данных - Практические Инструменты Машинного обучения и Методы", который имеет раздел по этой теме, но все еще не уверен на некоторых основных точках, которые блокируют мой успех.
Так как я ищу руководство не решение в здесь, я скажу Вам парней, что я думающий в моей голове, что я думаю, являюсь корректным подходом, и в ответ попросите исправление/руководство, которое будет очень цениться. обратите внимание на то, что я - абсолютный новичок на Наивном Байесовом алгоритме, Анализе данных и в общем программировании, таким образом, Вы могли бы видеть глупые комментарии/вычисления ниже:
Обучающий набор данных, который мне дают, имеет 4 атрибута/функции, которые являются числовыми и нормализованы (в диапазоне [0 1]) использование Weka (никакие отсутствующие значения) и один номинальный класс (да/нет)
1) Данные, прибывающие из файла CSV, являются числовыми СЛЕДОВАТЕЛЬНО
(array class yes and array class no)
sum of the values in row / number of values in that row
) и стандартное предсказание для каждого из 4 атрибутов (столбцы) каждого класса(n-mean)^2/(2*SD^2),
P( yes | E)
и P( no | E)
я multiply the PDF value of all 4 given attributes and compare which is larger
, который указывает на класс, он принадлежит В temrs Java я использую ArrayList of ArrayList
и Double
сохранить значения атрибута.
наконец я не уверен как к получить новые данные? Я должен попросить входной файл (как csv) или командная строка и попросить 4 значения?
Я остановлюсь здесь на данный момент (действительно имейте больше вопросов), но я волнуюсь, что это не получит ответов, данных сколько времени его полученный. Я буду действительно ценить для тех, которые дают их время, читая мои проблемы и комментарий.
То, что вы делаете, почти правильно.
+ Затем, чтобы найти P (да | E) и P (нет | E), я умножаю значение PDF всех 4 заданных атрибутов и сравниваю, какой из них больше, что указывает на класс, к которому он принадлежит.
Здесь вы забыли умножить предыдущее 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.