Dado que, en general, los alogoritmos de bayes Naive implementados por la mayoría de las bibliotecas no admiten la clasificación de múltiples etiquetas. Aunque puede diseñar su propio algoritmo tomando inspiración del enfoque ingenuo de bayes.
Para una clase particular c, y documento d (con 3 palabras w1, w2, w3)
'/' significa 'dado' p (a / b) = probabilidad (a dado b)
Según el teorema de bayes.
p (c / d) = p (c, d) / p (d)
p (c / d) = (p (c) * p (d / c)) / p (d)
dónde:
p (d / c) = p (w1 / c) * p (w2 / c) * p (w3 / c)
Dado que se supone que las palabras son independientes entre sí.
Y p (w1 / c) se puede obtener usando su código, calculando el recuento de w1 dentro de los documentos de clase c dividido por el recuento general de w1 en todos los documentos o puede usar su propia lógica
Pero si quieres evitar escribir código detallado
puede reestructurar sus datos de entrada para lograr la clasificación de múltiples etiquetas. de modo que un documento dado d con n etiquetas / clases (por ejemplo, d etiquetado con c1, c2, c3) se expanda en datos de n muestras (3 aquí) del mismo documento d con una etiqueta diferente cada vez ((d, c1), ( d, c2), (d, c3)). Ahora puede pasar estos datos a cualquier biblioteca R / python que admita bayes ingenuos multinomiales. Lo mismo debe hacerse en su conjunto de datos también. Actualmente, está pasando traindata $ topics que es y variable (etiquetas de entrenamiento) tal como es, sin modificaciones.
Incluso después de entrenar sus datos con este enfoque. Debe usar un umbral de probabilidad, por ejemplo, 0.2, de modo que las etiquetas de clase con probabilidad superior a 0.2 se asignen a ese documento de prueba.
Más mejor enfoque que requiere reestructurar su entrada
Si tiene etiquetas de clase 'n', entonces puede entrenar 'n' diferentes clasificadores de bayes ingenuos binarios para cada una de las clases. Por ejemplo, para entrenar un clasificador para la clase 'c1', entrena un clasificador ingenuo bayes con la variable dependiente Y que denota la presencia de la clase c1 en ese documento como '1' y la ausencia como '0'.
Después de entrenar 'n' binario ingenuo bayes clasificador utilizando este enfoque. Ahora usará la salida de estos n clasificadores. por ejemplo, si está fuera de estos, n clasificadores, si un clasificador particular, que corresponde a la clase 'c1' tiene una probabilidad de salida superior a 0,5, la etiqueta de clase 'c1' se asignará a este documento de prueba.