Python 数据分析微专业课程--项目实战13 婚恋配对实验

本文主要是介绍Python 数据分析微专业课程--项目实战13 婚恋配对实验,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.项目说明

创建模型模拟1万男性和1万女性的婚恋配对实验,男性和女性都有财富、内涵、外貌三个属性的得分,并根据不同的择偶策略选择对象。

2.项目具体要求

1、样本数据处理①样本要求:按照一定规则生成了1万男性+1万女性样本:在配对实验中,这2万个样本具有各自不同的个人属性(财富、内涵、外貌),每项属性都有一个得分财富值符合指数分布,内涵和颜值符合正态分布三项的平均值都为60分,标准差都为15分②构建函数实现样本数据生成模型,函数参数之一为“样本数量”,并用该模型生成1万男性+1万女性数据样本2、生成99个男性、99个女性样本数据,分别针对三种策略构建算法函数策略:择偶策略1:门当户对,要求双方三项指标加和的总分接近,差值不超过20分;择偶策略2:男才女貌,男性要求女性的外貌分比自己高出至少10分,女性要求男性的财富分比自己高出至少10分;择偶策略3:志趣相投、适度引领,要求对方的内涵得分在比自己低10分~高10分的区间内,且外貌和财富两项与自己的得分差值都在5分以内要求:① 生成样本数据② 给男性样本数据,随机分配策略选择 → 这里以男性为出发作为策略选择方③ 尝试做第一轮匹配,记录成功的匹配对象,并筛选出失败的男女性进入下一轮匹配④ 构建模型,并模拟1万男性+1万女性的配对实验3、以99男+99女的样本数据,绘制匹配折线图要求:① 生成样本数据,模拟匹配实验② 生成绘制数据表格4、生成“不同类型男女配对成功率”矩阵图要求:① 以之前1万男+1万女实验的结果为数据② 按照财富值、内涵值、外貌值分别给三个区间,以区间来评判“男女类型”③ 绘图查看不同类型的配对成对率

3.实现思路:

1.生成男女样本数据,根据样本要求可以使用随机数方法生成财富、内涵、外貌三个属性数据,用索引来标记男女,
可以创建函数来生成样本数据,输入性别和数量参数即可。
2.创建完成的算法函数,最关键的是对最基本的情景的模拟,这里最重要的模拟第一轮的配对。第一轮的配对要模拟一下几个步骤:a.生成男女样本b.对男性样本随机分配策略,然后进行第一轮的随机配对。c.根据策略要求,将配对成功的男性样本和女性样本从总样本中移除,可以创建一个表格用于存放成功配对样本d.剩余样本进入下一轮配对。然后根据基本模型进行扩展,创建完整的算法函数,通过输入样本量参数,来模拟不同样本量的配对,并返回样本数据和配对成功样本数据。
用于之后的统计分析。可以用男性和女性样本ID作为x轴和y轴,绘制折线图来模拟每一轮的男女配对情况。
3.分析不通过男女类型的配对成功率,首先需要对原始样本做类别划分,然后将成功配对的数据连接类别,然后根据男女类别分组计数,就可以
计算得到不同男女类别的成功率,已男女类别分别为X,Y 轴绘制散点图,用成功率设置透明度,则可以看到那些不同类别的成功率分布情况。

4.实现过程:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inlinefrom bokeh.io import output_notebook
output_notebook()from bokeh.plotting import figure,show
from bokeh.models import ColumnDataSourceimport warnings
warnings.filterwarnings('ignore')#构建生成样本数据函数
def samples(gender,n):    sample = pd.DataFrame({'fortune':np.random.exponential(15,size = n)+45,#生成呈指数分布随机数--财富'charactor':np.random.normal(60,15,size = n),  #生成正太分布随机数--内涵'appearance':np.random.normal(60,15,size = n)}, #生成正太分布随机数--外貌index = [gender+str(i) for i in range(1,n+1)])sample.index.name = 'Id'sample['score'] = sample.sum(axis = 1)/3 #指标平均数作为综合指标return sample#生成10000男性 +10000女性样本
male_samples = samples('m',10000)
female_samples = samples('f',10000)#对男性样本数据绘制堆叠柱状图
male_samples.iloc[:50,:3].plot(kind = 'bar',figsize = (14,5),stacked = True,legend =True,colormap = 'Blues_r',edgecolor = 'black')
plt.grid(linestyle = '--')
#对女性样本数据绘制堆叠柱状图
female_samples.iloc[:50,:3].plot(kind = 'bar',figsize = (14,5),stacked = True,legend =True,colormap = 'Reds_r',edgecolor = 'black')
plt.grid(linestyle = '--')print(male_samples.head(20))

这里写图片描述
这里写图片描述

说明:
1.这里创建函数来生成样本数据,输入性别和数量参数,即可生成指定性别和样本量的的数据。
2.使用两个随机数生成方法来生成数据,指数分布随机数np.random.exponential(),正态分布随机数np.random.normal(),输入均值,标准差,样本量参数,就可以生成满足要求的随机数样本。财富属性需符合指数分布,内涵和外貌需符合正态分布。dataframe的索引作为样本身份id.
3.创建样本之后根据三个属性绘制堆叠柱状图来了解男女样本的属性得分情况。

#生成99个男性和99个女性样本数据
male_sample_test = samples('m',99)
female_sample_test = samples('f',99)#为男性样本随机分配择偶策略
male_sample_test['strategy'] = np.random.choice([1,2,3],99)#创建一个表格用于存放配对成功的样本
match_succeed = pd.DataFrame(data = None,index = None,columns = ['f','m','round_n','strategy_type'])#模拟第一轮配对
round1_m = male_sample_test.copy()  #第一轮可配对男性
round1_f = female_sample_test.copy() #第一轮可配对女性
round1_m['choice'] = np.random.choice(round1_f.index,len(round1_m))  #进行男女随机配对
round1_match = pd.merge(round1_m,round1_f,left_on = 'choice',right_index = True) #连接配对成功的男女数据
round1_match['appearance_dif'] =np.abs(round1_match['appearance_x'

这篇关于Python 数据分析微专业课程--项目实战13 婚恋配对实验的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/197119

相关文章

使用Python删除Excel中的行列和单元格示例详解

《使用Python删除Excel中的行列和单元格示例详解》在处理Excel数据时,删除不需要的行、列或单元格是一项常见且必要的操作,本文将使用Python脚本实现对Excel表格的高效自动化处理,感兴... 目录开发环境准备使用 python 删除 Excphpel 表格中的行删除特定行删除空白行删除含指定

MySQL 多列 IN 查询之语法、性能与实战技巧(最新整理)

《MySQL多列IN查询之语法、性能与实战技巧(最新整理)》本文详解MySQL多列IN查询,对比传统OR写法,强调其简洁高效,适合批量匹配复合键,通过联合索引、分批次优化提升性能,兼容多种数据库... 目录一、基础语法:多列 IN 的两种写法1. 直接值列表2. 子查询二、对比传统 OR 的写法三、性能分析

Python通用唯一标识符模块uuid使用案例详解

《Python通用唯一标识符模块uuid使用案例详解》Pythonuuid模块用于生成128位全局唯一标识符,支持UUID1-5版本,适用于分布式系统、数据库主键等场景,需注意隐私、碰撞概率及存储优... 目录简介核心功能1. UUID版本2. UUID属性3. 命名空间使用场景1. 生成唯一标识符2. 数

Python办公自动化实战之打造智能邮件发送工具

《Python办公自动化实战之打造智能邮件发送工具》在数字化办公场景中,邮件自动化是提升工作效率的关键技能,本文将演示如何使用Python的smtplib和email库构建一个支持图文混排,多附件,多... 目录前言一、基础配置:搭建邮件发送框架1.1 邮箱服务准备1.2 核心库导入1.3 基础发送函数二、

Python包管理工具pip的升级指南

《Python包管理工具pip的升级指南》本文全面探讨Python包管理工具pip的升级策略,从基础升级方法到高级技巧,涵盖不同操作系统环境下的最佳实践,我们将深入分析pip的工作原理,介绍多种升级方... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

PowerShell中15个提升运维效率关键命令实战指南

《PowerShell中15个提升运维效率关键命令实战指南》作为网络安全专业人员的必备技能,PowerShell在系统管理、日志分析、威胁检测和自动化响应方面展现出强大能力,下面我们就来看看15个提升... 目录一、PowerShell在网络安全中的战略价值二、网络安全关键场景命令实战1. 系统安全基线核查

基于Python实现一个图片拆分工具

《基于Python实现一个图片拆分工具》这篇文章主要为大家详细介绍了如何基于Python实现一个图片拆分工具,可以根据需要的行数和列数进行拆分,感兴趣的小伙伴可以跟随小编一起学习一下... 简单介绍先自己选择输入的图片,默认是输出到项目文件夹中,可以自己选择其他的文件夹,选择需要拆分的行数和列数,可以通过

Python中反转字符串的常见方法小结

《Python中反转字符串的常见方法小结》在Python中,字符串对象没有内置的反转方法,然而,在实际开发中,我们经常会遇到需要反转字符串的场景,比如处理回文字符串、文本加密等,因此,掌握如何在Pyt... 目录python中反转字符串的方法技术背景实现步骤1. 使用切片2. 使用 reversed() 函

Python中将嵌套列表扁平化的多种实现方法

《Python中将嵌套列表扁平化的多种实现方法》在Python编程中,我们常常会遇到需要将嵌套列表(即列表中包含列表)转换为一个一维的扁平列表的需求,本文将给大家介绍了多种实现这一目标的方法,需要的朋... 目录python中将嵌套列表扁平化的方法技术背景实现步骤1. 使用嵌套列表推导式2. 使用itert

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker