AIF360入门教学

1、AIF360简介

  • AI Fairness 360 工具包(AIF360)是一个开源软件工具包,可以帮助检测和缓解整个AI应用程序生命周期中机器学习模型中的偏见。
  • 在整个机器学习的过程中,偏见可能存在于初始训练数据、创建分类器的算法或分类器所做的预测中。AI Fairness 360 工具包可以衡量和缓解机器学习过程中三个阶段的偏见。
  • 开源网站:https://github.com/Trusted-AI/AIF360

2、安装AIF360

  • 使用pip安装最新稳定的版本(先使用这个)
  • pip install aif360
  • 【注】某些算法需要额外的依赖包,安装额外的依赖包,例如运行:
    • pip install aif360[LFR,OptimPreproc]
    • 或安装完整功能的AIF360
    • pip install aif360[all]

3、使用示例

  • 从github上找到官方提供的有关教程。
  • 网站:AIF360/examples/README.md at master ·可信AI/AIF360 ·GitHub

3.1、信用评分(数据预处理去偏)

  • 本案例演示了在使用德国信用数据集的信用评分场景中的年龄偏差背景下使用一个公平性指标(平均差)和一个偏见缓解算法(重新加权)
  • 具体工作:检查初始训练数据中的偏见,缓解偏见,然后重新检查。
  • 网站:Jupyter 笔记本查看器 (nbviewer.org)

3.2、新建项目

  • 使用PyCharm建立一个新的项目。
  • 【注】在系统中使用pip下载的包,在Pycharm中一定要选择系统解释器才能够引用。

3.3、编写导入语句

  • 以下所有语句都在main.py中编写。
  • 与任何python程序一样,第一步是导入必要的包。下面我们从包中导入几个组件。我们导入 GermanDataset,用于检查偏见的指标以及与我们将用于减轻偏差的算法相关的类。
  • # 导入所有需要的包
    import sys
    sys.path.insert(1, "../")  import numpy as np
    np.random.seed(0)from aif360.datasets import GermanDataset
    from aif360.metrics import BinaryLabelDatasetMetric
    from aif360.algorithms.preprocessing import Reweighingfrom IPython.display import Markdown, display
  • 编译报错(没什么包,加什么包)
  • 添加包(还是报错先不管它)
  • pip install aif360[LawSchoolGPA]
  •  安装IPython
  • pip install ipython
  • 再次编译报错
  • 需要下载数据集到指定位置。分别点击上述两个链接,右键另存为到指定的位置。(注意修改文件名字和后缀)

3.4、设置偏差检测选项、加载数据集并在训练和测试之间拆分

  • 加载初始数据集,将受保护属性设置为 age。
  • 将原始数据集拆分为训练数据集和测试数据集。虽然在本教程中我们将仅使用训练数据集,但正常的工作流也会使用测试数据集来评估机器学习模型开发期间的有效性(准确性、公平性等)。
  • 为 age 属性的特权群体(1)和非特权群体(0)设置两个变量。
  • dataset_orig = GermanDataset(protected_attribute_names=['age'],           # 将年龄指定为被保护属性privileged_classes=[lambda x: x >= 25],      # age >=25 认为是特权features_to_drop=['personal_status', 'sex']  # 忽略与性别有关的属性
    )dataset_orig_train, dataset_orig_test = dataset_orig.split([0.7], shuffle=True)privileged_groups = [{'age': 1}]
    unprivileged_groups = [{'age': 0}]  # 其中“1”(大于或等于 25)和“0”(小于 25)分别是特权组和非特权组的值

3.5、计算原始训练数据集上的公平性指标

  • 使用平均差来度量数据集中的偏见。比较特权和非特权群体的有利结果百分比,从后者中减去前者的百分比,负值表示对非特权组不利的结果。
  • 使用BinaryLabelDatasetMetric类中的mean_difference方法实现。
  • # 创建BinaryLabelDatasetMetric对象,传入原始训练数据集dataset_orig_train,以及privileged_groups和unprivileged_groups的定义
    metric_orig_train = BinaryLabelDatasetMetric(dataset_orig_train, unprivileged_groups=unprivileged_groups,privileged_groups=privileged_groups)
    display(Markdown("#### Original training dataset"))
    print("Difference in mean outcomes between unprivileged and privileged groups = %f" % metric_orig_train.mean_difference())
  • 编译后显示差值为 -0.169905。

3.6、通过转换原始数据集来缓解偏差

  • 尝试减轻训练数据集中的偏见被称为预处理去偏,因为它发生在创建模型之前。
  • AI Fairness 360 实现了多种预处理缓解算法,选择重新加权算法(通过改变样本权重的方式来减少数据集中不同群体之间的偏差),该算法在包中的类中实现。此算法将转换数据集,使其在特权组和非特权组的受保护属性的积极结果上具有更大的公平性。
  • 再调用拟合和转换方法来执行转换,生成新转换的训练数据集(dataset_transf_train)。
  • RW = Reweighing(unprivileged_groups=unprivileged_groups,privileged_groups=privileged_groups)  # 创建Reweighing对象RW
    dataset_transf_train = RW.fit_transform(dataset_orig_train)  # 计算权重,并生成一个新的训练数据集

3.7、在转换后的训练数据集上计算公平性指标

  • 再次使用平均差来度量它的去偏效果。
  • metric_transf_train = BinaryLabelDatasetMetric(dataset_transf_train, unprivileged_groups=unprivileged_groups,privileged_groups=privileged_groups)
    display(Markdown("#### Transformed training dataset"))
    print("Difference in mean outcomes between unprivileged and privileged groups = %f" % metric_transf_train.mean_difference())
  • 结果显示去偏效果非常明显,平均结果的差异现在是0.0。

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

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

相关文章

clickHouse部署

docker仓库地址 https://hub.docker.com/ 1、docker环境搭建 # 1.先安装yml yum install -y yum-utils device-mapper-persistent-data lvm2 # 2.设置阿里云镜像 sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# 3.查…

Docker 镜像

1. 什么是镜像? 镜像 是一种轻量级、可执行的独立软件包,它包含运行某个软件所需的所有内容,我们把应用程序和配置依赖打包好形成一个可交付的运行环境(包括代码、运行时需要的库、环境变量和配置文件等),这个打包好的运行环境就…

R语言ggplot2 | R语言绘制物种组成面积图(三)

📋文章目录 面积图简介准备数据集加载数据集数据处理数据可视化 利用R语言绘制物种组成图。本文以堆叠面积图的方式与大家分享。 面积图简介 面积图又叫区域图。它是在折线图的基础之上形成的, 它将折线图中折线与自变量坐标轴之间的区域使用颜色或者纹理填充&…

KubeSphere 部署 Zookeeper 实战教程

前言 知识点 定级:入门级如何利用 AI 助手辅助运维工作单节点 Zookeeper 安装部署集群模式 Zookeeper 安装部署开源应用选型思想 实战服务器配置(架构 1:1 复刻小规模生产环境,配置略有不同) 主机名IPCPU内存系统盘数据盘用途ks-master-0192.168.9.9…

培训报名小程序-用户注册

目录 1 创建数据源2 注册用户3 判断用户是否注册4 完整代码总结 我们的培训报名小程序,用户每次打开时都需要填写个人信息才可以报名,如果用户多次报名课程,每次都需要填写个人信息,比较麻烦。 本篇我们就优化一下功能&#xff0c…

AWK +iptables+shell实战脚本案例

目录 一、在Centos下安装httpd 查看安装是否成功 重启httpd 查看80端口是否开放 在主机上查询 查看防火墙 在浏览器中查询主机IP地址 查看日志是否生成 二、AWK iptablesshell实战脚本案例 1、封堵扫描器 (1) 开始扫描器 特别注意:在Vim中尽量不要使用空格…

YOLOv8目标检测算法

YOLOv8目标检测算法相较于前几代YOLO系列算法具有如下的几点优势: 更友好的安装/运行方式速度更快、准确率更高新的backbone,将YOLOv5中的C3更换为C2FYOLO系列第一次尝试使用anchor-free新的损失函数 YOLOv8简介 YOLOv8 是 Ultralytics 公司继 YOLOv5…

【UniApp开发小程序】小程序首页(展示商品、商品搜索、商品分类搜索)【后端基于若依管理系统开发】

文章目录 界面效果界面实现工具js页面首页让文字只显示两行路由跳转传递对象将商品分为两列显示使用中划线划掉原价 后端商品controllerservicemappersql 界面效果 【说明】 界面中商品的图片来源于闲鱼,若侵权请联系删除关于商品分类页面的实现,请在我…

c++QT文件操作

1 介绍 QT的文件操作来源于其抽象基类QIODevice,中用于处理输入输出设备。提供了统一的接口来处理不同类型的数据源,如文件、套接字、缓冲区等。QIODevice 主要用于读取和写入数据,无论数据来自何种源头,都可以通过 QIODevice 统一…

vue.draggable浅尝

介绍 Vue.Draggable是一款基于Sortable.js实现的vue拖拽插件。支持移动设备、拖拽和选择文本、智能滚动,可以在不同列表间拖拽、不依赖jQuery为基础、vue 2过渡动画兼容、支持撤销操作,总之是一款非常优秀的vue拖拽组件。本篇将介绍如何搭建环境及简单的…

推荐工具!使终端便于 DevOps 和 Kubernetes 使用

如果你熟悉 DevOps 和 Kubernetes 的使用,就会知道命令行界面(CLI)对于管理任务有多么重要。好在现在市面上有一些工具可以让终端在这些环境中更容易使用。在本文中,我们将探讨可以让工作流程简化的优秀工具,帮助你在 …

「并发编程 」

一、 为什么会有线程安全问题 1)程序和CPU间的协作关系 CPU组成 寄存器 存储了从内存加载的数据(从内存中将数据加载到 L1,L2,L3 缓存,再到寄存器) ;寄存器的运行速度比内存快好多个级别&…

中小企业选择CRM系统需要有哪些功能?

对于中小企业来说,选择一个合适的CRM系统是非常重要的,一款好用的CRM可以帮助企业提高业务效率,获得更多收益。那么,中小企业CRM系统的主要特点有哪些呢?下面我们从四个方面来说说。 1、功能: 功能是指CR…

试岗第一天问题

1、公司的一个项目拉下来 ,npm i 不管用显示 后面百度 使用了一个方法 虽然解决 但是在增加别的依赖不行,后面发现是node版本过高,更换node版本解决。 2、使用插件动态的使数字从0到100(vue-animate-number插件) 第一…

日常BUG——git提交代码报错

😜作 者:是江迪呀✒️本文关键词:日常BUG、BUG、问题分析☀️每日 一言 :存在错误说明你在进步! 一、问题描述 git 在提交代码时报错: Committing is not possible because you have unmerge…

QT 使用第三方库QtXlsx操作Excel表

1.简介 一直以来,都想学习一下C/C如何操作excel表,在网上调研了一下,觉得使用C/C去操作很麻烦,遂转向QT这边;QT有一个自带的类QAxObject,可以使用他去操作,但随着了解的深入,觉得他…

【力扣周赛】第 358 场周赛

文章目录 竞赛链接Q1:6939. 数组中的最大数对和竞赛时代码—— O ( n 2 ) O(n^2) O(n2)解法2——一次遍历 O ( n ) O(n) O(n),维护最大数位为 i 的元素的最大值 Q2:6914. 翻倍以链表形式表示的数字竞赛时代码——存入列表再计算解法2——只有…

R语言生存分析算法的简单组合

library(survival) library(randomForestSRC)# 生成模拟数据 set.seed(123) n <- 200 time <- rexp(n, rate 0.1) status <- rbinom(n, size 1, prob 0.7) var1 <- rnorm(n) var2 <- rnorm(n) var3 <- rnorm(n) data1 <- data.frame(time time, statu…

PLL 的 verilog 实现

锁相环&#xff08;PLL&#xff09;是一种常用的频率、相位追踪算法&#xff0c;在信号解调、交流并网等领域有着广泛的应用。本文对全数字锁相环的原理进行介绍&#xff0c;随后给出 verilog 实现及仿真。 PLL 锁相原理 锁相环结构如下图所示&#xff0c;主要由鉴相器、环路滤…

UDP通信实验、广播与组播、本地套接字

文章目录 流程函数应用广播应用 组播&#xff08;多播&#xff09;本地套接字应用 流程 函数 返回值&#xff1a; 成功&#xff0c;返回成功发送的数据长度 失败&#xff0c;-1 返回值&#xff1a; 成功&#xff0c;返回成功接收数据长度 失败&#xff0c;-1 应用 广播 应用 …