0.从官方demo改编
1.安装FATE,如果是docker安装,主目录是/fate
2.源代码my_quick_run.py。这是一个单机版的例子。
2.1 模型训练
python my_quick_run.py train
2.2 根据训练好的模型做预测
python my_quick_run.py predict
3.项目源码文件
breast_a.csv
breast_b.csv
test_hetero_lr_train_job_conf.json
test_predict_conf.json upload_data.json
my_quick_run.py
test_hetero_lr_train_job_dsl.json
train_info.json
运行时,会生成data目录,存放一些配置信息,会生成result目录,存放预测结果。出了my_quick_run.py外,其他文件都能在fate里找到。
4.上传数据
上传数据,是运行的第一步。上传数据涉及三个文件:
breast_a.csv,breast_b.csv,upload_data.json。
单机版,有两个角色,一个是host,一个是guest。叫什么名字不影响效果。这两个角色,分别持有自己的数据。其中,breast_a.csv是host持有的数据,breast_b.csv是guest持有的数据。breast_b.csv有y值,breast_a.csv没有y值。
upload_data.json是上传数据时候的配置信息,json格式的。本例,upload_data.json内容如下:
{
"file": "breast_b.csv",
"head": 1,
"partition": 10,
"work_mode": 0,
"table_name": "hetero_breast_b",
"namespace": "hetero_guest_breast"
}
其中,head表示第一行是文件头,partition表示数据分为10分,work_mode是0,表示为单机版,table_name表示存储数据的表名,namesapce表示存储数据时候命名空间。upload_data.json的数据是模板,运行的时候会被修改。
具体的上传数据过程是 fate_flow_client.py执行的。
5.训练
5.1 训练涉及如下文件
test_hetero_lr_train_job_conf.json
test_hetero_lr_train_job_dsl.json
5.2 test_hetero_lr_train_job_conf.json
这里定义了训练各方的数据源,处理处理组件,模型入参。
5.3 test_hetero_lr_train_job_dsl.json
这里定义了所有的component,也就训练的每个环节。包括 数据IO,数据交互,特征归一,特征分箱,特征选择,模型训练,训练效果评估。每个component都包括input和output。每个output的数据都可以通过命令导出,后文会提到。
5.4 训练完成后,训练结果的信息--注意不是训练结果,存储在train_info.json。
6.预测
预测涉及一个文件test_predict_conf.json。它声明,这是哪个角色去做预测。在本例,用guest角色去做预测,因为它对应的数据有y值,能判断预测结果精度。
预测完毕后,需要用命令行从fate服务端把结果读出来:
python /fate/fate_flow/fate_flow_client.py -f component_output_data -j 2019101406255680884591 -p 1000 -r guest -cpn hetero_lr_0 -o .
注意,这里有诸多参数,需要注意的是 -f component_output_data,这表示要读取某个component的输出数据,-cpn hetoro_lr_0,表示component的名字。
结果存储在job_2019101406255680884591_hetero_lr_0_guest_1000_output_data。这里有两个文件,一个是output_data.csv,这是结果,另一个是output_data_meta.json,是输出结果的meta信息。
7.源码
import os
import sys
import json
import time
import random
import argparse
import subprocess
from pprint import pprint
#feta的主目录,通常也是安装目录
FATE_HOME = &#