0 / 0
Torna alla versione inglese della documentazione
Creare il gestore dei dati
Ultimo aggiornamento: 28 nov 2024
Creare il gestore dei dati

Ogni parte in un esperimento di Apprendimento Federato deve ottenere un gestore di dati per elaborare i propri dati. Tu o uno scienziato dei dati deve creare il gestore dei dati. Un gestore dati è una classe Python che carica e trasforma i dati in modo che tutti i dati per l'esperimento siano in un formato congruente.

Informazioni sulla classe gestore dati

Il gestore dei dati svolge le seguenti funzioni:

  • Accede ai dati richiesti per addestrare il modello. Ad esempio, legge i dati da un file CSV in un frame di dati Pandas.
  • Pre - elabora i dati così i dati sono in formato coerente in tutte le parti. Alcuni casi di esempio sono i seguenti:
    • La colonna Data potrebbe essere memorizzata come epoch o data / ora.
    • La colonna Paese potrebbe essere codificata o abbreviata.
  • Il gestore dei dati garantisce che la formattazione dei dati sia d'accordo.
    • Optional: l'ingegnere della funzione a seconda delle necessità.

La seguente illustrazione mostra come un gestore dati viene utilizzato per elaborare i dati e renderli utilizzabili dall'esperimento:

Un caso di utilizzo del gestore dati che unifica i formati dati

Una parte potrebbe avere più tabelle in un database relazionale mentre un'altra parte utilizza un file CSV. Dopo che i dati sono stati elaborati dal titolare del trattamento, avranno un formato unificato. Ad esempio, tutti i dati vengono inseriti in un'unica tabella con i dati precedenti riuniti in tabelle separate.

Modello gestore dati

Un modello di gestore dati generale è il seguente:

# 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

Parametri

  • your_data_file_type: questo può essere qualsiasi campo stringa. Ad esempio, se il tuo dataset è in formato csv , your_data_file_type può essere "CSV", ". csv", "csv", "csv_file" e altro ancora.

Restituire un generatore di dati definito da Keras o Tensorflow

Di seguito è riportato un esempio di codice che deve essere incluso come parte della funzione get_data per restituire un generatore di dati definito da 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

Esempi del gestore dei dati

Argomento principale: Creazione di un esperimento di Apprendimento Federato

Ricerca e risposta AI generativa
Queste risposte sono generate da un modello di lingua di grandi dimensioni in watsonx.ai basato sul contenuto della documentazione del prodotto. Ulteriori informazioni