今天给大家介绍一个github上很有趣的项目,是实现数据可用不可见的目的的。
github地址在这里
https://github.com/YnRen22852/secretflowgryffindor/
本项目使用SecretFlow框架实现了多方安全计算,旨在通过联合数据训练,预测城市居民的年收入是否超过50k。该项目由城市内的三个政府机构合作进行,运用了多层感知器(MLP)模型来进行神经网络训练和预测。为了确保数据的准确性和可靠性,我们进行了全面的统计分析,包括多重共线性检验(VIF)和相关系数矩阵分析,并通过直方图、饼图等可视化方式呈现数据分析结果。此外,我们还开发了一个图形用户界面(GUI),使项目的操作更加简便直观。该项目的实施不仅体现了隐私保护技术在现实中的应用潜力,同时也为政府部门间的数据共享与合作提供了安全、高效的解决方案。
隐语智链·深网(FlowSecureMLP)
一个使用SecretFlow框架和MLP模型来进行神经网络训练和预测的项目!
Team:Gryffindor
探索本项目的文档 »
查看Demo · 报告Bug · 提出新特性
目录
- 上手指南
- 功能
- 快速开始
- 演示视频
- 文件目录说明
- 使用到的框架
- 贡献者
- 版权说明
- 鸣谢
上手指南
运行代码前的环境要求
- python3
- 隐语所需要的系统环境Ubuntu/WSL2
- 隐语所需要的conda环境
ps:第一条和第二条在隐语SecretFlow快速开始中有详细步骤
以下需要在Ubuntu/WSL2中安装相应库
- PyQt5库
- LibreOffice库
- pandas库
- numpy库
- matplotlib库
- seaborn库
配置步骤
配置隐语的第一和第二个环境可以从这里开始
隐语SecretFlow快速开始
- sudo apt install libreoffice
复制代码 功能
- 数据预处理、统计分析以及可视化
1.1. 数据预处理
我们主要使用了隐语SecretFlow库里的隐私求交(PSI)技术对齐数据(secret_psi函数),得到对齐后的数据框。然后我们对数据集进行缺失值填充(Missing_Value_Filling函数),标签编码(label_encode_function函数),有序类别特征处理(Ordinal_Cate_Features函数),One-Hot 编码(One_Hot_Function函数),标准化(standard_scaler_func函数),再经过从VDataFrame到SPUObject格式的数据类型转换(vdataframe_to_spu函数和convert_to_spu函数),这样可以在SPU上进行计算。
以上步骤被汇总到数据处理总函数data_process函数中。
1.2. 数据统计分析
我们主要使用了隐语SecretFlow库里的函数做了对于数据的全表统计分析(full_table_statistics函数)、相关系数矩阵分析(correlation_coefficient_matrix函数)、VIF多重共线性检验(VIF_calculation函数)
1.3. 数据可视化
我们主要使用了seaborn库里的相关函数对数据分别做了直方图、条形图以及饼图。
详见data_visualize函数
- 训练
我们分别实现了在CPU上和SPU上的神经网络训练(train_auto_grad函数和train_auto_grad_spu函数),相比于在CPU上的用明文数据进行训练,我们通过使用隐语SecretFlow库的SPU,实现了在SPU上的训练。
- 预测
我们分别实现了在CPU上和SPU上的神经网络预测(predict函数和predict_spu函数),相比于在CPU上的用明文数据进行预测,我们通过使用隐语SecretFlow库的SPU,实现了在SPU上的预测,这样做可以做到数据隐私保护,分布式安全计算,确保了透明性和可追溯性。
快速开始
- 将以上环境配置好之后,把仓库clone到本地就可以开始了
- 打开图形话界面直接运行,之后根据图形化界面进行操作
ps:需要激活隐语的环境
演示视频
https://github.com/user-attachments/assets/d2c20784-2f3a-430b-83b0-a6aaf30ec183
文件目录说明
- filetree
- ├── LICENSE
- ├── README.md
- ├── /GUI/ #图形化界面
- | ├── /neural_network_gui.py/
- ├── /data/ #数据处理
- │ ├── /corr_coefficient_matrix.py/
- │ ├── /data_process.py/
- │ ├── /data_visual.py/
- │ ├── /full_table_statistics.py/
- │ ├── /multicollinearity_test.py/
- ├── /neural_network/ #神经网络模型
- │ ├── /mlp.py/
复制代码 使用到的框架
贡献者
请阅读贡献者 查阅为该项目做出贡献的开发者。
如何参与开源项目
贡献使开源社区成为一个学习、激励和创造的绝佳场所。你所作的任何贡献都是非常感谢的。
- Fork the Project
- Create your Feature Branch (git checkout -b feature/AmazingFeature)
- Commit your Changes (git commit -m 'Add some AmazingFeature')
- Push to the Branch (git push origin feature/AmazingFeature)
- Open a Pull Request
版权说明
该项目签署了Apache License 2.0授权许可,详情请参阅 LICENSE
鸣谢
- GitHub Emoji Cheat Sheet
- Img Shields
- Choose an Open Source License
- GitHub Pages
- Animate.css
- 隐语
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |