灵魂质问:人家还是个学生,哪有什么项目经验可以写在简历上呢?

灵魂质问:人家还是个学生,哪有什么项目经验可以写在简历上呢?

总是有同学发自灵魂地怀疑自己:“人家还是个学生,哪有什么项目经验可以写在简历上呢?“ 然后我就想反问,你为什么不自己做个小项目呢?

今天这篇文章,就来教大家,如何从零开始,做一个自己喜欢的数据科学项目

本篇文章通过研究柏林租房价格这一项目实例,为大家提供了全面详细的数据科学项目步骤。由于知识点过于密集,本文章分为上下两篇,上篇主要讲解数据的获取和观察,下篇主要讲解机器学习

上篇知识点

• 找一个主题

• 数据提取和数据清洗

• 从数据中提取信息

• 使用 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,让这些缺失的数据不被获取。我以为,这种情况下,我会获得完美的数据,但事实是,我花了两周来清洗数据,因为这些数据中存在重复。

开始获取数据之后,一定要尽早检查一下数据,避免可能的问题。比如,你可能漏掉了一些重要的领域。比如当你用逗号作为分隔符存进文件里是,如果另一个领域也有逗号,你可能最终得到一份完全没有分类的文件。

我这个项目数据重复的原因可能有:

  1.  同样的公寓在不同时间发布了多次
  2. 中介机构弄错了房价,因此修改了该条招租广告,并将它作为一个新广告发布
  3. 同一个公寓的价格在一个月后上涨或下降 

第一类重复可以通过发布者的 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

点击阅读原文,带你开启你的数据科学生涯!👇阅读原文