FATE服务的场景是各方上传数据,各方获取数据,可以融合数据得到联合训练的模型。官方文档是按这个顺序写的,但是上传数据和模型获取数据是和模型训练分开写的。数据集文档中的文件路径其实就是FATE联邦学习github项目的相对目录,涉及到的数据集可以从github上获取。可以直接从github上下载,也可以复制粘贴,但是要注意,检查最后一行是否为空!,如果是空行就删掉,否则FATE会报错。详情可以看我的个人博客。Python示例下载并处理数据集后,记得修改下面代码中的路径。大部分代码都是从别人的官方文档中复制粘贴过来的。我只是把修改的地方放在一起,大家不用担心出错。[记得更改数据集的路径和名称]。代码在Linux上运行。默认情况下,你已经成功启动了FATE服务,如何启动FATE服务呢?首先,在终端中下载并初始化管道。pipinstallfate_clientpipelineinit--ip=127.0.0.1--port=9380另外记得查看FATE服务是否正常运行。请记住阅读管道配置检查的代码注释。我想要更详细的教程。frompipeline.backend.pipelineimportPipeLinefrompipeline.componentimportReader,DataTransform,Intersection,HeteroSecureBoost,Evaluationfrompipeline.interfaceimportData#pipeline可以理解为一个任务,这个任务是上传数据pipeline_upload=PipeLine().set_initiator(role='guest',party_id=9999).set_roles(guest=9999)partition=4dense_data_guest={"name":"breast_hetero_guest","namespace":f"experiment"}dense_data_host={"name":"breast_hetero_host","namespace":f"experiment"}tag_data={"name":"breast_hetero_host","namespace":f"experiment"}importosdata_base="/root/Downloads/"pipeline_upload.add_upload_data(file=os.path.join(data_base,"real_guest.csv"),table_name=dense_data_guest["name"],#表名namespace=dense_data_guest["namespace"],#namespacehead=1,partition=partition)#每个数据集由表名和命名空间标识pipeline_upload.add_upload_data(file=os.path.join(data_base,"real_host.csv"),table_name=dense_data_host["name"],namespace=dense_data_host["namespace"],head=1,partition=partition)pipeline_upload.add_upload_data(file=os.path.join(data_base,"real_host.csv"),table_name=tag_data["名称"],namespace=tag_data["namespace"],head=1,partition=partition)#drop=1表示覆盖之前的表pipeline_upload.upload(drop=1)#开始获取数据并训练,新实例做一个pipelinepipeline=PipeLine()\.set_initiator(role='guest',party_id=9999)\.set_roles(guest=9999,host=10000)#想获取FATe中的号码根据数据,必须通过Readerreader_0=Reader(name="reader_0")#设置guest参数#注意reader绑定的身份和id,如果要成功获取数据,#必须绑定身份和数据源的id,不是数据reader_0.get_party_instance(role='guest',party_id=9999).component_param(table={"name":"breast_hetero_guest","namespace":"experiment"})#sethostparameterreader_0.get_party_instance(role='host',party_id=10000).component_param(table={"name":"breast_hetero_host","namespace":"experiment"})#如果要使用得到的数据进行训练,你必须通过数据转换器data_transform_0=DataTransform(name="data_transform_0")#设置访客参数data_transform_0.get_party_instance(role='guest',party_id=9999).component_param(with_label=True,missing_fill=True)data_transform_0.get_party_instance(role='host',party_id=[10000]).component_param(with_label=False,missing_fill=True)#融合(垂直)数据intersect_0=Intersection(name="intersect_0")#定义模型,FATE提供了一些模型,当然你也可以自己开发自己的模型hetero_secureboost_0=HeteroSecureBoost(name="hetero_secureboost_0",num_trees=5,bin_num=16,task_type="classification",objective_param={"objective":"cross_entropy"},encrypt_param={"method":"paillier"},tree_param={“最大部门h":3})evaluation_0=Evaluation(name="evaluation_0",eval_type="binary")pipeline.add_component(reader_0)pipeline.add_component(data_transform_0,data=Data(data=reader_0.output.data))pipeline.add_component(intersect_0,data=Data(data=data_transform_0.output.data))pipeline.add_component(hetero_secureboost_0,data=Data(train_data=intersect_0.output.data))pipeline.add_component(evaluation_0,data=Data(data=hetero_secureboost_0.output).data))pipeline.compile()#前面的代码实际上构建了一个计算图,fit才算开始真正执行pipeline,如果fit()成功,终端会有彩色提示,如果失败,需要通过Fateboard进行调试,Python处的代码不会给出具体提示,如何使用Fateboard进行调试呢?
