婚戀配對實驗
目的:
通過模擬匹配,探索常見的尋偶標準,哪一種更大的概率找到對象。
一、婚戀配對模擬規(guī)則:
- 按照一定規(guī)則生成了 1 萬男性 + 1 萬女性樣本:
- 在配對實驗中,這 2 萬個樣本具有各自不同的個人屬性(財富、內涵、樣貌),每項屬性都有一個得分。
- 財富值符合指數分布,內涵和顏值符合正態(tài)分布。
- 三項的平均值都為 60 分,標準差都為 15 分。
- 模擬實驗,基于現實世界的提煉以及適度簡化,概括了三個最主流的擇偶策略:
- 策略1:門當戶對,要求雙方三項指標加和的總分接近,差值不超過 20 分(算均值);
- 策略2:男才女貌,男性要求女性的外貌分比自己高出至少 10 分,女性要求男性的財富分比自己高出至少 10 分;
- 策略3:志趣相投、適度引領,要求對方的內涵得分在比自己 低 10 分 ~ 高 10分 之間,且外貌和財富兩項與自己的得分差值都在 5 分之內。
- 這里按單項選擇,用男性去匹配女性,每一輪實驗中,我們將三種策略隨機平分給所有樣本(即采用每種策略的男性有 3333 個樣本)
- 我們?yōu)閱紊砟信S機選擇一個對象,若對方互相符合要求就算配對成功,配對失敗的男女則進入下一輪配對。
二、樣本數據處理
-
處理樣本數據
- 在配對實驗中,這 2 萬個樣本具有各自不同的個人屬性(財富、內涵、樣貌),每項屬性都有一個得分。
- 財富值符合指數分布,內涵和顏值符合正態(tài)分布。
- 三項的平均值都為 60 分,標準差都為 15 分。
要求:
- 構建函數實現樣本數據生成模型,函數參數之一為“樣本數量”,并用該模型生成 1 萬男性 + 1 萬女性數據樣本(包括三個指標:財富、內涵、樣貌)
- 繪制柱狀圖查看每個人的屬性分值情況
提示:
- 正態(tài)分布:np.random.normal(loc = 60,scale = 15.size = n)
- 指數分布:np.random.exponential(scale = 15,size = n) + 45
正態(tài)分布與指數分布樣本數據屬性分值情況
數據生成后的格式:
-
生成 99 個男性、99 個女性樣本數據,分別針對三種策略構建算法函數(核心:篩選人數)
策略1:門當戶對,要求雙方三項指標加和的總分接近,差值不超過 20 分;
策略2:男才女貌,男性要求女性的外貌分比自己高出至少 10 分,女性要求男性的財富分比自己高出至少 10 分;
策略3:志趣相投、適度引領,要求對方的內涵得分在比自己低 10 分 ~ 高 10分之間,且外貌和財富兩項與自己的得分差值都在 5 分之內。
每一輪實驗中,我們將三種策略隨機平分給所有的樣本,這里則是三種分別 33 人。
-
這里不同策略匹配結果可能重合,所以為了簡化模型
→ 這里先進行策略 1 模擬
→ 模擬成功后去掉該輪成功匹配的女性數據,再進行策略 2 模擬
→ 模擬成功后去掉該輪成功匹配的女性數據,再進行策略 3 模擬
要求:
- 生成樣本數據
- 給男性樣本數據,隨機分配策略選擇 → 這里以男性為出發(fā)作為策略選擇方
- 嘗試做第一輪匹配,記錄成功的匹配結果,并篩選出失敗的男女進入下一輪匹配
- 構建模型,并模擬 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 萬女實驗的結果為數據
-
按照財富值、內涵值、外貌值分別給三個區(qū)間,以區(qū)間來評判“男女類型”
- 高分(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 繪圖數據結構:
由上圖可知,男性財中品中顏低 與 女性財低品中顏中 的匹配率較高,相當于 顏值較低的普通男性 與 財富值較低的普通女性 的匹配率較高。