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

Jede Partei in einem Experiment für föderiertes Lernen muss einen Datenhandler zur Verarbeitung ihrer Daten abrufen. Sie oder ein Data-Scientist müssen den Datenhandler erstellen. Ein Datenhandler ist eine Python -Klasse, die Daten lädt und transformiert, sodass alle Daten für das Experiment in einem konsistenten Format vorliegen.

Informationen zur Datenhandlerklasse

Der Datenhandler führt die folgenden Funktionen aus:

  • Greift auf die Daten zu, die zum Trainieren des Modells erforderlich sind. Liest beispielsweise Daten aus einer CSV-Datei in einen Pandas-Datenrahmen ein.
  • Die Daten werden vorverarbeitet, sodass die Daten in einem konsistenten Format für alle Parteien vorliegen. Es folgen einige Beispiele für Fälle:
    • Die Spalte Datum kann als Zeitepoche oder Zeitmarke gespeichert werden.
    • Die Spalte Land kann codiert oder abgekürzt sein.
  • Der Datenhandler stellt sicher, dass die Datenformatierung in Übereinstimmung ist.
    • Optional: Bei Bedarf Featureentwickler.

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

Ein Anwendungsfall des Datenhandlers zum Vereinheitlichen von Datenformaten

Eine Partei verfügt möglicherweise über mehrere Tabellen in einer relationalen Datenbank, während eine andere Partei eine CSV-Datei verwendet. Nachdem die Daten mit dem Datenhandler verarbeitet wurden, haben sie ein einheitliches Format. Beispielsweise werden alle Daten in eine einzige Tabelle eingefügt und vorherige Daten in separaten Tabellen zusammengeführt.

Datenhandlerschablone

Eine allgemeine Datenhandlerschablone lautet wie folgt:

# 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 Zeichenfolgefeld sein. Wenn Ihr Dataset beispielsweise das Format csv hat, kann your_data_file_type "CSV", ". csv", "csv", "csv_file" usw. sein.

Gibt einen Datengenerator zurück, der durch Keras oder Tensorflow definiert ist.

Das folgende Codebeispiel muss als Teil der Funktion get_data eingeschlossen werden, um einen Datengenerator zurückzugeben, der von Keras oder Tensorflowdefiniert wird:

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

Datenhandlerbeispiele

Übergeordnetes Thema: Experiment für föderiertes Lernen erstellen

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