灵魂质问:人家还是个学生,哪有什么项目经验可以写在简历上呢?
总是有同学发自灵魂地怀疑自己:“人家还是个学生,哪有什么项目经验可以写在简历上呢?“ 然后我就想反问,你为什么不自己做个小项目呢?
今天这篇文章,就来教大家,如何从零开始,做一个自己喜欢的数据科学项目。
本篇文章通过研究柏林租房价格这一项目实例,为大家提供了全面详细的数据科学项目步骤。由于知识点过于密集,本文章分为上下两篇,上篇主要讲解数据的获取和观察,下篇主要讲解机器学习。
上篇知识点
• 找一个主题
• 数据提取和数据清洗
• 从数据中提取信息
• 使用 External APIs (外界应用程序界) 设计特性
Finding a topic
找主题时,首先要符合自己的偏好和兴趣。自己独立地做一些数据项目,总是需要一些趣味才能坚持,因此,找一个自己关心或感兴趣的主题非常重要。
同时,也要留心观察周围的人在谈论或在困扰什么。这也可以成为一个好的数据科学项目的灵感来源。如果你能用数据分析身边的问题,也许能够影响人们对这个问题的认知,甚至解决这个问题。毕竟,我们是专业的。
那么,让我们来看看这个柏林租房价格的案例。这个研究主题来源于一句经常听到的抱怨:“如果我早知道柏林的房价这么高,我就在找工作时协商一个更高的月薪了。” 很多刚来柏林工作的人都会这样抱怨,同时他们也会抱怨网上找不到公寓租金的不同价格范围。
谷歌上确实缺乏相应的数据。因此,为了收集数据,我想要建立一个 dashboard,可以通过选择公寓的大小,地理位置,具体构造等,来给出一个租房价格区间。通过运用机器学习,找出影响租房价格的主要因素。
Extracting data from the web and cleaning it
Part 1 Getting the data
确定好主题,接下来就是获取数据了。Kaggle, UCI ML Repository,还有 data search engines 都是很好的数据来源。或者,我们也可以进行网页数据抽取。
需要注意的是,不要使用太老的数据。当我搜索柏林房价的数据时,有很多很早的图表,有的甚至都没有标明具体的年份。同时,有的数据又有非常多的限制,比如有的数据只是一个特定的,没有家具的两室公寓的价格。这两种数据都不可取。最终,我还是选择了网页抽取数据。
网页抽取数据需要注意以下三点:
- 在获取数据之前,找找是否有一个可供使用的公共 API
- 不要一秒内发送成百上千个请求给网站
- 边抽取数据,边保存
Part 2 Data cleaning
开始获取数据之后,一定要尽早检查一下数据,避免可能的问题。
当网页抽取房价数据时,我设置了一些要求,比如有的特性数据的缺失。这样,网站管理员会改变网站的 html,让这些缺失的数据不被获取。我以为,这种情况下,我会获得完美的数据,但事实是,我花了两周来清洗数据,因为这些数据中存在重复。
开始获取数据之后,一定要尽早检查一下数据,避免可能的问题。比如,你可能漏掉了一些重要的领域。比如当你用逗号作为分隔符存进文件里是,如果另一个领域也有逗号,你可能最终得到一份完全没有分类的文件。
我这个项目数据重复的原因可能有:
- 同样的公寓在不同时间发布了多次
- 中介机构弄错了房价,因此修改了该条招租广告,并将它作为一个新广告发布
- 同一个公寓的价格在一个月后上涨或下降
第一类重复可以通过发布者的 ID 识别出来,但第二类重复比较复杂,因为中介可以简单修改一下 description 或错误的房价,就把它当一个新广告发布出来。因此,我只保留了最新的数据。数据清洗,太累了。
Gaining deeper insights
有了数据,我们就可以开始分析了。数据科学家都喜欢通过 seaborn 和 ggplot2 这种静态图提取信息。但是,交互式仪表板(interactive dashboard)更能帮助我们和别的相关人员获取信息。我们可以使用 Tableau 和 Microstrategy 这些简单好用的工具。
只要你选出了影响房价的重要的组成部分,30分钟不到就能轻松做出一个交互式仪表板。一个简单的仪表板可以让刚来柏林的人有一个基本的租房价格意识,同时也可以成为租房网站的一个卖点。让图,动起来。
Engineering of features using external APIs
数据可视化,能帮助你识别,机器学习可以用上的重要的因素 (attributes) 或特征 (features)。如果你找到的尽是些不靠谱特性,做出来的预测也会非常不准。如果特性可靠,即使简单的算法也能做出准确的预测。
租房价格是一个持续变化的变量,因此很明显我们要建立一个回归模型。根据收集到的信息,我选择了以下特性来预测租房价格:
我们可以看到其中有一个特性非常让人头疼,那就是地址。在 6.6k 个公寓中,有 4.4k 个地址的输入有着不同的间隔。有200个邮政编码可能被误认成虚变量 (dummy variables),从而遗失。
当你拿到一个新地址你会做什么?你会 google 它在哪和怎么去。根据以下四个特性,通过一个外部应用程序界面,我们可以计算公寓的地址:
- 该地址到中央车站的地铁乘车时间
- 到达城市中心的轿车行车距离
- 到最近地铁站的步行时间
- 公寓一千米半径以内的地铁站数量
这四个特征会让我的数据分析效率大大提高。知道还有什么可以让你数据分析效率大大提高吗?
朋友们,下篇见,一起机器学习。
原文作者:Jekaterina Kokatjuhha
翻译作者:喝豆奶的Narcia
美工编辑:喝豆奶的Narcia
校对审稿:卡里
原文链接:https://medium.freecodecamp.org/how-to-build-a-data-science-project-from-scratch-dc4f096a62a
点击阅读原文,带你开启你的数据科学生涯!👇阅读原文