前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何从头开始构建数据科学项目

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

作者头像
陆勤_数据人网
发布2019-01-09 11:03:36
8100
发布2019-01-09 11:03:36
举报
文章被收录于专栏:数据科学与人工智能

笔者邀请您,先思考:

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(市中心)的距离
  • 到最近的地铁站步行的时间
  • 距离公寓一公里的地铁站数量

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

作者: Jekaterina Kokatjuhha 原文链接: https://www.kdnuggets.com/2018/12/build-data-science-project-from-scratch.html

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-01-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据科学与人工智能 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 找一个话题
  • 从web中提取数据并进行清理
    • 获得数据
      • 数据清洗
        • 幻想与现实
          • 获得更深入的见解
          • 使用外部API做特征工程
          相关产品与服务
          数据保险箱
          数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档