社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

叮!你要的Python脱单攻略已送达

Python网络爬虫与数据挖掘 • 5 年前 • 512 次点击  

年关将至,学妹却因为男朋友不愿意带她回家过年而难过,我劝学妹主动点,自己多提几次,但是学妹觉得身为女孩子不能太主动。


于是,作为妇女之友的我打算用一个故事来开导学妹,我准备用Python作分析,拿数据说话:


“学妹呀,我来给你讲个故事~”




有一座城市,当地风俗是,想结婚的男子必须先向心仪的女子求婚,而女子则需要等待求婚。

牧师每年会邀请人数相同的适婚男女参与一次集体相亲。一次相亲活动可能有很多轮:


  • 男子会首先向自己最爱的女子求婚,女子则会在所有的追求者中选择她的最爱;

  • 如果男子被拒绝,下一轮会向他第二喜欢的女子求婚;

  • 上一轮已经订婚的女子如果得到她更爱的人的求婚,则会毫不留情地抛弃未婚夫,和更爱的人在一起;

  • 被抛弃的男子需要重新参与求婚。


如此反复,等大家都订婚,就举办集体婚礼。




聪明学妹马上抓住了重点:只要这个活动没有结束,女生就有机会选择她更爱的人!这对女生来说实在是太棒了,只要等着就会等到最合适的那个人!


我点点头:是的没错,但每个人对自己最终伴侣的满意度才是我们更应该关注的。虽然无法实地调查,但作为熟知Python语言和蒙特卡洛模拟方法的数据分析师,透过规律看结果还是非常简单的。看到结果你会明白一些道理。


蒙特卡罗方法:一种基于随机试验和统计计算的数值方法。


1


接下去,就用Python来分析这类婚配规则的最终结果。


我要用Python随机生成数量相等的男女,每个人都有自己的代号和对每一位异性的喜爱程度排名,再用计算机模拟求婚过程,最后看结果。多轮模拟的结果就会更接近真实值。


先生成男性群体——


man = pd.DataFrame( [['w'+str(i) for i in


    
 random.sample(range(1,women_num+1),women_num)] 
                      for i in range(man_num)],
                    index = ['m'+str(i) for i in range(1,man_num+1)],
                    columns = ['level'+str(i) for i in range(1,women_num+1)]
                    )


人数设定为100人,生成的结果是这样的,包含每个人的代号,和对异性群体中每个人的喜好程度:



2


  • 每天上午,每位还没订婚的男子,会向还没拒绝过他的女子中,他最爱的那一个求婚;

  • 每天下午,每位女性会在自己接到的求婚信中,选择她最中意的男子接受求婚;如果没接到求婚,就继续等待。


这个过程实现起来可能要等很多天,但我们有Python就方便许多~部分代码长这样:


print('======测试集{}模拟开始====='.format(i))
print( '=====开始模拟求婚过程=====')
level_num = 0
while man_ismapping['love_level'].min() == 0:
level_num += 1
print('=====开始第{}天婚姻配对====='.format(level_num))
u_mapping_man = man_ismapping[man_ismapping.target == 'n'].index.tolist()


*完整代码请看文末~


运行起来是这样的:




3


学妹看着正在运行的模拟过程有点着急了,于是我抽取其中一轮的结果:


纵轴代表该次模拟结果中,某位男性/女性的伴侣喜爱排名,即:匹配到的伴侣是他/她第X喜欢的异性。


男性更容易得到自己较为喜爱的另一半!这可和学妹最开始的预期差的有点多啊!


学妹陷入了困惑:明明随着匹配轮次增加,男性的伴侣总是从自己最喜欢的对象慢慢变成不那么喜欢的对象;而女性伴侣却在一步步变好。你会不会弄错了啊!


我:Python在手,100次模拟我有~看看这么多次模拟中,男性/女性匹配到的伴侣情况吧~


*纵轴代表其中一次模拟中,男性/女性的平均伴侣喜爱排名均值,即:匹配到的伴侣是他们/她们第X喜欢的异性。


可以明显看到,男性对自己最终匹配到的伴侣的喜爱程度,普遍高于女性。


学妹终于收起了质疑:原来主动出击真有这么大的作用!


我点点头:你看,男性在主动做出选择之时,每次都能选择自己最喜欢的对象。这个游戏保证男孩的伴侣是可能和他在一起的最好的那一个,但对女孩就不是。



故事到这里就结束了,学妹明白了主动出击的重要性跑去找她的男朋友了,我这手Python数据分析技能又被学妹夸赞了一番。


说到Python数据分析,我就不得不说我在1月15日的直播,编程能力和数据分析能力都不落下,要是各位感兴趣可以来听听,免费的哦!


Part.1

免费直播课


第一场

《数据研究可以套路化吗?》

<1月15日 周二 20:00>


直播大纲

(1)一个数据分析师的成长之路

(2)分析方法可以套路化吗?

(3)数学基础和代码能力是必修门槛吗?

(4)如何系统化构建你的数据分析技能体系


第二场

《为什么数据分析师现在都要求写代码?》

<1月23日 周三 20:00>


直播大纲

(1)效率问题:如何工程化你的数据工作流?

(2)Python开源工具体系介绍

(3)数据分析师的蜕变—— 算法模型构建

(4)案例演示,用数据模拟现实场景问题


Part.2

《一周时间体验Python数据分析》



课程大纲

(1)会写代码的数据分析师是怎么样的存在?

(2)武装你的电脑:Python环境搭建及软件安装

(3)手把手教你用数据挖掘“成为领导的秘诀”

(4)怎样做出专业且高逼格的数据可视化

(5)模拟实验:排队等待时间问题



Part.3

免费资料和代码分享


文中的Gale-Shapley算法完整代码和资料


【6G】数据分析综合学习资料



Part.4

答疑助力+福利获取方式

扫码加入QQ群,即可免费获取以上所有福利

群号:727720564



美好的事物不等人,记得主动出击噢~


主动一点,点击【阅读原文】


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/Z62XESzmuu
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/27878
 
512 次点击