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.

Obtenga los puntajes de probabilidad de confianza para cada resultado predicho en Catboost Classifier.

He construido un modelo de aprendizaje automático utilizando el clasificador Catboost para predecir la categoría de mi resultado según la captura de pantalla 1. Sin embargo, si recibo una entrada desconocida o cualquier entrada con la que el modelo no haya sido entrenado, entonces necesito devolverla como nula.

Mi idea para abordar esto se basó en la probabilidad de la puntuación de confianza según la captura de pantalla 2 (Resultado Esperado). Para una entrada conocida, el modelo tendría una puntuación de probabilidad alta y para cualquier entrada desconocida no vista, el modelo tendría una puntuación de confianza baja.

¿Cómo puedo lograr esto y agregar una columna de probabilidad a mis resultados predichos según la captura de pantalla 2 (Resultado Esperado)?

Código con el que estoy trabajando

pred = pipe_model_.predict(df_unseen)
predict_proba = pipe_model_.predict_proba(df_unseen)

Obtener el valor de RawFormulaVal predicho

preds_raw = pipe_model_.predict(df_unseen,
prediction_type=’RawFormulaVal’)

La salida del código anterior en predict_proba es la siguiente:

Captura de pantalla

Dataframe de Ejemplo de Entrada Entrenado (Captura de pantalla 1)

Captura de pantalla

La Salida Predicha Esperada es la siguiente (Captura de pantalla 2) y el resaltado en amarillo es aquel que el modelo nunca ha visto o entrenado, por lo que la probabilidad es baja y puedo escribir una condición if para omitirlo según mis requerimientos.

Captura de pantalla

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para agregar una columna de probabilidades a los resultados predichos, podemos utilizar el método predict_proba() de CatboostClassifier que hemos entrenado. Este método devuelve las probabilidades predichas de cada clase para los datos de entrada.

    Aquí mostramos cómo podemos modificar el código para obtener la salida esperada:

    pred = pipe_model_.predict(df_unseen)
    predict_proba = pipe_model_.predict_proba(df_unseen)
    
    # Agregar columna de probabilidad a los resultados predichos
    pred_df = pd.DataFrame(pred, columns=['categoria'])
    pred_df['probabilidad'] = predict_proba.max(axis=1)
    
    # Establecer la probabilidad como nula para las entradas desconocidas
    pred_df.loc[pred_df['categoria'] == 'desconocido', 'probabilidad'] = None
    

    El código primero predice la categoría para los datos de entrada utilizando el método predict(). Luego, se utiliza el método predict_proba() para obtener las probabilidades predichas de cada clase para los datos de entrada.

    A continuación, creamos un nuevo DataFrame pred_df para almacenar los resultados predichos y las probabilidades correspondientes. Primero agregamos la categoría predicha al DataFrame, y luego agregamos una nueva columna llamada probabilidad. Esta columna se llena con el valor de probabilidad máximo para cada fila en la salida de predict_proba.

    Finalmente, establecemos el valor de probabilidad como None para cualquier fila donde la categoría predicha sea 'desconocido'. Esto se debe a que el modelo no ha sido entrenado con estas entradas, por lo que no podemos asignarles un valor de probabilidad.

    Con estas modificaciones, la salida debería coincidir con la salida esperada mostrada en la Captura de pantalla 2.

Comments are closed.