原文:
www.kdnuggets.com/2020/10/guide-authentic-data-science-portfolio-project.html
评论
由Felix Vemmer,N26 的运营智能数据分析师。
1. 谷歌网络安全证书 - 快速进入网络安全职业道路。
2. 谷歌数据分析专业证书 - 提升你的数据分析技能
3. 谷歌 IT 支持专业证书 - 支持你的组织的 IT
作为一名激励人心的数据科学家,构建有趣的作品集项目是展示你技能的关键。当我通过在线课程学习编码和数据科学时,我不喜欢数据集都是虚假的数据或已经解决过的,比如Kaggle 上的波士顿房价数据集或Titanic 数据集。
在这篇博客文章中,我想向你展示我如何开发有趣的数据科学项目想法并一步一步实施,比如探索德国最大的常旅客论坛 Vielfliegertreff。如果你时间有限,可以直接跳到结论 TLDR。
作为第一步,我考虑一个潜在的项目,满足以下三个要求,使其成为最有趣和最愉快的:
-
解决我自己的问题或紧迫问题。
-
与某些最近的事件相关或特别有趣。
-
之前没有被解决或覆盖过。
由于这些想法仍然相当抽象,让我给你一个关于我的三个项目如何满足要求的概述:
我自己数据科学作品集项目的概述,符合上述三个要求。
作为初学者,不要追求完美,而是选择你真正感兴趣的东西,并写下你想要探讨的所有问题。
鉴于你遵循了我的第三个要求,将不会有公开的数据集,你需要自己抓取数据。在抓取了几个网站之后,我有3 个主要框架用于不同的场景:
我用于抓取的三个主要框架概述。
对于 Vielfliegertreff,我使用了scrapy作为框架,原因如下:
-
没有启用 JavaScript的元素隐藏数据。
-
该网站结构复杂,需要从每个论坛主题开始,遍历所有线程,从所有线程到所有帖子网页。使用scrapy 你可以轻松实现复杂的逻辑,以有组织的方式生成请求,导致新的回调函数。
-
帖子数量相当多,因此抓取整个论坛肯定需要一些时间。Scrapy 允许你以惊人的速度异步抓取网站。
为了让你了解 scrapy 的强大,我快速对我的 MacBook Pro(13 英寸,2018 年,四个 Thunderbolt 3 端口)进行了基准测试,配备 2.3 GHz 四核 Intel Core i5,能够每分钟抓取约 3000 个页面:
Scrapy 抓取基准测试。(图片来源:作者)
为了友好且避免被封锁,重要的是要温和地抓取,例如启用 scrapy 的自动调节功能。此外,我还通过项目管道将所有数据保存到 SQL lite 数据库中,以避免重复,并开启了每个 URL 请求的日志记录,以确保在停止和重新启动抓取过程时不会给服务器带来额外负担。
了解如何进行抓取可以让你自由地自行收集数据集,并教会你关于互联网如何运作、请求是什么以及 HTML/XPath 的结构等重要概念。
对于我的项目,我最终得到 1.47 GB 的数据,接近 100 万条论坛帖子。
使用自己抓取的混乱数据集,投资组合项目中最具挑战性的部分出现了,这也是数据科学家平均花费 60%时间的部分:
图片来自CrowdFlower 2016。
与干净的 Kaggle 数据集不同,你自己的数据集可以帮助你在数据清理方面建立技能,并向未来的雇主展示你已经准备好处理混乱的现实数据集。此外,你还可以通过利用解决一些常见数据清理任务的 Python 库来探索和利用 Python 生态系统。
对于 Vielfliegertreff 的数据集,有一些常见的任务,比如将日期转换为 pandas 时间戳,将数字从字符串转换为实际的数值数据类型,以及将非常混乱的 HTML 帖子文本清理成可读且适用于 NLP 任务的内容。虽然有些任务更复杂,我想分享我最喜欢的三个库,它们解决了我一些常见的数据清理问题:
-
dateparser:轻松解析几乎任何网页上常见字符串格式的本地化日期。
-
clean-text:使用 clean-text 预处理抓取的数据,创建标准化的文本表示。这个工具也很棒,可以移除个人身份信息,如电子邮件或电话号码等。
-
fuzzywuzzy:像老板一样进行模糊字符串匹配。
在 Udacity 完成数据科学纳米学位时,我遇到了跨行业数据挖掘标准过程(CRISP-DM),我认为这是一个相当有趣的框架,可以系统地组织你的工作。
通过我们目前的流程,我们隐式地遵循了 CRISP-DM 框架:
表达业务理解的步骤是通过以下问题来实现:
-
COVID-19 对像 Vielfliegertreff 这样的在线常旅客论坛有什么影响?
-
论坛中一些最佳的帖子是什么?
-
作为新成员,我应该关注哪些专家?
-
关于航空公司或机场,人们说过的一些最糟糕或最好的话是什么?
使用抓取的数据,我们现在能够将最初的业务问题转化为具体的数据解释性问题:
-
每月发布了多少帖子?在 2020 年初 COVID-19 之后,帖子是否减少?是否有迹象表明因无法旅行而导致加入平台的人数减少?
-
按点赞数量排序的前 10 个帖子有哪些?
-
谁是发帖最多且平均获得最多点赞的用户?这些用户是我应该定期关注的,以便看到最好的内容。
-
对每个帖子进行情感分析,结合命名实体识别以识别城市/机场/航空公司,是否会产生有趣的正面或负面评论?
对于 Vielfliegertreff 项目,可以明确说出帖子数量在逐年减少。随着 COVID-19 的爆发,我们可以清晰地看到,从 2020 年 1 月开始,当欧洲封锁和关闭边境时,帖子数量迅速下降,这也严重影响了旅行:
按月份创建的帖子。(作者图表)
此外,用户注册数量在多年间有所下降,论坛似乎自 2009 年 1 月启动以来的快速增长逐渐减少:
用户注册数量按月份统计。(作者图表)
最后但同样重要的是,我想查看一下最受欢迎的帖子内容。遗憾的是,它是用德语写的,但确实是一篇非常有趣的帖子,一位德国人被允许在美国航母上待了一段时间,并体验了 C2 飞机的弹射起飞。帖子包含一些非常漂亮的照片和有趣的细节。如果你能理解一些德语,可以点击这里查看:
来自 Vielfliegertreff 上最受欢迎帖子的示例图片(图片由 fleckenmann 提供)。
完成这些步骤后,你可以进一步创建一个模型,用于分类或预测某些数据点。对于这个项目,我没有尝试以特定方式使用机器学习,尽管我对将帖子情感与特定航空公司关联进行分类有一些有趣的想法。
在另一个项目中,我建模了一个价格预测算法,使用户能够获得任何类型拖拉机的价格估算。该模型随后通过强大的 streamlit 框架 部署,您可以在 这里 找到它(请耐心等待加载,可能会稍慢)。
另一种分享你工作的方式是像我一样通过 Medium、Hackernoon、KDNuggets 或其他流行网站的博客帖子。当写关于作品集项目或其他主题的博客帖子时,例如 精彩的互动 AI 应用,我总是尽力让它们有趣、直观和互动。以下是我的一些顶级建议:
-
包括漂亮的图片,以便于理解和打破长文本。
-
包括互动元素,比如让用户互动的推文或视频。
-
通过 airtable 或 plotly 等工具和框架,将枯燥的表格或图表改为互动式的。
想出一个博客帖子点子,回答你曾经有过的迫切问题或解决你自己的问题。理想情况下,主题的时效性相关,并且之前没有人分析过。根据你的经验、网站结构和复杂性,选择最适合抓取工作的框架。在数据清洗过程中,利用现有的库来解决像解析时间戳或清理文本等棘手的数据清洗任务。最后,选择最佳的方式分享你的工作。无论是一个互动部署的模型/仪表板还是一个写得很好的 Medium 博客帖子,都可以让你在成为数据科学家的道路上与其他申请者区分开来。
原文。经许可转载。
个人简介: Felix Vemmer 是 N26 的数据分析师,专注于通过网络爬虫和机器学习创建有趣的数据集和项目。
相关: