首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何从头开始构建数据科学项目

笔者邀请您,先思考:

1 如何做好数据科学项目?有哪些注意点?

使用柏林租赁价格分析的实例,包括如何从网络中抽取数据并进行清洗,获得更深入的见解,以及使用外部API设计特征等等。

有许多关于数据科学和机器学习的在线课程将指导您完成理论,并为您提供一些代码示例和对非常干净数据的分析。

然而,为了开始实践数据科学,最好是挑战现实生活中的问题。深入研究数据以便发现更深层次的见解。利用附加的数据源进行特征工程,构建独立的机器学习管道。

本文将指导您从头开始构建数据科学项目的主要步骤。 它基于现实生活中的问题 -柏林租赁价格的主要驱动因素是什么?它将提供对这种情况的分析。 它还将强调初学者在机器学习方面常犯的错误。

以下是将要详细讨论的步骤:

找到一个主题

从网络中提取数据并清理它

获得更深入的见解

使用外部API做特征工程

找一个话题

有很多问题可以通过分析数据来解决,但最好是找到一个你感兴趣的问题,这将激励你。在搜索主题时,你一定要专注于你的喜好和兴趣。

例如,如果您对医疗健康感兴趣,您可以从多个角度对该主题提供的数据提出质疑。“探索ChestXray14数据集:问题”是一个如何质疑医疗数据质量的例子。另一个例子-如果你对音乐感兴趣,你可以试着从它的音频预测歌曲的类型

然而,我建议你不仅要专注于你的兴趣,还要倾听你周围的人在谈论什么。他们的困扰是什么?他们的抱怨是什么?他们在抱怨什么?这可能是数据科学项目的另一个好的想法来源。在那些人们仍在抱怨的情况下,这可能意味着问题在第一时间没有得到妥善解决。因此,如果您用数据挑战它,您可以提供更好的解决方案,并对如何理解这个主题产生影响。

这听起来可能有点太抽象了,所以让我们来看看我是如何想出这个分析柏林房租价格的主意的。

“如果我早知道这里的租金这么高,我就会为更高的薪水而谈判了。”

这只是我从最近搬到柏林工作的人那里听到的事情之一。大多数新来的人都抱怨说,他们没想到柏林的房价会这么贵,也没有关于这套公寓可能价格区间的统计数据。如果他们事先知道这一点,他们就可以在求职过程中要求更高的薪水,或者可以考虑其他选择。

我在谷歌上搜索了几家出租公寓的网站,问了几个人,但找不到任何可信的统计数据或当前市场价格的数据可视化。这就是我提出这个分析的想法的原因。

我想收集数据,建立一个互动仪表盘,你可以选择不同的选项,比如在柏林Mitte的一套40平方米的公寓,有阳台和配备齐全的厨房,它会显示价格范围。仅此一点,就能帮助人们了解柏林的房价。另外,通过机器学习,我可以识别租金的驱动因素,并运用不同的机器学习算法进行训练。

从web中提取数据并进行清理获得数据

现在您已经对您的数据科学项目有了一个想法,您可以开始寻找数据了。有大量令人惊叹的数据存储库,如KaggleUCI ML存储库数据集搜索引擎,以及包含有数据集的学术论文的网站。或者,您可以使用web抓取

但要小心——旧数据无处不在。当我在柏林搜索租房价格的信息时,我发现了很多可视化的东西,但是它们都是旧的,或者没有具体的年份。

对于一些统计数据,他们甚至有一条告示说,这个价格只适用于一套50平方米的两室公寓,没有家具。但如果我想找一间带家具的小公寓呢?

由于我只能找到旧数据,我决定在网上抓取提供出租公寓的网站。Web抓取是一种通过自动化过程从网站中提取数据的技术。

我的web抓取博客文章详细介绍了web抓取的陷阱和设计模式。

以下是主要发现:

在抓取之前,检查是否有可用的公共API

请善良!不要以每秒发送数百个请求的方式使网站超载

保存提取发生的日期。我们将解释为什么这很重要

数据清洗

一旦您开始获取数据,尽早查看它以发现任何可能的问题是非常重要的。

在web抓取租赁数据时,我包含了一些小检查,比如所有特征缺失值的数量。网站管理员可以改变网站的HTML,这将导致我的程序不再获得数据。

一旦我确保web抓取的所有技术方面都得到覆盖,我认为数据几乎是理想的。然而,我花了大约一周的时间来清洗数据。

一旦您开始获取数据,尽早查看它以发现任何可能的问题是非常重要的。例如,如果您web抓取,您可能会错过一些重要的字段。如果您在将数据保存到文件中时使用逗号分隔符,并且其中一个字段还包含逗号,那么您的文件可能无法很好地分隔。

幻想与现实

有几个重复的来源:

复制的公寓,因为他们已经在线一段时间了

中介机构有输入错误,例如租金或公寓的楼层。他们会在一段时间后纠正这些错误,或者发布一个全新的广告,其中包含正确的值和额外的描述修改

同一套公寓住了一个月后,价格有了变化

虽然第一种情况下的重复很容易通过ID识别,但是第二种情况下的重复非常复杂。原因是中介可以稍微更改描述,修改错误的价格,并将其作为新广告发布,以便ID也是新的。

我必须提出许多基于逻辑的规则来过滤旧版本的广告。 一旦我能够确定这些公寓将是实际的重复,但稍微做了修改,我可以按提取日期对它们进行排序,将最近的公寓作为最新的。

此外,一些中介会在一个月后增加或减少同一套房的价格。 有人告诉我,如果没有人想要这套公寓,价格会下降。 相反,有人告诉我,如果有很多人想要这套公寓,那么中介就会提高价格。 这些听起来很好解释。

获得更深入的见解

现在我们已经准备好了一切,可以开始分析数据了。我知道数据科学家喜欢seaborn和ggplot2,以及许多静态可视化,他们可以从中获得一些见解。

然而,交互式仪表板可以帮助您和其他受众找到有用的见解。有很多简单易用的工具,如TableauMicrostrategy

我花了不到30分钟的时间创建了一个交互式仪表板,在这里可以选择所有重要的组件,并查看价格将如何变化。

柏林出租价格交互仪表盘:可以选择所有可能的配置,查看相应的价格分布。(数据日期:Winder 2017/18)

一个相当简单的仪表盘已经可以为新来者提供柏林房价的洞察,也可以成为出租公寓网站的良好用户驱动程序。

从这个数据可视化中你可以看到2.5个房间的价格分布属于2个房间公寓的分布。 这样做的原因是2.5间客房的大部分公寓都不在市中心,这当然会降低价格。

柏林公寓的价格分布和数量。

这些数据是在2017/18年冬天收集的,也会过时。然而,我的观点是,出租网站可以经常更新他们的统计数据和可视化,以为这个问题提供更多的透明度。

使用外部API做特征工程

可视化可帮助您识别这些机器学习算法可能使用的重要属性或“特征”。 如果您使用的特征非常缺乏信息,则任何算法都会产生错误的预测。 凭借非常强大的特征,即使是非常简单的算法也能产生相当不错的结果。

在租赁价格项目中,价格是一个连续变量,因此这是一个典型的回归问题。 获取所有提取的信息后,我收集了以下特征,以便能够预测租赁价格。

然而,有一个特征是有问题的,那就是地址。这里有6.6万套公寓和大约4.4万套不同粒度的独特地址。大约有200个独特的邮政编码可以被转换成虚拟变量,但是这样就会丢失某个特定位置的非常宝贵的信息。

地址的不同粒度:街道与门牌号码,街道与隐藏的门牌号码,只有一个邮政编码。

当您获得新地址时,您会怎么做?

你要么google它在哪里或如何到达那里。

通过使用外部API可以获得4个附加特征,公寓的地址可以计算:

火车前往S-Bahn Friedrichstrasse(中央火车站)的持续时间

汽车到U-Bahn Stadtmitte(市中心)的距离

到最近的地铁站步行的时间

距离公寓一公里的地铁站数量

这四项特征可以显著提升了性能。

内容推荐

数据人网:数据人学习,交流和分享的平台,诚邀您创造和分享数据知识,共建和共享数据智库。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190105G07JGL00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券