首页
/ FATE项目本地文件转换DataFrame教程

FATE项目本地文件转换DataFrame教程

2025-07-07 07:48:08作者:姚月梅Lane

前言

在联邦学习框架FATE中,数据准备是建模任务的第一步。本教程将详细介绍如何通过Pipeline工具将本地文件转换为FATE可用的DataFrame格式,为后续的联邦建模任务做好准备。

环境准备

安装fate_client

Pipeline工具随fate_client包一起发布,可通过pip直接安装:

pip install fate_client

安装完成后,系统会提供一个名为pipeline的命令行入口点,可以通过以下命令查看帮助信息:

pipeline --help

配置FATE Flow服务连接

使用Pipeline前,需要指定连接的FATE Flow服务地址。假设我们有一个运行在本地的FATE Flow服务(默认standalone模式地址为127.0.0.1:9380),执行以下命令进行配置:

!pipeline init --ip 127.0.0.1 --port 9380

数据转换流程

初始化Pipeline实例

首先需要创建一个Pipeline实例,并设置参与方的角色和ID:

from fate_client.pipeline import FateFlowPipeline

# 创建Pipeline实例
pipeline = FateFlowPipeline().set_parties(local="0")
pipeline.set_site_role("local")
pipeline.set_site_party_id("0")

这里我们设置:

  • 角色为"local"
  • 参与方ID为"0"

定义数据元信息

数据元信息(meta)定义了数据的格式和结构,对于包含样本ID的文件,还需要指定sample_id_name

meta = {
    'delimiter': ',',          # 分隔符
    'dtype': 'float32',        # 数据类型
    'input_format': 'dense',   # 输入格式
    'label_type': 'int32',     # 标签类型
    'label_name': 'y',         # 标签列名
    'match_id_name': 'id',     # 匹配ID列名
    'match_id_range': 0,       # 匹配ID范围
    'tag_value_delimiter': ':', # 标签值分隔符
    'tag_with_value': False,   # 是否带值标签
    'weight_type': 'float32'   # 权重类型
}

设置数据分区

定义数据存储的分区数,影响数据在集群中的分布:

partitions = 4

指定数据表信息

定义数据表的名称(namespace)和命名空间(name),这些信息将在FATE任务配置中使用:

data_guest = {
    "name": "breast_hetero_guest", 
    "namespace": "experiment"
}

执行数据转换

转换本地文件

使用transform_local_file_to_dataframe函数执行转换操作,该函数会初始化两个任务:

  1. 上传本地数据
  2. 将上传的数据转换为FATE任务可用的DataFrame格式
import os

data_base = "work_space/FATE/"
pipeline.transform_local_file_to_dataframe(
    file=os.path.join(data_base, "examples/data/breast_hetero_guest.csv"),
    meta=meta, 
    head=True, 
    extend_sid=True,
    name=data_guest["name"],             # 表名
    namespace=data_guest["namespace"],   # 命名空间
    partitions=partitions
)

参数说明

  • file: 本地文件路径
  • meta: 数据元信息
  • head: 文件是否包含表头
  • extend_sid: 是否扩展样本ID
  • name: 数据表名称
  • namespace: 数据表命名空间
  • partitions: 数据分区数

注意事项

  1. 对于包含样本ID的本地文件,必须设置extend_sid=True并正确配置sample_id_name
  2. 数据转换完成后,可以在FATE任务配置中使用指定的namenamespace引用这些数据
  3. 分区数的选择应根据集群规模和数据集大小合理设置
  4. 确保元信息(meta)中的配置与实际数据格式一致

总结

本教程详细介绍了在FATE项目中使用Pipeline工具将本地文件转换为DataFrame的完整流程。通过这种方式准备的数据可以直接用于后续的联邦学习建模任务。正确理解和配置数据元信息是确保数据转换成功的关键。