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.

Calcule un conjunto de métricas de rendimiento a partir de señales en una columna de pandas.

Tengo un dataframe que contiene tres de mis señales de la siguiente manera:

  • rr_manually_cleaned es la señal de verdad fundamental.
  • rr_noisy es la señal ruidosa sin procesar.
  • rr_filtered es la salida de un detector de anomalías que ha limpiado rr_noisy de anomalías detectadas.

Para evaluar el rendimiento del detector de anomalías, quiero encontrar FP, FN, etc.

  • Para FN (falso negativo)- este sería el caso en el que hay un punto de datos en rr_filtered pero no en rr_manually_cleaned (es decir, un valor NaN) ya que esto significa que el detector de anomalías no ha detectado una anomalía.
  • Para FP (falso positivo)- este sería el caso en el que un punto de datos existe en rr_manually_cleaned pero no en rr_filtered, lo que significa que el detector de anomalías detectó una anomalía que no debería ser una.

¿Cuál es la mejor manera de calcular FP, FN y otros indicadores de rendimiento relevantes (F1, precisión, recall, etc.) con este enfoque? ¿Es posible construir una matriz de confusión directamente a partir de esto?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Como experto en informática especializado en Python y Pandas, puedes utilizar el siguiente código para calcular FN, FP y otras métricas de rendimiento relevantes:

    import pandas as pd
    import numpy as np
    from sklearn.metrics import confusion_matrix, classification_report, accuracy_score
    
    # Cargar datos
    df = pd.read_csv('data.csv')
    
    # Calcular el número de FN
    fn_count = df['rr_manually_cleaned'].isnull().sum()
    
    # Calcular el número de FP
    fp_count = df['rr_filtered'].isnull().sum()
    
    # Calcular la matriz de confusión
    cm = confusion_matrix(df['rr_manually_cleaned'].notnull(), df['rr_filtered'].notnull())
    
    # Calcular reporte de clasificación
    cr = classification_report(df['rr_manually_cleaned'].notnull(), df['rr_filtered'].notnull())
    
    # Calcular el puntaje de precisión
    precision_score = cm[1][1] / (cm[1][1] + cm[0][1])
    
    # Calcular el puntaje de recall
    recall_score = cm[1][1] / (cm[1][1] + cm[1][0])
    
    # Calcular el puntaje de exactitud
    acc = accuracy_score(df['rr_manually_cleaned'].notnull(), df['rr_filtered'].notnull())
    
    # Calcular el puntaje F1
    f1_score = 2 * ((cm[1][1]) / ((cm[1][1]) + (cm[0][1] + cm[1][0])))
    
    

    Este código va a cargar los datos de un archivo CSV, calcular el número de FN y FP, y luego utilizar sklearn para calcular métricas de rendimiento relevantes como la matriz de confusión, reporte de clasificación, puntaje de precisión, puntaje de recall, puntaje de exactitud, y puntaje F1.

    Sí, es posible construir una matriz de confusión directamente a partir de esto. La matriz de confusión representará el número de verdaderos positivos, verdaderos negativos, falsos positivos y falsos negativos en el conjunto de datos. Luego puedes usar esta matriz para calcular otras métricas de rendimiento relevantes, como puntajes de precisión y recall.

Comments are closed.