傻瓜式学习Python案例一:代码测试数据集是否存在偏见

傻瓜式学习Python案例一:代码测试数据集是否存在偏见

你好! 欢迎来到傻瓜式学习Python社区,本期的主要任务是构建一个测试数据集是否存在偏差的函数。该函数通过统计性别比例并比较其差异,判断数据集中是否存在显著的性别偏差(超过10%)。

一、配置环境

1、下载PyCharm(自行搜索官方网站);
2、下载AnaConda(自行搜索网站教程);
3、新建项目New Project—设置存储路径—选择AnaConda环境(先在Anaconda中新建环境,根据目录找到已建环境)
在这里插入图片描述
在这里插入图片描述

思路:
1、新建数据;
2、构建用于检查数据集中是否存在性别偏差的函数;
3、运行结果(Ture/False)。

二、实验

1、删掉新建项目中新建窗口的所有代码;
2、复制以下代码;
data = [
{‘name’: ‘Alice’, ‘gender’: ‘female’},
{‘name’: ‘Bob’, ‘gender’: ‘male’},
{‘name’: ‘Charlie’, ‘gender’: ‘male’},
{‘name’: ‘Diana’, ‘gender’: ‘female’},
{‘name’: ‘Eve’, ‘gender’: ‘female’}
]//定义:数据data是一个列表

def check_gender_bias(data):
//定义函数check_gender_bias,接收一个数据集data作为参数
male_count = sum(1 for entry in data if entry[‘gender’] == ‘male’)
female_count = sum(1 for entry in data if entry[‘gender’] == ‘female’)
total_entries = len(data)
print(f"Male entries: {male_count/total_entries100:.2f}%")
print(f"Female entries: {female_count/total_entries
100:.2f}%")
if abs(male_count - female_count)/total_entries > 0.1:
return True
else:
return False
复制代码

三、运行及结果

print(check_gender_bias(data))

在这里插入图片描述

四、解释说明

(1)数据说明
这段代码中的data是一个列表(list),列表中的每个元素是一个字典(dict)。以下是详细解释:

  1. 列表(list)
    data是一个列表,用方括号[]定义。
    列表中的每个元素是一个字典,表示一个数据条目。
    列表是可变的(可以添加、删除、修改元素),且元素是有序的。
  2. 字典(dict)
    列表中的每个元素是一个字典,用花括号{}定义。
    每个字典有两个键值对:
    键’name’:值是一个字符串,表示名字。
    键’gender’:值是一个字符串,表示性别,取值为’male’或’female’。
    字典是无序的(在Python 3.7+中字典保持插入顺序),且可以通过键访问值。
  3. 具体数据
    data = [
    {‘name’: ‘Alice’, ‘gender’: ‘female’}, # 第一个字典
    {‘name’: ‘Bob’, ‘gender’: ‘male’}, # 第二个字典
    {‘name’: ‘Charlie’, ‘gender’: ‘male’}, # 第三个字典
    {‘name’: ‘Diana’, ‘gender’: ‘female’}, # 第四个字典
    {‘name’: ‘Eve’, ‘gender’: ‘female’} # 第五个字典]
    第一个字典:{‘name’: ‘Alice’, ‘gender’: ‘female’}
    name的值是’Alice’(字符串)。
    gender的值是’female’(字符串)。
    第二个字典:{‘name’: ‘Bob’, ‘gender’: ‘male’}
    name的值是’Bob’。
    gender的值是’male’。
    以此类推。
  4. 数据类型总结
    data是一个列表,包含5个字典。
    每个字典有两个键值对,键是字符串,值也是字符串。
  5. 访问数据示例
    // 访问第一个字典
    first_entry = data[0]print(first_entry) // 输出: {‘name’: ‘Alice’, ‘gender’: ‘female’}
    // 访问第一个字典中的’name’值
    first_name = data[0][‘name’]print(first_name) // 输出: Alice
    // 访问第一个字典中的’gender’值
    first_gender = data[0][‘gender’]print(first_gender) // 输出: female
    通过这种方式,可以逐层访问列表中的字典以及字典中的具体值。
    (2)函数说明
    这段代码定义了一个名为check_gender_bias的函数,用于检查数据集中是否存在性别偏差。以下是代码的逐步讲解:
  6. 函数定义
    def check_gender_bias(data):
    这是一个函数定义,接受一个参数data,它应该是一个包含字典的列表,每个字典代表一个数据条目,且每个字典中包含一个键’gender’,其值为’male’或’female’。
  7. 统计性别数量
    male_count = sum(1 for entry in data if entry[‘gender’] == ‘male’)
    female_count = sum(1 for entry in data if entry[‘gender’] == ‘female’)
    使用生成器表达式和sum()函数统计数据集中男性和女性的数量:
    male_count:计算data中’gender’键值为’male’的条目数量。
    female_count:计算data中’gender’键值为’female’的条目数量。
  8. 计算总条目数
    total_entries = len(data)
    total_entries是数据集的总条目数,即data的长度。
  9. 打印性别比例
    print(f"Male entries: {male_count/total_entries100:.2f}%")
    print(f"Female entries: {female_count/total_entries
    100:.2f}%")
    计算男性和女性条目占总条目的百分比,并格式化输出,保留两位小数。
  10. 判断性别偏差
    if abs(male_count - female_count)/total_entries > 0.1:
    return True
    else:
    return False

计算男性和女性数量的绝对差值占总条目的比例:
如果该比例大于10%(即0.1),则认为存在性别偏差,返回True。
否则,返回False。
(3)运行并显示结果
print(check_gender_bias(data))
这行代码的作用是调用之前定义的check_gender_bias函数,并将结果打印到控制台。

  1. 函数调用
    check_gender_bias(data)
    调用check_gender_bias函数,并将data作为参数传递给它。
    data是一个包含性别信息的列表,如之前定义的示例数据。
  2. 函数执行
    函数内部会执行以下操作:
    统计性别数量:计算男性和女性的数量。
    计算总条目数:获取data的长度。
    打印性别比例:输出男性和女性条目占总条目的百分比。
    判断性别偏差:如果男性和女性数量的绝对差值占总条目的比例超过10%,返回True,否则返回False。
  3. 打印结果
    print(check_gender_bias(data))
    将check_gender_bias(data)的返回值(True或False)打印到控制台。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值