java版Spring Cloud+Spring Boot+Mybatis之隐私计算 FATE - 多分类神经网络算法测试

一、说明

本文分享基于 Fate 使用 横向联邦 神经网络算法 对 多分类 的数据进行 模型训练,并使用该模型对数据进行 多分类预测

  • 二分类算法:是指待预测的 label 标签的取值只有两种;直白来讲就是每个实例的可能类别只有两种 (0 或者 1),例如性别只有  或者 ;此时的分类算法其实是在构建一个分类线将数据划分为两个类别。
  • 多分类算法:是指待预测的 label 标签的取值可能有多种情况,例如个人爱好可能有 篮球足球电影 等等多种类型。常见算法:Softmax、SVM、KNN、决策树。

关于 Fate 的核心概念、单机部署、训练以及预测请参考以下相关文章:

  • 《隐私计算 FATE - 关键概念与单机部署指南》
  • 《隐私计算 FATE - 模型训练》
  • 《隐私计算 FATE - 离线预测》

二、准备训练数据

上传到 Fate 里的数据有两个字段名必需是规定的,分别是主键为 id 字段和分类字段为 y 字段,y 字段就是所谓的待预测的 label 标签;其他的特征字段 (属性) 可任意填写,例如下面例子中的 x0 - x9

例如有一条用户数据为: 收入 : 10000,负债 : 5000,是否有还款能力 : 1 ;数据中的 收入 和 负债 就是特征字段,而 是否有还款能力 就是分类字段。

本文只描述关键部分,关于详细的模型训练步骤,请查看文章《隐私计算 FATE - 模型训练》

2.1. guest 端

10 条数据,包含 1 个分类字段 y 和 10 个标签字段 x0 - x9

y 值有 0、1、2、3 四个分类

上传到 Fate 中,表名为 muti_breast_homo_guest 命名空间为 experiment

2.2. host 端

10 条数据,字段与 guest 端一样,但是内容不一样

上传到 Fate 中,表名为 muti_breast_homo_host 命名空间为 experiment

三、执行训练任务

3.1. 准备 dsl 文件

创建文件 homo_nn_dsl.json 内容如下 :

{"components": {"reader_0": {"module": "Reader","output": {"data": ["data"]}},"data_transform_0": {"module": "DataTransform","input": {"data": {"data": ["reader_0.data"]}},"output": {"data": ["data"],"model": ["model"]}},"homo_nn_0": {"module": "HomoNN","input": {"data": {"train_data": ["data_transform_0.data"]}},"output": {"data": ["data"],"model": ["model"]}}}
}

3.2. 准备 conf 文件

创建文件 homo_nn_multi_label_conf.json 内容如下 :

{"dsl_version": 2,"initiator": {"role": "guest","party_id": 9999},"role": {"arbiter": [10000],"host": [10000],"guest": [9999]},"component_parameters": {"common": {"data_transform_0": {"with_label": true},"homo_nn_0": {"encode_label": true,"max_iter": 15,"batch_size": -1,"early_stop": {"early_stop": "diff","eps": 0.0001},"optimizer": {"learning_rate": 0.05,"decay": 0.0,"beta_1": 0.9,"beta_2": 0.999,"epsilon": 1e-07,"amsgrad": false,"optimizer": "Adam"},"loss": "categorical_crossentropy","metrics": ["accuracy"],"nn_define": {"class_name": "Sequential","config": {"name": "sequential","layers": [{"class_name": "Dense","config": {"name": "dense","trainable": true,"batch_input_shape": [null,18],"dtype": "float32","units": 5,"activation": "relu","use_bias": true,"kernel_initializer": {"class_name": "GlorotUniform","config": {"seed": null,"dtype": "float32"}},"bias_initializer": {"class_name": "Zeros","config": {"dtype": "float32"}},"kernel_regularizer": null,"bias_regularizer": null,"activity_regularizer": null,"kernel_constraint": null,"bias_constraint": null}},{"class_name": "Dense","config": {"name": "dense_1","trainable": true,"dtype": "float32","units": 4,"activation": "sigmoid","use_bias": true,"kernel_initializer": {"class_name": "GlorotUniform","config": {"seed": null,"dtype": "float32"}},"bias_initializer": {"class_name": "Zeros","config": {"dtype": "float32"}},"kernel_regularizer": null,"bias_regularizer": null,"activity_regularizer": null,"kernel_constraint": null,"bias_constraint": null}}]},"keras_version": "2.2.4-tf","backend": "tensorflow"},"config_type": "keras"}},"role": {"host": {"0": {"reader_0": {"table": {"name": "muti_breast_homo_host","namespace": "experiment"}}}},"guest": {"0": {"reader_0": {"table": {"name": "muti_breast_homo_guest","namespace": "experiment"}}}}}}
}

注意 reader_0 组件的表名和命名空间需与上传数据时配置的一致。

3.3. 提交任务

执行以下命令:

flow job submit -d homo_nn_dsl.json -c homo_nn_multi_label_conf.json

执行成功后,查看 dashboard 显示:

四、准备预测数据

与前面训练的数据字段一样,但是内容不一样,y 值全为 0

4.1. guest 端

上传到 Fate 中,表名为 predict_muti_breast_homo_guest 命名空间为 experiment

4.2. host 端

上传到 Fate 中,表名为 predict_muti_breast_homo_host 命名空间为 experiment

五、准备预测配置

本文只描述关键部分,关于详细的预测步骤,请查看文章《隐私计算 FATE - 离线预测》

创建文件 homo_nn_multi_label_predict.json 内容如下 :

{"dsl_version": 2,"initiator": {"role": "guest","party_id": 9999},"role": {"arbiter": [10000],"host": [10000],"guest": [9999]},"job_parameters": {"common": {"model_id": "arbiter-10000#guest-9999#host-10000#model","model_version": "202207061504081543620","job_type": "predict"}},"component_parameters": {"role": {"guest": {"0": {"reader_0": {"table": {"name": "predict_muti_breast_homo_guest","namespace": "experiment"}}}},"host": {"0": {"reader_0": {"table": {"name": "predict_muti_breast_homo_host","namespace": "experiment"}}}}}}
}

注意以下两点:

  1. model_id 和 model_version 需修改为模型部署后的版本号。

  2. reader_0 组件的表名和命名空间需与上传数据时配置的一致。

六、执行预测任务

执行以下命令:

flow job submit -c homo_nn_multi_label_predict.json

执行成功后,查看 homo_nn_0 组件的数据输出:

可以看到算法输出的预测结果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/269630.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据挖掘目标(客户价值分析)

import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as snsIn [2]: datapd.read_csv(r../教师文件/air_data.csv)In [3]: data.head()Out[3]: Start_timeEnd_timeFareCityAgeFlight_countAvg_discountFlight_mileage02011/08/182014/0…

打工人副业变现秘籍,某多/某手变现底层引擎-Stable Diffusion替换背景

在Stable Diffusion软件中,使用ControlNet+模型实现固定物体批量替换背景 出图的流程。 一、准备好图片 1.你需要准备好一些白底图或者透明底图用于训练模型。 2.你需要准备同样角度的其他背景色底图用于ControlNet勾线 3.注意检查你的图片尺寸,是否为1:1,…

【STM32】DMA直接存储器存取

1 DMA简介 DMA(Direct Memory Access)直接存储器存取 可以直接访问STM32的存储器的,包括运行SRAM、程序存储器Flash和寄存器等等 DMA可以提供外设寄存器和存储器或者存储器和存储器之间的高速数据传输,无须CPU干预,节…

vue 集成行政区域选择插件region和数据回显

故事:最近,项目需要进行行政区域围栏的绘制,由于老旧项目是利用js保存全国行政区域地址和编码,在选择器select进行匹配显示,但此方法复杂,因此选择集成区域插件region 步骤一:用命令安装region…

梳理一下嵌入式和单片机之间的关系

一定有很多人都听说过嵌入式和单片机,但在刚开始接触时,不知道大家有没有听说过嵌入式就是单片机这样的说法,其实嵌入式和单片机还是有区别的。单片机与嵌入式到底有什么关系? 下面我们就来说说嵌入式和单片机之间的联系和区别吧…

K8S(二)—介绍

K8S的整体结构图 k8s对象 在 Kubernetes 系统中,Kubernetes 对象是持久化的实体。 Kubernetes 使用这些实体去表示整个集群的状态。 具体而言,它们描述了如下信息: 哪些容器化应用正在运行(以及在哪些节点上运行)可…

【大数据】Doris 架构

Doris 架构 Doris 的架构很简洁,只设 FE(Frontend)、BE(Backend)两种角色、两个进程,不依赖于外部组件,方便部署和运维,FE、BE 都可线性扩展。 ✅ Frontend(FE&#xff0…

Appium 自动化自学篇 —— 初识Appium自动化!

Appium 简介 随着移动终端的普及,手机应用越来越多,也越来越重要。而作为测试 的我们也要与时俱进,努力学习手机 App 的相关测试,文章将介绍手机自动化测试框架 Appium 。 那究竟什么是 Appium 呢? 接下来我们一起来学习PythonS…

西南交通大学【数电实验6---可控分频器设计】

一、实验电路图、状态图、程序代码、仿真代码、仿真波形图(可以只写出核心功能代码,代码要有注释) 不管sel为0或者1,clk_out[0]的频率都是不变的,故在always块当中,可优先对clk_out[0]进行处理,…

部署Kubernetes(k8s)集群,可视化部署kuboard

所需机器 主机名地址角色配置k8s-master192.168.231.134主节点2核4G,centos7k8s-node1192.168.231.135工作节点2核4G,centos7k8s-node2192.168.231.136工作节点2核4G,centos7 主节点CPU核数必须是 ≥2核且内存要求必须≥2G,否则k8s无法启动 1. 集群环境部署【三台…

nrm 的使用 可以快速切换下载(npm)镜像,解决资源下载慢和运行失败

nrm是什么? 介绍 nrm(npm registry manager) 是 npm 的镜像源管理工具. 有时候国外资源太慢,使用 nrm 可以快速的在 npm 源之间切换 安装 npm install -g nrm 基本使用 查看可选择的源 nrm ls 切换到对应的镜像源 nrm use 对应的镜像 删除镜像源 nrm del 名字 …

Axure元件的介绍使用与登录界面以及个人简历的绘制

目录 一.Axure元件介绍 1.1.简介 1.2.常见的元件 1.3.元件的操作 二.基本元件的使用 2.1.矩形和圆形 2.2.图片 2.3.文本元件 2.4.热区 2.5.线段元件 三.表单型元件的使用 3.1.文本框 3.2.文本域 3.3.下拉列表 3.4.列表框 3.5.单选按钮 3.6.复选框 四.菜单和表…