婚恋配对实验
目的:
通过模拟匹配,探索常见的寻偶标准,哪一种更大的概率找到对象。
一、婚恋配对模拟规则:
- 按照一定规则生成了 1 万男性 + 1 万女性样本:
- 在配对实验中,这 2 万个样本具有各自不同的个人属性(财富、内涵、样貌),每项属性都有一个得分。
- 财富值符合指数分布,内涵和颜值符合正态分布。
- 三项的平均值都为 60 分,标准差都为 15 分。
- 模拟实验,基于现实世界的提炼以及适度简化,概括了三个最主流的择偶策略:
- 策略1:门当户对,要求双方三项指标加和的总分接近,差值不超过 20 分(算均值);
- 策略2:男才女貌,男性要求女性的外貌分比自己高出至少 10 分,女性要求男性的财富分比自己高出至少 10 分;
- 策略3:志趣相投、适度引领,要求对方的内涵得分在比自己 低 10 分 ~ 高 10分 之间,且外貌和财富两项与自己的得分差值都在 5 分之内。
- 这里按单项选择,用男性去匹配女性,每一轮实验中,我们将三种策略随机平分给所有样本(即采用每种策略的男性有 3333 个样本)
- 我们为单身男女随机选择一个对象,若对方互相符合要求就算配对成功,配对失败的男女则进入下一轮配对。
二、样本数据处理
-
处理样本数据
- 在配对实验中,这 2 万个样本具有各自不同的个人属性(财富、内涵、样貌),每项属性都有一个得分。
- 财富值符合指数分布,内涵和颜值符合正态分布。
- 三项的平均值都为 60 分,标准差都为 15 分。
要求:
- 构建函数实现样本数据生成模型,函数参数之一为“样本数量”,并用该模型生成 1 万男性 + 1 万女性数据样本(包括三个指标:财富、内涵、样貌)
- 绘制柱状图查看每个人的属性分值情况
提示:
- 正态分布:np.random.normal(loc = 60,scale = 15.size = n)
- 指数分布:np.random.exponential(scale = 15,size = n) + 45
数据生成后的格式:
数据生成后的格式-
生成 99 个男性、99 个女性样本数据,分别针对三种策略构建算法函数(核心:筛选人数)
-
策略1:门当户对,要求双方三项指标加和的总分接近,差值不超过 20 分;
-
策略2:男才女貌,男性要求女性的外貌分比自己高出至少 10 分,女性要求男性的财富分比自己高出至少 10 分;
-
策略3:志趣相投、适度引领,要求对方的内涵得分在比自己低 10 分 ~ 高 10分之间,且外貌和财富两项与自己的得分差值都在 5 分之内。
-
每一轮实验中,我们将三种策略随机平分给所有的样本,这里则是三种分别 33 人。
-
这里不同策略匹配结果可能重合,所以为了简化模型
→ 这里先进行策略 1 模拟
→ 模拟成功后去掉该轮成功匹配的女性数据,再进行策略 2 模拟
→ 模拟成功后去掉该轮成功匹配的女性数据,再进行策略 3 模拟
-
要求:
- 生成样本数据
- 给男性样本数据,随机分配策略选择 → 这里以男性为出发作为策略选择方
- 尝试做第一轮匹配,记录成功的匹配结果,并筛选出失败的男女进入下一轮匹配
- 构建模型,并模拟 1 万男性 + 1 万女性的配对实验
- 通过数据分析,回答下面的问题:
- 百分之多少的样本数据成功匹配到了对象?
- 采取不同择偶策略的匹配成功率分别是多少?
- 采取不同择偶策略的男性各项平均分是多少?
提示:
- 择偶策略评判标准:
- 若匹配成功,则该男性与被匹配在这一轮都算成功,退出游戏
- 若匹配失败,则该男性与被匹配在这一轮都算失败,并进行下一轮
- 若同时多个男性选择了同一个女性,且满足成功配对要求,则综合评分高的男性算为匹配成功
- 构建空的数据集,用于存储匹配成功的数据
- 每一轮匹配之后,删除成功匹配的数据之后,进入下一轮,这里删除数据用 df.drop()
- 这里建议用 while 去做迭代 → 当该轮没有任何配对成功,则停止实验。
匹配成功的数据存储格式:
匹配成功的数据存储格式结论1:
-
71.22% 的样本数据成功匹配到了对象
-
策略1 的匹配成功率为 100.00%
策略2 的匹配成功率为 39.03%
策略3 的匹配成功率为 73.78%
即门当户对匹配率最高,其次是志趣相投,男才女貌的匹配率较低。
-
择偶策略1的男性 → 财富均值为 60.15,内涵均值 59.85,外貌均值为 59.84
择偶策略2的男性 → 财富均值为 72.05,内涵均值 60.22,外貌均值为 55.17
择偶策略3的男性 → 财富均值为 57.80,内涵均值 59.91,外貌均值为 57.80三个策略均值相差不大
-
通过箱型图查看整体趋势可以得出,策略2 的财富值明显较高;内涵方面 3 个策略都相差不大;外貌方面,策略1 和 策略3 外貌的最高值高于策略2。
-
以 99 男 + 99 女的样本数据,绘制匹配折线图
要求:
- 生成样本数据,模拟匹配实验
- 生成绘制数据表格
- bokeh 制图
- 找了设置图例,并且可交互(消隐身模式)
提示:
-
bokeh 制图时,y 轴为男性,x 轴为女性
-
绘制数据表格中,需要把男女性的数字编号提取出来,这样图表横纵轴好识别
- bokeh 绘制折线图示意:p.line([0,女性数字编号,女性数字编号],[男性数字编号,男性数字编号,0]) 数据表格格式
-
生成不同类型男女配对成功率矩阵图
要求:
-
以之前 1 万男 + 1 万女实验的结果为数据
-
按照财富值、内涵值、外貌值分别给三个区间,以区间来评判“男女类型”
- 高分(70 - 100),中分(50 - 70),低分(0 -50)
- 按照此类分布,男女性都可以分为 27 中类型:财高品高颜高,财高品中颜高,财高品低颜高 等
-
bokeh 制图
- 散点图
- 27 行 * 27列,三点的颜色深浅代表匹配成功率
-
提示:
-
注意绘图的数据结构
-
这里散点图通过 xy 轴定位数据,然后通过设置颜色的透明度来表示匹配成功率
-
alpha 字段为每种类型匹配成功率标准化之后的结果,再乘以一个参数
→ data['alpha'] = (data['chance'] - data['chance'].min()) /(data['chance'].max() - data['chance'].min()) * 8
Bokeh 绘图数据结构:
不同类型配对成功率由上图可知,男性财中品中颜低 与 女性财低品中颜中 的匹配率较高,相当于 颜值较低的普通男性 与 财富值较低的普通女性 的匹配率较高。
网友评论