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
数据处理程序示例
家长主题: 创建联合学习实验