年关将至,学妹却因为男朋友不愿意带她回家过年而难过,我劝学妹主动点,自己多提几次,但是学妹觉得身为女孩子不能太主动。 于是,作为妇女之友的我打算用一个故事来开导学妹,我准备用Python作分析,拿数据说话: “学妹呀,我来给你讲个故事~” 有一座城市,当地风俗是,想结婚的男子必须先向心仪的女子求婚,而女子则需要等待求婚。 牧师每年会邀请人数相同的适婚男女参与一次集体相亲。一次相亲活动可能有很多轮:
如此反复,等大家都订婚,就举办集体婚礼。 聪明学妹马上抓住了重点:只要这个活动没有结束,女生就有机会选择她更爱的人!这对女生来说实在是太棒了,只要等着就会等到最合适的那个人! 我点点头:是的没错,但每个人对自己最终伴侣的满意度才是我们更应该关注的。虽然无法实地调查,但作为熟知Python语言和蒙特卡洛模拟方法的数据分析师,透过规律看结果还是非常简单的。看到结果你会明白一些道理。
1 接下去,就用Python来分析这类婚配规则的最终结果。 我要用Python随机生成数量相等的男女,每个人都有自己的代号和对每一位异性的喜爱程度排名,再用计算机模拟求婚过程,最后看结果。多轮模拟的结果就会更接近真实值。 先生成男性群体—— man = pd.DataFrame( [['w'+str(i) for i in random.sample(range(1,women_num+1),women_num)] 人数设定为100人,生成的结果是这样的,包含每个人的代号,和对异性群体中每个人的喜好程度: 2
这个过程实现起来可能要等很多天,但我们有Python就方便许多~部分代码长这样:
*完整代码请看文末~ 运行起来是这样的: 3 学妹看着正在运行的模拟过程有点着急了,于是我抽取其中一轮的结果: 纵轴代表该次模拟结果中,某位男性/女性的伴侣喜爱排名,即:匹配到的伴侣是他/她第X喜欢的异性。 男性更容易得到自己较为喜爱的另一半!这可和学妹最开始的预期差的有点多啊! 学妹陷入了困惑:明明随着匹配轮次增加,男性的伴侣总是从自己最喜欢的对象慢慢变成不那么喜欢的对象;而女性伴侣却在一步步变好。你会不会弄错了啊! 我:Python在手,100次模拟我有~看看这么多次模拟中,男性/女性匹配到的伴侣情况吧~ *纵轴代表其中一次模拟中,男性/女性的平均伴侣喜爱排名均值,即:匹配到的伴侣是他们/她们第X喜欢的异性。 可以明显看到,男性对自己最终匹配到的伴侣的喜爱程度,普遍高于女性。 学妹终于收起了质疑:原来主动出击真有这么大的作用! 我点点头:你看,男性在主动做出选择之时,每次都能选择自己最喜欢的对象。这个游戏保证男孩的伴侣是可能和他在一起的最好的那一个,但对女孩就不是。 故事到这里就结束了,学妹明白了主动出击的重要性跑去找她的男朋友了,我这手Python数据分析技能又被学妹夸赞了一番。 |
|