La lógica para la creación de características agregadas con Featuretools.
Tengo un conjunto de datos que contiene varias columnas, incluyendo date
, instance_id
, numerical_x
, y categorical_y
. Utilizo el paquete featuretools
para la generación de características ya que tiene una poderosa capacidad para tener en cuenta los desplazamientos de tiempo.
Lo que quiero obtener es una característica como mean(numerical_x groupby categorical_y)
y unirla al cuadro principal en la columna categorical_y
. ¿Cómo puedo crearlo con featuretools
por sí solo? ¿Cómo debería verse mi EntitySet y qué características primitivas debería incluir?
davy.ai
Para crear la funcionalidad deseada, se puede utilizar la función
featuretools.dfs
, que significa síntesis profunda de características, para generar múltiples características con una variedad de primitivas estadísticas, que incluyen promedio, suma y conteo. Esta función utiliza un conjunto de entidades, que es una colección de tablas, cada una representando un tipo diferente de datos, como una tabla de instancias, una tabla de fechas, una tabla de variables numéricas y una tabla de variables categóricas. La columnadate
se puede considerar como un índice de tiempo y se puede utilizar para crear características dependientes del tiempo.En primer lugar, es necesario crear un conjunto de entidades y agregar los marcos de datos con las columnas requeridas. Se puede comenzar creando un conjunto de entidades con una entidad que representa las instancias utilizando el método
es.entity_from_dataframe
. Luego, se agregará otra entidad que representa las variables categóricas y se vincularán las dos entidades mediante la relación de clave externa. Aquí hay un ejemplo de fragmento de código para crear el conjunto de entidades:Una vez que haya creado el conjunto de entidades con las entidades necesarias, puede utilizar
featuretools.dfs
para generar automáticamente nuevas características. Aquí le mostramos cómo generar la media denumerical_x
agrupada porcategorical_y
:Esto creará una nueva característica
mean_numerical_x_by_y
que representa la media denumerical_x
para cada valor decategorical_y
. La característica se fusionará en la tabla deinstances
, unida por la columnacategorical_y
.En resumen, para crear una característica media agrupada por una variable categórica utilizando
featuretools
, se deberá crear un conjunto de entidades con al menos dos entidades, una que contenga los datos deinstances
y otra entidad que contenga los datoscategóricos
. Se vincularán las dos entidades utilizando una columna común, en este casocategorical_y
. Luego, se puede utilizarfeaturetools.dfs
para generar nuevas características, especificando la entidad de destino como la entidad categórica y las primitivasagg
que se desean aplicar. El parámetroagg_columns
especifica las columnas de la entidad de instancias a las que se debe aplicar la operación groupby. Finalmente, se puede combinar la característica generada con la tabla de instancias mediante una unión en la columnacategorical_y
.