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 usar Featuretools para crear características en nuevos datos de prueba?

He utilizado Featuretools para generar características para una única tabla usando un script como este:

es = ft.EntitySet(id = 'data')
es = es.entity_from_dataframe(entity_id = 'df', dataframe = X, 
                              variable_types=variable_types, index = 'data_index')

for column in X.columns:
    if column != "data_index":
        es = es.normalize_entity(base_entity_id='df', new_entity_id=column, index=column)

feature_matrix, feature_defs = ft.dfs(entityset=es, target_entity="df")
ft.save_features(feature_defs, "feature_definitions.json")

¿Cómo puedo utilizar las características en feature_definitions.json en un nuevo dataframe de pandas?

Sé que tenemos que usar esta api:

saved_features = ft.load_features("feature_definitions.json")
feature_matrix = ft.calculate_feature_matrix(saved_features, es)

Pero estoy teniendo dificultades para convertir los nuevos datos en un entityset compatible.

Nota: Estoy usando la versión 0.11.0 de Featuretools.

¿Cómo puedo lograr esto?

Gracias.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para utilizar las características en feature_definitions.json en un nuevo marco de datos de pandas, debes crear un nuevo entityset utilizando ft.EntitySet(). Luego, crea una nueva entidad a partir del nuevo marco de datos de pandas utilizando entity_set.entity_from_dataframe(). Finalmente, utiliza la función ft.calculate_feature_matrix() para generar una matriz de características para la nueva entidad utilizando las definiciones de características guardadas.

    Aquí hay un ejemplo:

    # Cargar características guardadas desde feature_definitions.json
    saved_features = ft.load_features("feature_definitions.json")
    
    # Crear un nuevo marco de datos de pandas llamado new_X
    new_X = pd.read_csv("new_data.csv")
    
    # Crear un nuevo entityset utilizando ft.EntitySet()
    new_es = ft.EntitySet(id='new_data')
    
    # Crear una nueva entidad a partir del nuevo marco de datos utilizando entity_set.entity_from_dataframe()
    new_es.entity_from_dataframe(entity_id='new_df', dataframe=new_X, index='new_index')
    
    # Utilizar ft.calculate_feature_matrix() para generar una matriz de características para la nueva entidad utilizando las definiciones de características guardadas
    new_feature_matrix = ft.calculate_feature_matrix(saved_features, new_es)
    
    # La nueva matriz de características contiene las características generadas para los nuevos datos
    print(new_feature_matrix.head())
    

    Esto debería crear un nuevo entityset con una nueva entidad a partir del nuevo marco de datos de pandas new_X y utilizar las definiciones de características guardadas para generar una matriz de características para los nuevos datos.

Comments are closed.