0 / 0
Zurück zur englischen Version der Dokumentation
Erstellen Sie den Datenhandler
Letzte Aktualisierung: 28. Nov. 2024
Erstellen Sie den Datenhandler

Jeder Teilnehmer an einem Experiment des föderierten Lernens muss einen Datenhandler mit der Verarbeitung seiner Daten beauftragen. Sie oder ein Datenwissenschaftler müssen den Data Handler erstellen. Ein Data Handler ist eine Python, die Daten lädt und umwandelt, damit alle Daten für das Experiment in einem einheitlichen Format vorliegen.

Über die Datenhandler-Klasse

Der Data Handler führt die folgenden Funktionen aus:

  • Greift auf die Daten zu, die zum Trainieren des Modells benötigt werden. Liest zum Beispiel Daten aus einer CSV-Datei in einen Pandas-Datenframe.
  • Die Daten werden vorverarbeitet, so dass die Daten für alle Beteiligten in einem einheitlichen Format vorliegen. Nachfolgend einige Beispielfälle:
    • Die Spalte Datum kann als Zeitepoche oder Zeitstempel gespeichert werden.
    • Die Spalte Land kann verschlüsselt oder abgekürzt sein.
  • Der Data Handler stellt sicher, dass die Datenformatierung übereinstimmt.
    • Optional: Feature Engineer nach Bedarf.

Die folgende Abbildung zeigt, wie ein Data Handler verwendet wird, um Daten zu verarbeiten und sie für das Experiment nutzbar zu machen:

Ein Anwendungsfall für den Datenhandler zur Vereinheitlichung von Datenformaten

Eine Partei hat vielleicht mehrere Tabellen in einer relationalen Datenbank, während eine andere Partei eine CSV-Datei verwendet. Nachdem die Daten mit dem Data Handler verarbeitet wurden, werden sie ein einheitliches Format haben. So werden beispielsweise alle Daten in einer einzigen Tabelle gespeichert und frühere Daten in separaten Tabellen zusammengeführt.

Datenhandler-Vorlage

Eine allgemeine Datenhandler-Vorlage sieht wie folgt aus:

# 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

Parameter

  • your_data_file_type: Dies kann ein beliebiges Stringfeld sein. Wenn Ihr Datensatz beispielsweise im Format " csv vorliegt, kann " your_data_file_type "CSV", ".csv", "csv", "csv_file" und mehr sein.

Rückgabe eines von Keras oder Tensorflow definierten Datengenerators

Es folgt ein Codebeispiel, das als Teil der Funktion ' get_data eingefügt werden muss, um einen von Keras oder Tensorflow definierten Datengenerator zurückzugeben:

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

Beispiele für Datenhandler

Übergeordnetes Thema: Erstellen eines föderalen Lernexperiments

Generative KI-Suche und -Antwort
Diese Antworten werden von einem großen Sprachmodell in watsonx.ai basierend auf dem Inhalt der Produktdokumentation generiert. Weitere Informationen