Como geralmente, os alogoritmos do Naive bayes implementados pela maioria das bibliotecas não suportam a classificação de vários rótulos. Embora você possa criar seu próprio algoritmo, inspirando-se na abordagem ingênua de bayes.
Para uma classe específica c e documento d (com 3 palavras w1, w2, w3)
'/' significa 'dado' p (a / b) = probabilidade (um dado b)
Conforme o teorema de bayes.
p (c / d) = p (c, d) / p (d)
p (c / d) = (p (c) * p (d / c)) / p (d)
Onde:
p (d / c) = p (w1 / c) * p (w2 / c) * p (w3 / c)
Como as palavras são consideradas independentes umas das outras.
E p (w1 / c) pode ser obtido usando seu código, calculando a contagem de w1 dentro dos documentos da classe c divididos pela contagem geral de w1 em todos os documentos ou você pode usar sua própria lógica
Mas se quiser evitar escrever código detalhado
você pode reestruturar seus dados de entrada para obter a classificação de vários rótulos. de modo que um determinado documento d com n etiquetas / classes (por exemplo, d marcado com c1, c2, c3) seja expandido para dados de n amostras (3 aqui) do mesmo documento d com rótulo diferente a cada vez ((d, c1), ( d, c2), (d, c3)). Agora você pode passar esses dados para qualquer biblioteca R / python que suporte bayes multinomiais ingênuos. O mesmo precisa ser feito no seu conjunto de dados também. Atualmente, você está passando os tópicos $ de dados que são variáveis y (rótulos de treinamento), sem modificações.
Mesmo depois de treinar seus dados usando essa abordagem. Você precisa usar um limite de probabilidade, por exemplo, 0,2, para que os rótulos de classe com probabilidade acima de 0,2 sejam atribuídos a esse documento de teste.
Abordagem melhor que exige reestruturar sua contribuição
Se você tiver 'n' rótulos de classe, poderá treinar 'n' diferentes classificadores binários ingênuos para cada classe. Por exemplo, para treinar um classificador para a classe 'c1', você treina um classificador ingênuo de bayes com a variável dependente Y, indicando a presença da classe c1 nesse documento como '1' e a ausência como '0'.
Depois de treinar o classificador 'n' binário ingênuo de bayes usando essa abordagem. Agora você usará a saída desses n classificadores. por exemplo, se um desses n classificadores, se um classificador específico que corresponde à classe 'c1' tiver uma probabilidade de saída acima de 0,5, o rótulo da classe 'c1' será atribuído a este documento de teste.