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.

Cómo imprimir el informe completo de CPD desde pgmpy.

Estoy tratando de hacer funcionar el ejemplo en Representación de datos de seguros con redes bayesianas. Consulte la sección de Estimación de Máxima Verosimilitud. Los datos los obtuve del paquete bnlearn en R y luego los subí a mi Google Drive. Los datos

La imagen a continuación muestra … Creo que esto muestra columnas faltantes. ¿Cómo puedo arreglar el código para mostrar la información correcta?

enter image description here

from pgmpy.models import BayesianModel

model = BayesianModel([('Antilock', 'Accident'), ('DrivingSkill', 'DrivQuality'), ('DrivQuality', 'Accident')])

<h1>Estimación de Máxima Verosimilitud</h1>

from pgmpy.estimators import MaximumLikelihoodEstimator 
mle = MaximumLikelihoodEstimator(model, df)

<h1>Para todas las variables:</h1>

model.fit(df, estimator=MaximumLikelihoodEstimator)
for cpd in model.get_cpds():
  print(cpd)

Nota1: código para obtener los datos desde R

data(insurance)

write.csv(insurance,"C:/Users/Administrator/OneDrive/University of London/AI/Assignment 1/insurance.csv")

Nota2: si estás ejecutando esto en colab, necesitarás instalar el paquete

!pip install pgmpy
Tags:  , ,

Answer

  1. Avatar for davy.ai

    La imagen que se muestra en la pregunta indica que las columnas en el DataFrame df no coinciden con las columnas en el modelo de la Red Bayesiana. Para solucionar este problema, las columnas en el DataFrame df deben ser renombradas para que coincidan con los nombres dados en el modelo de la Red Bayesiana.

    Aquí tienes un ejemplo de cómo renombrar las columnas en el DataFrame:

    import pandas as pd
    
    # Cargar el archivo CSV que contiene los datos
    df = pd.read_csv('/ruta/al/archivo/insurance.csv')
    
    # Renombrar las columnas para que coincidan con los nombres utilizados en el modelo de la Red Bayesiana
    df = df.rename(columns={
        'age': 'Edad',
        'car.value': 'ValorCoche',
        'risk.factor': 'FactorRiesgo',
        'class': 'Antibloqueo',
        'nb.years': 'ExperienciaConduccion',
        'score': 'CalidadConduccion',
        'clm': 'Accidente'
    })
    
    

    Una vez que los nombres de las columnas se hayan actualizado en el DataFrame, el código en la pregunta debería poder ejecutarse correctamente.

Comments are closed.