Herramientas para usar para la estimación de densidad condicional en Python

Tengo un conjunto de datos grande que contiene 3 atributos por fila: A, B, C

Columna A: puede tomar los valores 1, 2 y 0. Columna B y C: puede tomar cualquier valor.

Me gustaría realizar una estimación de densidad usando histogtwigs para P (A = 2 | B, C) y trazar los resultados usando python.

No necesito el código para hacerlo, puedo intentarlo y descifrarlo por mi cuenta. ¿Solo necesito saber los procedimientos y las herramientas que debo usar?

    Para responder a su pregunta general, debemos seguir diferentes pasos y responder diferentes preguntas:

    • ¿Cómo leer un archivo csv (o datos de texto)?

    • ¿Cómo filtrar los datos?

    • ¿Cómo trazar los datos?

    En cada etapa, necesita usar algunas técnicas y herramientas específicas, también puede tener diferentes opciones en diferentes etapas (puede buscar en Internet diferentes alternativas).

    1- Cómo leer el archivo csv:

    Hay una función incorporada para pasar por el archivo csv donde almacena sus datos. Pero la mayoría de la gente recomienda Pandas para tratar con archivos csv.

    Después de instalar el paquete Pandas , puedes leer tu archivo csv usando el comando Read_CSV .

    import pandas as pd df= pd.read_csv("file.csv") 

    Como no compartiste el archivo csv, haré un conjunto de datos al azar para explicar los próximos pasos.

     import pandas as pd import numpy as np t= [1,1,1,2,0,1,1,0,0,2,1,1,2,0,0,0,0,1,1,1] df = pd.DataFrame(np.random.randn(20, 2), columns=list('AC')) df['B']=t #put a random column with only 0,1,2 values, then insert it to the dataframe 

    Nota: Numpy es un paquete de python. Es útil trabajar con operaciones matemáticas. No lo necesitas principalmente, pero lo mencioné para aclarar la confusión aquí.

    En caso de que imprima df en este caso, obtendrá como resultado:

      ACB 0 -0.090162 0.035458 1 1 2.068328 -0.357626 1 2 -0.476045 -1.217848 1 3 -0.405150 -1.111787 2 4 0.502283 1.586743 0 5 1.822558 -0.398833 1 6 0.367663 0.305023 1 7 2.731756 0.563161 0 8 2.096459 1.323511 0 9 1.386778 -1.774599 2 10 -0.512147 -0.677339 1 11 -0.091165 0.587496 1 12 -0.264265 1.216617 2 13 1.731371 -0.906727 0 14 0.969974 1.305460 0 15 -0.795679 -0.707238 0 16 0.274473 1.842542 0 17 0.771794 -1.726273 1 18 0.126508 -0.206365 1 19 0.622025 -0.322115 1 

    2- – Cómo filtrar datos: Existen diferentes técnicas para filtrar datos. La más sencilla es seleccionar el nombre de la columna dentro de su dataframe + la condición. En nuestro caso, el criterio es seleccionar el valor “2” en la columna B.

     l= df[df['B']==2] print l 

    También puede utilizar otras formas como groupby, lambda para pasar por el dataframe y aplicar diferentes condiciones para filtrar los datos.

     for key in df.groupby('B'): print key 

    Si ejecuta los scripts mencionados anteriormente obtendrá:

    Para el primero: solo datos donde B == 2

      ACB 3 -0.405150 -1.111787 2 9 1.386778 -1.774599 2 12 -0.264265 1.216617 2 

    Para el segundo: Imprimir los resultados divididos en grupos.

     (0, ACB 4 0.502283 1.586743 0 7 2.731756 0.563161 0 8 2.096459 1.323511 0 13 1.731371 -0.906727 0 14 0.969974 1.305460 0 15 -0.795679 -0.707238 0 16 0.274473 1.842542 0) (1, ACB 0 -0.090162 0.035458 1 1 2.068328 -0.357626 1 2 -0.476045 -1.217848 1 5 1.822558 -0.398833 1 6 0.367663 0.305023 1 10 -0.512147 -0.677339 1 11 -0.091165 0.587496 1 17 0.771794 -1.726273 1 18 0.126508 -0.206365 1 19 0.622025 -0.322115 1) (2, ACB 3 -0.405150 -1.111787 2 9 1.386778 -1.774599 2 12 -0.264265 1.216617 2) 
    • Cómo trazar sus datos:

    La forma más sencilla de trazar sus datos es mediante el uso de matplotlib

    La forma más fácil de trazar datos en las columnas B, es ejecutando:

     import random import matplotlib.pyplot as plt xbins=range(0,len(l)) plt.hist(df.B, bins=20, color='blue') plt.show() 

    Obtendrás este resultado:

    introduzca la descripción de la imagen aquí

    Si desea trazar los resultados combinados, debe usar diferentes colores / técnicas para hacerlo útil.

     import numpy as np import matplotlib.pyplot as plt a = df.A b = df.B c = df.C t= range(20) plt.plot(t, a, 'r--', b, 'bs--', c, 'g^--') plt.legend() plt.show() 

    Como resultado obtendrás:

    introduzca la descripción de la imagen aquí

    El trazado de datos está impulsado por una necesidad específica. Puede explorar las diferentes formas de trazar los datos repasando los ejemplos del sitio web oficial de marplotlib.org .

    Si está buscando otras herramientas que hagan cosas un poco más sofisticadas que la estimación de densidad no paramétrica con histogtwigs, consulte este enlace al repository de Python o instale directamente el paquete con

     pip install cde 

    Además de una extensa documentación, el paquete implementa

    • No paramétrico (estimación condicional y de densidad de kernel de barrio)
    • semiparamétrico (mínimos cuadrados cde) y
    • Métodos paramétricos basados ​​en redes neuronales (redes de densidad de mezcla, estimación de densidad de kernel)

    Además, el paquete permite computar momentos centrados, divergencias estadísticas (kl-divergence, hellinger, jensen-shannon), percentiles, fallas esperadas y procesos de generación de datos (arma-jump, jump-diffusion, GMMs, etc.)

    Descargo de responsabilidad: soy uno de los desarrolladores de paquetes.