Problema
Tentei usar bayes Naive em um conjunto de dados rotulados de dados sobre crimes, mas obtive resultados realmente ruins (precisão de 7%). Naive Bayes corre muito mais rápido do que outros alogoritmos que eu estou usando, então eu queria tentar descobrir por que a pontuação era tão baixa.
Pesquisa
Depois de ler, descobri que os bayes ingênuos deveriam ser usados com conjuntos de dados balanceados, pois possuem um viés para classes com maior frequência. Como meus dados estão desequilibrados, eu queria tentar usar o Complementary Naive Bayes, pois ele é feito especificamente para lidar com distorções de dados. No artigo que descreve o processo, o aplicativo é para classificação de texto, mas não vejo por que a técnica não funcionaria em outras situações. Você pode encontrar o artigo ao qual estou me referindo aqui . Em resumo, a idéia é usar pesos com base nas ocorrências em que uma classe não aparece.
Depois de fazer algumas pesquisas, consegui encontrar uma implementação em Java, mas infelizmente não conheço nenhum Java e simplesmente não entendo o algoritmo suficientemente bem para me implementar.
Questão
onde posso encontrar uma implementação em python? Se isso não existir, como devo implementá-lo eu mesmo?