es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

IndexError: el índice 55 está fuera de los límites para el eje 0 con tamaño 55 en el artículo de clasificación de texto multimodal hacia la ciencia de datos.

Estoy tratando de poner en práctica el código sobre el texto de tarea múltiple con clasificación de scikit-learn presentado por Susan Li en https://github.com/susanli2016/Machine-Learning-with-Python/blob/master/Consumer_complaints.ipynb.

Incluso en el repositorio de Github proporcionado, se produce un Index error, que no he podido resolver. En su caso, el error no ocurre inmediatamente (lo cual es mi caso), sino después del cuarto caso y otros usuarios parecen tener el mismo problema.

Sé que esto podría venir del hecho de que el índice del array numpy comienza en 0, lo que haría que el valor máximo del índice sea solo 54…

  • ¿Alguna pista sobre el error original del artículo y cómo solucionarlo?
  • Por cierto, en mi caso, category_id_df.category_id y id_to_category tienen 59 valores diferentes, todos presentes en la matriz de confusión. Pero creo que la partición de prueba incluye 4 nuevas clases que no están presentes en el conjunto de entrenamiento (actual) y que aparecen en blanco en los valores de conf_mat. Esto compensaría el error anunciado de 55. ¿Cómo podría superar esto de manera programática?

    232 para predicted in category_id_df.category_id:
    233   para actual in category_id_df.category_id:
    --> 234     if predicted != actual and conf_mat[actual, predicted] >= 7:
    235       print("'{}' predicho como '{}': {} ejemplos.".format(id_to_category[actual], id_to_category[predicted], conf_mat[actual, predicted]))
    236       display(df.loc[indices_test[(target_test == actual) & (y_pred == predicted)]]    [['class1', 'doc_text']])
    
    IndexError: el índice 55 está fuera de los límites para el eje 0 con tamaño 55
    

    Gracias.

    Tags:  , , ,

    Answer

    1. Avatar for davy.ai

      Parece que el IndexError es causado por tratar de acceder a un índice que no existe en la matriz conf_mat. Una posible solución sería comprobar el valor máximo de category_id_df.category_id y asegurarse de que las dimensiones de la matriz conf_mat sean apropiadas.

      En cuanto al problema con las nuevas clases en el conjunto de pruebas, una posible solución podría ser agregar filas y columnas adicionales a la matriz conf_mat para esas clases faltantes e inicializarlas con ceros. Esto se puede hacer comprobando si la clase está presente en el conjunto de pruebas pero no en el conjunto de entrenamiento, y añadiendo una nueva fila y columna a conf_mat para esa clase.

      Otra opción podría ser modificar el código para ignorar esas clases faltantes durante la evaluación y solo considerar las clases que están presentes tanto en el conjunto de entrenamiento como en el conjunto de pruebas. Esto se puede hacer filtrando las filas y columnas de conf_mat basándose en las clases comunes entre los dos conjuntos.

    Comments are closed.