婚恋配对实验

婚恋配对实验
PS:如果各位有疑问的话,可以留下微信,我看到会第一时间加的,以后可以多多交流

1、项目要求

婚恋配对模拟规则:
① 按照一定规则生成了1万男性+1万女性样本:
** 在配对实验中,这2万个样本具有各自不同的个人属性(财富、内涵、外貌),每项属性都有一个得分
** 财富值符合指数分布,内涵和颜值符合正态分布
** 三项的平均值都为60分,标准差都为15分
② 模拟实验。基于现实世界的提炼及适度简化,我们概括了三个最主流的择偶策略:
** 择偶策略1:门当户对,要求双方三项指标加和的总分接近,差值不超过20分;
** 择偶策略2:男才女貌,男性要求女性的外貌分比自己高出至少10分,女性要求男性的财富分比自己高出至少10分;
** 择偶策略3:志趣相投、适度引领,要求对方的内涵得分在比自己低10分~高10分的区间内,且外貌和财富两项与自己的得分差值都在5分以内
③ 每一轮实验中,我们将三种策略随机平分给所有样本(即采用每种策略的男性有3333个样本)
④ 我们为每位单身男女随机选择一个对象,若双方互相符合要求就算配对成功,配对失败的男女则进入下一轮配对。

1、样本数据处理
** 按照一定规则生成了1万男性+1万女性样本:
** 在配对实验中,这2万个样本具有各自不同的个人属性(财富、内涵、外貌),每项属性都有一个得分
** 财富值符合指数分布,内涵和颜值符合正态分布
** 三项的平均值都为60分,标准差都为15分

2、生成99个男性、99个女性样本数据,分别针对三种策略构建算法函数
** 择偶策略1:门当户对,要求双方三项指标加和的总分接近,差值不超过20分;
** 择偶策略2:男才女貌,男性要求女性的外貌分比自己高出至少10分,女性要求男性的财富分比自己高出至少10分;
** 择偶策略3:志趣相投、适度引领,要求对方的内涵得分在比自己低10分~高10分的区间内,且外貌和财富两项与自己的得分差值都在5分以内
** 每一轮实验中,我们将三种策略随机平分给所有样本,这里则是三种策略分别33人
** 这里不同策略匹配结果可能重合,所以为了简化模型
→ 先进行策略1模拟,
→ 模拟完成后去掉该轮成功匹配的女性数据,再进行策略2模拟,
→ 模拟完成后去掉该轮成功匹配的女性数据,再进行策略3模拟

3、以99男+99女的样本数据,绘制匹配折线图

4、生成“不同类型男女配对成功率”矩阵图

2、结果实现

1.1、导入模块创建原始数据

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import warnings
warnings.filterwarnings('ignore')
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
plt.style.use('classic')
import time
 
#问题1:创建原始数据
 
def data1(i,gender):
    data = pd.DataFrame({'fortune':np.random.exponential(size = i,scale = 15)+45,
                         'apperance':np.random.normal(loc = 60,size = i,scale = 15),
                         'character':np.random.normal(loc = 60,size = i,scale = 15)})
    data.index = [str(i)+ gender for i in range(1,i+1)]
    data.index.name = 'id'
    data['score']= data.sum(axis = 1)/3
    return data
 
round_m = data1(10000,'m')
round_f = data1(10000,'f')

1.2、绘制堆叠图查看数据

round_m[['fortune','apperance','character']][:30].plot(kind = 'bar',stacked = True,
    figsize = (15,6),colormap ='Reds_r',grid = True)
round_m[['fortune','apperance','character']][:30].plot(kind = 'bar',stacked = True,
    figsize = (15,6),colormap ='Blues_r',grid = True)

在这里插入图片描述
在这里插入图片描述

2.1、获取99个样本数据,模拟第二轮结

round1_m = data1(99,&#
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值