使用机器学习科学地证明自己是一个外貌党

最近在看《机器学习实战》的时候萌生了一个想法,自己去网上爬一些数据按照书上的方法处理一下,不仅可以加深自己对书本的理解,顺便还可以在github拉拉人气。刚好在看决策树这一章,书里面的理论和例子让我觉得这个理论和选择对象简直不能再贴切,看完长相看学历,看完学历看收入。如果可以从婚恋网站上爬取女性的数据信息,手动给她们打标签,并根据这些数据构建决策树,不就可以找出自己的择偶模式了吗!github项目:huatian-funny,下面就详细的阐释一下。

数据爬取

之前在世纪佳缘上爬取过类似的数据,总体的感觉是上面的用户数据要么基本不填要么一看就很假,周围的一些老司机建议可以在花田网上看下,数据质量确实高很多,唯一的缺点就是上面的数据不给爬,搜索用户的API需要登录,而且只显示三十多个用户的信息。刚好我需要的数据也很少,就把搜索条件划分的很细,每次取到的数据很小,但最终汇集的数量还是相当可观的,最终获取了位置在上海年龄22-27共计2000个左右的用户数据。填写好spider.py中的用户名和密码,直接运行这个文件就可以爬取数据,因为数据量不大,很快就可以运行完毕,存储在mongodb中的数据如下:

爬虫用到的工具是requests,流程上也很简单,先发送登陆请求获取cookie,然后调用搜索API获取数据,拿到的数据是json格式,不需要任何转换直接存储mongodb,非常的方便,唯一想吐槽的就是花田搜索API接口竟然用的是POST方式,太没有专业水准了。稍微提一下如何用request获取cookie,用Session构建一个session对象,用这个对象发送登陆请求后,之后的请求都会自动带上登陆返回的cookie,使用起来非常的简单。

1 from requests import Session
2
3 session = Session()
4 session.post(login_url, data=post_data, headers=POST_HEADERS)
5 response = session.get(search_url, headers=GET_HEADERS)

给用户打标签

由于决策树属于监督学习,需要一个给定的标签,因此需要自己根据用户的外貌、年龄、学历等多个维度的判断给出一个标签,最后生成的决策树在一定程度上就可以反映自己的择偶标准。针对女性的标签很简单粗暴,只有满意和不满意两种,有兴趣的同学可以按照真实的情况设置更多的标签,例如优秀、一般、备胎、不合格等等。因为外貌是选择对象过程中一个必不可少的要素,把相貌量化至关重要,因为没有相关的工具根据头像进行评分,只能个人主观进行量化,采用了当下非常流行的十分制。

为了增加打标签的效率,专门写了一个桌面窗口,运行mark.py即可,运行结果如下。(tkinter是一个坑,调代码的时间够我把整个数据集看好几遍了,不过真的用起来的时候还是挺有意思的)

备注:因为刚开始看的很多用户只有头像、年龄、身高、工资、学历这五个信息,所以整个过程中只参考了这五个维度进行评价,下面的决策树也是根据这五个维度进行处理。

训练数据

决策树

机器学习中,决策树是一个预测模型,它代表的是对象属性与对象值之间的一种映射关系。树中每个节点表示某个对象,而每个分叉路径则代表的某个可能的属性值,而每个叶结点则对应从根节点到该叶节点所经历的路径所表示的对象的值。决策树仅有单一输出,若欲有复数输出,可以建立独立的决策树以处理不同输出。从数据产生决策树的机器学习技术叫做决策树学习, 通俗点说就是决策树,说白了,这是一种依托于分类、训练上的预测树,根据已知预测、归类未来。

理论方面我可以参考《机器学习实战》第三章或者这篇博客,很浅显易懂的解释了具体的原理,我就不赘述了。

结果展示

代码参考的是《机器学习实战》,针对现实自己做了一些优化调整,和原来的代码不是完全相同,运行train.py就可以显示出结果,如下:

因为线很挤,调了很久只能拿到这个效果了。到这儿已经很清晰明了的阐明了主题,我就是一个外貌党,颜值高的pass,颜值低的忽略,不高不低的考虑的相当纠结。有兴趣的同学可以自己试一试。

PS1:其实不太想承认自己是一个外貌协会成员,人丑颜控注定孤独一生。

PS2:因为打标签的过程有些随意,所以有一部分不准确。

PS3:没有相亲的打算,不约。

时间: 2024-08-05 23:37:04

使用机器学习科学地证明自己是一个外貌党的相关文章

【链接分享】第一期:科学太疯狂——在另一个星球上打印人类

科学好疯狂 Here's the Plan to Eavesdrop on Aliens' Interplanetary Communications :计划偷听到外星人的星际通信 Our Best Bet for Colonizing Space May Be Printing Humans on Other Planets : 科学家称太空殖民的最好方法是在另一个星球上打印人类,你愿意被打印吗? 趣味设计 倾倒的咖啡灯 Guitar learning gloves让人瞬时变天才 :人人都是钢

科学开源项目 : 建立一个 新的 光衍射 模型

先看看 <光不是电磁波 摩擦力不是电磁力>  https://www.cnblogs.com/KSongKing/p/11360569.html   , <我决定 发展推广 一个 物理学 学派 “逻辑物理学”>  https://www.cnblogs.com/KSongKing/p/11413349.html   , <用 双边干涉 来 计算 小孔衍射>  https://www.cnblogs.com/KSongKing/p/11453689.html    , &

如何证明你是一个有天赋的程序员?

不吹也不黑,我生下来哭的第一声就是"Hello World"!

机器学习中使用「正则化来防止过拟合」到底是一个什么原理?为什么正则化项就可以防止过拟合?

原文:http://www.zhihu.com/question/20700829 27 个回答 46赞同反对,不会显示你的姓名 ALAN Huang,什么都会一点点 欣然.王志.马克 等人赞同 Orangeprince 的回答非常学院派,也非常系统. 过拟合表现在训练数据上的误差非常小,而在测试数据上误差反而增大.其原因一般是模型过于复杂,过分得去拟合数据的噪声和outliers. 正则化则是对模型参数添加先验,使得模型复杂度较小,对于噪声以及outliers的输入扰动相对较小. 以正则化项和

机器学习(5):机器学习的一个实例

大家都知道tensorflow(简称tf)是一个机器学习的框架,使用它就可以完成机器学习.那就用tf来演示一下怎么做机器学习吧,这样你就有一个具体的感受:原来是这样的啊! 本文使用tensorflow做一次机器学习的演示. 但是,tensorflow的理解跟使用,是可以作为一个独立的专题来讲解的,这个我再补充. 机器学习有两个关键点,一个是样本,一个是模型.样本的作用,包括用于训练(带标签)跟测试(带或不带标签),大量特征良好而标签准确的训练样本,是关键.模型,简单理解,就是一个函数,一个接受不

一个数独引发的惨案:零知识证明(Zero-Knowledge Proof)

导言:原文的作者是著名的Ghost和Spectre 这两个协议的创始团队的领队Aviv Zohar.原文作者说他的这篇原文又是引用了以下这两篇学术论文: How to Explain Zero Knowledge Protocols to Your Children (Quisquater et. al.) Cryptographic and Physical Zero-Knowledge Proof Systems for Solutions of Sudoku Puzzles (Gradwo

[转载]从机器学习谈起

在本篇文章中,我将对机器学习做个概要的介绍.本文的目的是能让即便完全不了解机器学习的人也能了解机器学习,并且上手相关的实践.这篇文档也算是EasyPR开发的番外篇,从这里开始,必须对机器学习了解才能进一步介绍EasyPR的内核.当然,本文也面对一般读者,不会对阅读有相关的前提要求. 在进入正题前,我想读者心中可能会有一个疑惑:机器学习有什么重要性,以至于要阅读完这篇非常长的文章呢? 我并不直接回答这个问题前.相反,我想请大家看两张图,下图是图一:  图1 机器学习界的执牛耳者与互联网界的大鳄的联

转载计算机的潜意识的文章:机器学习的入门级经典读物

在本篇文章中,我将对机器学习做个概要的介绍.本文的目的是能让即便完全不了解机器学习的人也能了解机器学习,并且上手相关的实践.这篇文档也算是EasyPR开发的番外篇,从这里开始,必须对机器学习了解才能进一步介绍EasyPR的内核.当然,本文也面对一般读者,不会对阅读有相关的前提要求. 在进入正题前,我想读者心中可能会有一个疑惑:机器学习有什么重要性,以至于要阅读完这篇非常长的文章呢? 我并不直接回答这个问题前.相反,我想请大家看两张图,下图是图一:  图1 机器学习界的执牛耳者与互联网界的大鳄的联

推荐文章:机器学习:“一文读懂机器学习,大数据/自然语言处理/算法全有了

PS:文章主要转载自CSDN大神"黑夜路人"的文章:          http://blog.csdn.NET/heiyeshuwu/article/details/43483655      本文主要对机器学习进行科普,包括机器学习的定义.范围.方法,包括机器学习的研究领域:模式识别.计算机视觉.语音识别.自然语言处理.统计学习和数据挖掘.这是一篇非常好的文章,尤其感学原文作者~          http://www.thebigdata.cn/JieJueFangAn/1308