0 / 0
Volver a la versión inglesa de la documentación
Crear el manejador de datos
Última actualización: 28 nov 2024
Crear el manejador de datos

Cada parte de un experimento de aprendizaje federado debe obtener un manejador de datos para procesar sus datos. Usted o un experto en datos debe crear el manejador de datos. Un manejador de datos es una clase Python que carga y transforma datos para que todos los datos del experimento estén en un formato coherente.

Acerca de la clase de manejador de datos

El manejador de datos realiza las funciones siguientes:

  • Accede a los datos necesarios para entrenar el modelo. Por ejemplo, lee datos de un archivo CSV en un marco de datos Pandas.
  • Procesa previamente los datos para que los datos estén en un formato coherente en todas las partes. Algunos casos de ejemplo son los siguientes:
    • La columna Fecha puede almacenarse como una época de tiempo o una indicación de fecha y hora.
    • La columna País puede estar codificada o abreviada.
  • El manejador de datos garantiza que el formato de los datos esté de acuerdo.
    • Opcional: Ingeniero de características según sea necesario.

La siguiente ilustración muestra cómo se utiliza un manejador de datos para procesar datos y hacerlos consumibles por el experimento:

Un caso de uso del manejador de datos que unifica formatos de datos

Una parte puede tener varias tablas en una base de datos relacional mientras que otra parte usa un archivo CSV. Una vez tratados los datos con el responsable del tratamiento, tendrán un formato unificado. Por ejemplo, todos los datos se colocan en una sola tabla y los datos anteriores se unen en tablas separadas.

Plantilla de manejador de datos

Una plantilla de manejador de datos general es la siguiente:

# your import statements

from ibmfl.data.data_handler import DataHandler

class MyDataHandler(DataHandler):
    """
    Data handler for your dataset.
    """
    def __init__(self, data_config=None):
        super().__init__()
        self.file_name = None
        if data_config is not None:
            # This can be any string field.
            # For example, if your data set is in `csv` format,
            # <your_data_file_type> can be "CSV", ".csv", "csv", "csv_file" and more.
            if '<your_data_file_type>' in data_config:
                self.file_name = data_config['<your_data_file_type>']
            # extract other additional parameters from `info` if any.

        # load and preprocess the training and testing data
        self.load_and_preprocess_data()

        """
        # Example:
        # (self.x_train, self.y_train), (self.x_test, self.y_test) = self.load_dataset()
        """

    def load_and_preprocess_data(self):
        """
        Loads and pre-processeses local datasets, 
        and updates self.x_train, self.y_train, self.x_test, self.y_test.

        # Example:
        # return (self.x_train, self.y_train), (self.x_test, self.y_test)
        """

        pass
    
    def get_data(self):
        """
        Gets the prepared training and testing data.
        
        :return: ((x_train, y_train), (x_test, y_test)) # most build-in training modules expect data is returned in this format
        :rtype: `tuple` 

        This function should be as brief as possible. Any pre-processing operations should be performed in a separate function and not inside get_data(), especially computationally expensive ones.

        # Example:
        # X, y = load_somedata()
        # x_train, x_test, y_train, y_test = \
        # train_test_split(X, y, test_size=TEST_SIZE, random_state=RANDOM_STATE)
        # return (x_train, y_train), (x_test, y_test)
        """
        pass

    def preprocess(self, X, y):
        pass

Parámetros

  • your_data_file_type: puede ser cualquier campo de serie. Por ejemplo, si el conjunto de datos está en formato csv , your_data_file_type puede ser "CSV", ". csv", "csv", "csv_file" y más.

Devolver un generador de datos definido por Keras o Tensorflow

A continuación se muestra un ejemplo de código que debe incluirse como parte de la función get_data para devolver un generador de datos definido por Keras o Tensorflow:

train_gen = ImageDataGenerator(rotation_range=8,
                                width_sht_range=0.08,
                                shear_range=0.3,
                                height_shift_range=0.08,
                                zoom_range=0.08)

train_datagenerator = train_gen.flow(
    x_train, y_train, batch_size=64)

return train_datagenerator

Ejemplos de manejador de datos

Tema padre: Creación de un experimento de aprendizaje federado

Búsqueda y respuesta de IA generativa
Estas respuestas las genera un modelo de lenguaje grande en watsonx.ai que se basa en el contenido de la documentación del producto. Más información