Поскольку у вас есть набор двоичных данных, вот хорошая реализация с использованием C:
http://users.ics.tkk.fi/jhollmen/BernoulliMix/
Это программное обеспечение с открытым исходным кодом, которое мы используем в настоящее время в нашем курсе, вы можете на самом деле проверить, как он реализовалалгоритм.
А вот вопрос, который вы задали, вот мое понимание.
Что делает наивный байесовский классификатор (NBC), это предсказывать P (C | X) с учетом некоторых данных и метки.Согласно теореме Байеса,
P(C|X) = \frac{P(X|C)P(C)}{P(X)}
, что означает, что все, что вы можете сделать, предсказать класс неизвестных данных.И наоборот, то, что вы хотите сделать, это P (X | C).Следовательно, вы можете обучить свою модель следующим образом:
P(X|C) = \frac{P(C|X)P(X)}{P(C)}
Соответственно, вы должны принять распределение для ваших данных ... и тому подобное, поэтому, это может быть настолько точным, если у вас неверное предположениес вашими данными.В вашем случае у вас есть бинарные атрибуты X, которые необходимо оценить из класса меток, если вы предполагаете, что атрибуты независимы, то, что вам нужно, это примерно так:
P(C|X_1,X_2,X_3,X_4,X_5) \proportional P(X_1|C)P(X_2|C)P(X_3|C)P(X_4|C)P(X_5|C)P(C)
, что не так просторешить .....