0 / 0
Go back to the English version of the documentation
创建数据处理器
Last updated: 2024年11月28日
创建数据处理器

联合学习实验中的每一方都必须获得一个数据处理器来处理其数据。 您或数据科学家必须创建数据处理器。 数据处理器是一个Python类,用于加载和转换数据,使实验的所有数据格式一致。

关于数据处理器类

数据处理器执行以下功能:

  • 访问训练模型所需的数据。 例如,将 CSV 文件中的数据读入 Pandas 数据帧。
  • 预处理数据,使各方的数据格式保持一致。 下面是一些实例:
    • 日期列可以时间纪元或时间戳的形式存储。
    • 国家一栏可以编码或缩写。
  • 数据处理器确保数据格式一致。
    • 可选项:根据需要配备功能工程师。

下图展示了如何使用数据处理器来处理数据,并使实验可以使用这些数据:

统一数据格式的数据处理器使用案例

一方可能在关系数据库中拥有多个表格,而另一方则使用 CSV 文件。 数据经数据处理器处理后,将具有统一的格式。 例如,将所有数据放入一个表中,并将以前在不同表中的数据连接在一起。

数据处理器模板

一般的数据处理器模板如下:

# 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

参数

  • your_data_file_type:可以是任何字符串字段。 例如,如果您的数据集是 "csv格式,"your_data_file_type"可以是 "CSV"、".csv"、"csv"、"csv_file "等。

返回由Keras或Tensorflow定义的数据生成器

下面是一个代码示例,需要作为 "get_data函数的一部分,以返回Keras或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

数据处理程序示例

家长主题: 创建联合学习实验

Generative AI search and answer
These answers are generated by a large language model in watsonx.ai based on content from the product documentation. Learn more