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
函数执行转换操作,该函数会初始化两个任务:
- 上传本地数据
- 将上传的数据转换为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
: 是否扩展样本IDname
: 数据表名称namespace
: 数据表命名空间partitions
: 数据分区数
注意事项
- 对于包含样本ID的本地文件,必须设置
extend_sid=True
并正确配置sample_id_name
- 数据转换完成后,可以在FATE任务配置中使用指定的
name
和namespace
引用这些数据 - 分区数的选择应根据集群规模和数据集大小合理设置
- 确保元信息(meta)中的配置与实际数据格式一致
总结
本教程详细介绍了在FATE项目中使用Pipeline工具将本地文件转换为DataFrame的完整流程。通过这种方式准备的数据可以直接用于后续的联邦学习建模任务。正确理解和配置数据元信息是确保数据转换成功的关键。