0 / 0
Retourner à la version anglaise de la documentation
Créer le gestionnaire de données
Dernière mise à jour : 28 nov. 2024
Créer le gestionnaire de données

Chaque partie d'une expérimentation d'apprentissage fédéré doit obtenir un gestionnaire de données pour traiter ses données. Vous ou un spécialiste des données devez créer le gestionnaire de données. Un gestionnaire de données est une classe Python qui charge et transforme les données afin que toutes les données de l'expérimentation soient dans un format cohérent.

A propos de la classe de gestionnaire de données

Le gestionnaire de données exécute les fonctions suivantes:

  • Accède aux données requises pour entraîner le modèle. Par exemple, lit les données d'un fichier CSV dans un cadre de données Pandas.
  • Prétraite les données de sorte que les données soient dans un format cohérent entre toutes les parties. Voici quelques exemples de cas:
    • La colonne Date peut être stockée sous la forme d'une époque ou d'un horodatage.
    • La colonne Pays peut être codée ou abrégée.
  • Le gestionnaire de données s'assure que le formatage des données est en accord.
    • Facultatif: ingénieur de fonction selon les besoins.

L'illustration suivante montre comment un gestionnaire de données est utilisé pour traiter des données et les rendre consommables par l'expérimentation:

Cas d'utilisation du gestionnaire de données unifiant les formats de données

Une partie peut disposer de plusieurs tables dans une base de données relationnelle tandis qu'une autre partie utilise un fichier CSV. Une fois les données traitées par le gestionnaire de données, elles auront un format unifié. Par exemple, toutes les données sont regroupées dans un seul tableau, les données précédentes étant regroupées dans des tableaux séparés.

Modèle de gestionnaire de données

Un modèle de gestionnaire de données général se présente comme suit:

# 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

Paramètres

  • your_data_file_type: il peut s'agir de n'importe quelle zone de chaîne. Par exemple, si votre ensemble de données est au format csv , your_data_file_type peut être "CSV", ". csv", "csv", "csv_file", etc.

Renvoi d'un générateur de données défini par Keras ou Tensorflow

Voici un exemple de code qui doit être inclus dans le cadre de la fonction get_data pour renvoyer un générateur de données défini par Keras ou 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

Exemples de gestionnaire de données

Rubrique parent: Création d'une expérimentation d'apprentissage fédéré

Recherche et réponse à l'IA générative
Ces réponses sont générées par un modèle de langue de grande taille dans watsonx.ai en fonction du contenu de la documentation du produit. En savoir plus