TowardsDataScience 博客中文翻译 2020(五十四)

原文:TowardsDataScience Blog

协议:CC BY-NC-SA 4.0

数据工程师对数据民主化的看法

原文:https://towardsdatascience.com/a-data-engineers-perspective-on-data-democratization-a8aed10f4253?source=collection_archive---------19-----------------------

数据工程在数据民主化中的作用

如何塑造数据工程工作,以促进数据访问和扩展数据驱动型公司

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

照片由小森正明Unsplash 上拍摄

数据民主化是使数据在组织中可访问的过程:消除数据和任何希望在公司中构建产品、分析或决策的人之间的障碍和瓶颈

为什么数据民主化是一个新话题?

在过去(云计算出现之前,Hadoop 出现之前),计算资源非常昂贵。数据工程师需要遵循严格的规则和建模技术,以经济可行的方式生成报告(和其他输出)。

在前云时代,公司有一个或几个集中的数据团队——充当仁慈的数据看门人。对数据、分析或数据驱动产品的任何请求都需要仔细规划、界定范围并交给这些团队。

虽然这种方法是必要的,但如此高水平的控制也带来了一些问题:

  • 数据团队成为瓶颈
  • 组织只能访问高度处理的 数据输出(报告、模型化的表格),领域专家不能探索数据集来寻找机会。
  • 数据的消费者对数据过程几乎没有可见性和理解,这种缺乏透明度导致对数据缺乏信心。
  • 领域专家不能参与数据的建模和转换,因此需求需要彻底定义

您的数据民主化程度如何?

对数据的访问通常是不平等的,这取决于一个人的技术能力和他所在的团队。为了评估给定业务中数据的民主化程度,我想提供以下场景作为起点:

担任 【数据工程师|数据科学家|数据分析师|软件工程师|产品经理|主管等…【移动团队|数据团队|营销团队】等…], 我能有多轻松…

  • ****发现可用的数据集和见解。
  • 浏览 元数据关于数据集的信息(列内容、表的更新速率、表的更新策略、表的健康状况,例如 QC 分数度量、表是如何产生的)。
  • ****探索原始或相当未加工的数据。
  • 从现有数据生成新的数据集。
  • ****创造和分享见解、发现和实验。
  • ****摄取新的数据源。

虽然本评估中强调的一些问题有不同的解决方案,这取决于组织的类型:其规模、资源/预算、数据用户的技术能力,但有一些模式和工具有助于大多数情况

在您的组织中民主化数据的方法

本节的目的是讨论一些非互斥的方法来使组织中的数据民主化。其中一些可能对您的组织有用,一些可能不够,但希望它能帮助您制定自己的解决方案!

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Silas k hler 在 Unsplash 上拍摄的照片

团队结构

分散数据团队

在每个团队中嵌入数据工程师可以让团队自给自足。探索数据和创建数据管道的技术障碍可能仍然存在,但每个团队现在都拥有独立所需的技能**。**

这些数据工程师也变得熟悉团队的任务,并获得领域专业知识,这使他们能够更好地理解需求。

数据平台团队

专注于数据基础设施和工具的团队可以帮助减少执行常见任务所需的技术技能。这个工具可以是现成的、开源的或者由团队开发的。

“数据平台化”项目示例:

  • 允许任何人将任意文件放入数据湖并定义模式的 Web 服务。
  • 托管 Airflow 并将其作为服务提供给其他团队。
  • 通过为 EMR 提供模板,抽象出为 Spark 定义集群资源的复杂性(例如,我想要一个“小型”集群,而不是:我想要一个按需配备 1 个 r5 . 2x 大型主节点、5 个 r5 . 4x 大型 Spot 机群的集群……)。

元数据中心

“元数据中心”通常采用内部搜索引擎的形式,对数据集进行分类,并公开潜在数据消费者使用表格所需的信息。至少,它应该回答以下问题:

  • ****表内容是什么(包括列级信息)。
  • ****桌主是谁(团队)。
  • 该表的健康程度(对该表进行评论,或 QC 评分)。
  • ****数据谱系是什么(例如,链接到气流 DAG,或图谱)。
  • 表中的更新策略是什么(如每日快照、每周增量更新)。

元数据中心的实现

许多公司已经实施了元数据中心解决方案:

AirBnb 的数据门户优步的数据手册网飞的 MetacatLyft 的阿蒙森,以及最近谷歌的数据目录。[以及 LinkedIn 的数据中心

(来源)

Amundsen、 DataHubMetacat 是开源的,可以在 GitHub 上获得,利用这些开源工具可以使资源有限的数据工程团队更容易支持元数据中心。

下面的文章更深入地介绍了每个项目的架构:

** [## LinkedIn、优步、Lyft、Airbnb 和网飞如何为机器解决数据管理和发现问题…

当谈到机器学习时,数据无疑是新的石油。管理数据集生命周期的流程是…

towardsdatascience.com](/how-linkedin-uber-lyft-airbnb-and-netflix-are-solving-data-management-and-discovery-for-machine-9b79ee9184bb)

数据质量检查(QC)

当表的创建是分布式的时,确保高数据质量是一个挑战。QC 过程也需要分布,创建表的人应该能够对他们自己的表进行 QC!

Earnest 时,我们有 2 个内部 QC 工具+ 1 个机器学习使能的异常检测工具,它们分发电子邮件和关于桌子健康的信息。然而,我们发现很难将扩展到分析师要求的更多 QC 检查,因为它们需要工程时间。

我们已经开始探索 Great Expectations (GE),我们希望通过让分析师参与到 QC 工作中来扩大规模。

点击此处了解更多关于远大前程的信息:

[## 打倒管道债务/引入更高的期望

TL;DR:管道债务是一种寄生于后端数据系统的技术债务。它会降低生产率,并且…

medium.com](https://medium.com/@expectgreatdata/down-with-pipeline-debt-introducing-great-expectations-862ddc46782a)

数据工程角色

从理论上讲,如果公司里的任何潜在数据消费者都获得了编写 ETL 所需的工具,这将是数据民主化的最大推动者之一。所以,自然,这是我非常感兴趣的事情(你也应该!).

*“工程师不应该写 ETL。*出于对职业中一切神圣不可侵犯的事物的热爱,这不应该是一个专注或专门的角色。没有什么比编写、维护、修改和支持 ETL 来产生您自己从未使用或消费过的数据更令人神魂颠倒的了。”

(来源)

[## 工程师不应该写 ETL:建立高功能数据科学部门指南

“你的团队和数据科学家之间的关系是什么样的?”毫无疑问,这是我的问题…

multithreaded.stitchfix.com](https://multithreaded.stitchfix.com/blog/2016/03/16/engineers-shouldnt-write-etl/)

数据工程师应该帮助简化编写 ETL 的过程,组织应该培训数据消费者使用数据工程师提供的工具。

一家公司需要在以下两者之间找到一个中间点:

  • 数据工程师创建完全抽象的工具,没有技术知识的数据消费者可以使用,但是需要大量的工程工作来创建。
  • 数据工程师提供的工具需要如此多的技术知识,以至于培训数据消费者使用它们是不可行的

数据构建工具(DBT)是编写转换逻辑工具的一个很好的例子。它将一个结构强加到基于 SQL 的项目中,并使用 Jinja (Python)提供 SQL 的模板。假设数据消费者知道 SQL,培训他们了解 DBT 的细节将允许他们在编写可维护的转换时能够自主

阅读更多关于 DBT 的信息:

[## dbt 到底是什么?

自从 2017 年写这篇文章以来,dbt 已经发生了巨大的变化。最大的变化是发布了一个…

blog.getdbt.com](https://blog.getdbt.com/what–exactly–is-dbt-/)

数据工程师不编写数据管道时的角色

数据工程师提供并支持组成管道的单个组件。例如,在 Earnest 中,我们在 Airflow 上运行大多数容器化的任务,因此作为数据工程师,我们维护多个容器化的 CLI 工具来执行任务,如将 Hive 模式转换为红移模式、在 Livy 上运行 Spark 作业、运行我们的自定义 QC 任务等…

数据工程师还提供工具(例如元数据中心、气流、远大前程、雪花),他们支持、扩展和创建抽象,以提高数据消费者的生产力

一旦数据工程师从制作单个管道中解脱出来,他们就可以研究有益于整个管道的工具。LinkedIn 的 Dr-Elephant,是一个检测 Spark 和 Hadoop 作业上常见优化机会的工具,是这种工具的一个很好的例子。

此外,数据工程师需要通过确保他们的工具可以被数据消费者直接使用来保持数据的可访问性,要求最少或没有工程的干预。

“数据工程师可以专注于管道等幂、数据湖中新资源的集成、数据血统和工具。”

(来源)

[## 数据工程师、数据分析师和数据科学家之间的协作

如何在生产中高效发布?

medium.com](https://medium.com/dailymotion/collaboration-between-data-engineers-data-analysts-and-data-scientists-97c00ab1211f)

最后

数据民主化是关于增加对数据的访问,确保拥有不同技能的不同团队同样有能力提供见解和数据产品。

成功的数据民主化的关键很可能是确保您的不同过程随着数据需求的增加而扩展

你的目标应该是识别并消除瓶颈

这篇文章中的问题和建议解决方案的摘要:

  • **问题:**团队没有自主创建数据计划所需的技能| **解决方案:**在团队中嵌入数据工程师
  • **问题:**团队缺少执行常见数据任务的工具| **解决方案:**创建数据平台计划
  • **问题:**数据消费者很难找到他们需要的信息,以决定是否可能使用现有的表/数据集| **解决方案:**创建一个中心位置来查找这些信息(“元数据中心”)
  • **问题:**由于表的创建是分布式的,数据质量正在下降| **解决方案:**提供工具,使团队能够拥有他们创建的表的 QC
  • **问题:**创建 ETL 管道很慢,因为数据工程资源需求过大| **解决方案:使管道的创建民主化和分布化

对话式人工智能的数据产品观

原文:https://towardsdatascience.com/a-data-product-view-on-conversational-ai-80284efe5a15?source=collection_archive---------45-----------------------

来源:伊利莎通过吉菲

“喂,你起来了?”

与人类不同,对话式人工智能(AI)目前最常通过聊天机器人部署,它在 100%的时间里都是“运行”的。

Smallbizgenius 很好地总结了聊天机器人的一些惊人统计数据:

  • 聊天机器人可以削减高达 30%的运营成本。
  • 到 2021 年,85%的客户交互将在没有人类代理的情况下处理。
  • 50%的企业计划在聊天机器人上的支出超过在移动应用上的支出。
  • 64%的互联网用户表示,24 小时服务是聊天机器人的最大特点。
  • 37%的人在紧急情况下使用客服机器人获得快速回答。
  • 2018 年,脸书有超过 30 万个聊天机器人。

除了聊天机器人,自动语音应答系统(尽管它们可能仍然很烦人)和虚拟语音助手都利用对话式人工智能来推动人机对话。

对话式人工智能概述

对话式人工智能是一种允许用户向机器提问并获得自动响应的技术。这些机器中最值得注意的是 Alexa、Siri 和 Google Assistant 等虚拟助手。对话人工智能的核心是自然语言处理(NLP)的利用。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者图片

任何对话式人工智能实现都需要三个主要的 NLP 组件:

  1. 使用自然语言理解理解意图(NLU)
  2. 使用机器学习算法预测响应
  3. 通过自然语言生成的类似人类的反应(NLG)

作为人类,我们理解“你起来了吗?”可以有多种含义或意图。在高层次上,自然语言理解基于使用的单词和短语以及使用它的上下文将人类语言映射到意图。一旦确定了意图,就可以使用不同的机器学习技术来预测最佳响应。该响应很可能存储在数字表示中,同样根据上下文,自然语言生成可用于将响应映射回最合适的人类可理解的语言。

对于基于语音的系统,智能设备必须首先利用自动语音识别(ASR)将语音转换为文本,然后利用 NLP 处理意图并生成响应。在响应被预测并且 NLG 被用于生成类似人类的响应之后,语音合成被用于将响应从文本转换成声音。

人工智能,或者更具体地说,深度学习,是这些技术的核心,有助于人机对话和语音到文本的转换。此外,人工智能允许应用程序纠正错误,从经验中学习,并随着时间的推移进行改进,以便在未来不断使用时提供更好的响应。

作为一个快速题外话,随着深度学习应用的兴起,以及其阴暗面“深度假货”,语音克隆已经成为讨论的热点。基于深度学习技术,可以使用原始语音来训练模型,以生成具有相似语音的新音频。有一天,你甚至可以在你的虚拟助手上使用名人的声音。就目前而言,声音克隆技术的应用仍然取决于人类。

使用对话人工智能的数据产品类型

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

照片由 Cookie 在 Unsplash 上的 Pom 拍摄

如今,对话人工智能主要以三种方式出现在数据产品中。

  1. 聊天机器人

聊天机器人是对话式人工智能中最常见的应用。它们是您在网站上找到的基本应用程序,用于常见问题解答和引导您浏览网站的各种功能,并充当服务提供商的客户支持。一般过程是传递关于用户的文本查询的响应。然而,聊天机器人是基本形式,不具备深度学习融合的能力,如在未来的交互中学习和改进。

2。智能虚拟助理

智能虚拟助理被认为是更高级的对话式人工智能。属于这一类别的最受欢迎的设备和应用程序是亚马逊的 Alexa、苹果的 Siri、三星的 Bixby 和谷歌助手。这些虚拟助理针对不同形式的服务,如家庭语音助理,包括 Alexa 等。另一方面,Siri、Bixby 属于可以执行各种操作的移动助手类别,即文本到语音、导航、快速回复、天气响应和快速地址搜索等功能。

3。客服助理

这些是针对特定的面向服务的问题而进一步开发的。主要目的是提供高效的客户支持。客户服务助理越来越受欢迎,并且通常在电信提供商或电子和教育组织中使用,用于处理客户请求的平稳运行。这种虚拟助理在打开网站或浏览某个产品时弹出,以帮助购买或以帮助台的形式出现。

拥有对话人工智能产品的样本公司

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

弗兰基·查马基在 Unsplash 上拍摄的照片

我们非常了解 Alexa、Siri 和 Google Assistant 等热门产品,因为这些公司是该领域的市场领导者。然而,一些创业公司已经成功地实施了这些技术,根据他们的目标市场构建了类似的产品。以下是一些对话式人工智能和/或语音克隆公司的例子:

Kore.ai

Kore.ai 是一家企业虚拟助理平台和解决方案公司,帮助企业自动化并增强与客户、员工和合作伙伴的数字互动。我们提供基于对话式人工智能的无/低代码企业平台,以创建具有对话式和数字用户体验的虚拟助手。Kore.ai 还为银行、保险、人力资源和 IT 支持提供领域培训的预建虚拟助理,并推出了一款名为 Kora 的企业数字助理,作为员工的通用/主/礼宾助理。此外,Kore.ai 还提供名为 SmartAssist.ai 的基于云的呼叫自动化和数字偏转服务。Kore.ai 得到了 Gartner、Forrester、IDC、Everest 等领先分析师的认可,受到了全球财富 2000 强公司和合作伙伴的信任。

Houndify

Houndify 是一个语音人工智能平台,允许任何人给任何有互联网连接的东西添加智能的对话界面。一旦您与 Houndify 集成,您的产品将立即理解各种各样的口头问题和命令。让我们与众不同的是,Houndify 不是技术链中的一环,而是实现任何产品语音功能所需的所有技术的一站式目的地。它包括大规模语音识别,结合强大的自然语言理解。Houndify 集成了许多最受欢迎的内容提供商(包括 Yelp、优步、Accuweather 等),允许语音无缝访问信息。

莉莉 by Vozy

据该公司称,礼来旨在与客户进行更强大、更直观的互动。无论客户寻求自我管理还是个性化对话,礼来都能在整个渠道中提供高效的表现。人工智能、人类理解和语音技术的结合用于帮助与客户建立更有成效的对话,从而与客户建立更牢固的关系。虚拟助理能够为各种交易带来自动化,即从电话调查到复杂任务,从注册到领导资格,Lilly 能够处理各种不同的任务。

MindMeld

MindMeld 对话式人工智能平台是最先进的人工智能平台之一,用于构建生产质量的对话式应用。它是一个基于 Python 的机器学习框架,包含了为此目的所需的所有算法和实用程序。MindMeld 经过数年的发展,构建和部署了数十种可实现的最高级对话体验,并针对构建高级对话助手进行了优化,这些助手展示了对特定用例或领域的深刻理解,同时提供了非常有用和多样化的对话体验。

陆地机器人

Landbot 管理和自动化主要消息渠道上的对话,以帮助您每次更智能地转换。从同一个地方设计、部署和分析您的对话策略,无需一行代码即可传递信息。

使用 Landbot,你可以为 WhatsApp、web 或 Facebook Messenger 设计强大的自动化对话,并将它们与你已经使用的工具集成。一切都是实时发生的,用户的选择决定了整个过程。加入与他们的对话,将他们的信息发送到您的 CRM,或使用他们的数据通过即时消息定制和触发活动。

iSpeech

iSpeech 专注于语音克隆技术,在接近客户寻求产品、应用和服务时,使用更加熟悉和愉快的声音来改善客户关系。这项技术的一些特点如下。

  • 交互式培训和学习。
  • 为导航添加熟悉的声音。
  • 文本到语音应用程序的国际语言内容。
  • 有声读物旁白。
  • 名人声音克隆应用。
  • 提供城市指南。
  • 电影和动画。

回答者

reSpeecher 是另一种声音克隆技术,其简单的想法是克隆人类的语音并交换声音。该技术面向电影制作行业、电视制作人、游戏开发商、广告商、播客和一些类型的内容创作者,这些人的作品更具创造性。从演员配音到交换儿童的声音和表达不同的情感,reSpeecher 通过使用具有深度生成建模技术的经典数字信号处理算法涵盖了所有方面,结果是现场匹配。

构建您自己的聊天机器人

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Kelly SikkemaUnsplash 上拍摄的照片

如前所述,聊天机器人是最常见的对话人工智能产品。想尝试开发自己的聊天机器人吗?Chatbots Life 有一篇很棒的文章,里面有代码示例,告诉你如何按照五个简单的步骤开发你的第一个聊天机器人:

  1. 准备依赖项
  2. 导入类
  3. 创建和训练聊天机器人
  4. 与聊天机器人的通信
  5. 聊天机器人的语料库数据训练

有关代码示例,请参考他们的原始文章:https://chatbotslife . com/how-to-create-an-intelligent-chatbot-in-python-c 655 EB 39d 6 b 1

结论

近年来,虚拟助手和聊天机器人的应用飞速发展。随着快节奏的技术发展,深度学习算法大大提升了这些智能系统的能力。各行各业对这种技术的需求越来越大,而且只会继续增长。然而,尽管这种技术具有各种优势,但仍有许多挑战和问题需要解决。此外,如何利用这些技术,如声音克隆,具有巨大的伦理影响。尽管取得了所有的进展,我仍然期待有一天我不再需要在与人工智能机器交谈时反复要求与人类代理说话。

Richard Sheng 是百威英博(Anheuser-Busch InBev)旗下 Z-Tech 的数据科学和分析全球总监,为全球小型企业带来数据驱动的技术解决方案。Richard 拥有 12 年以上为初创公司和财富 500 强公司开发数据产品的经验。

数据科学对话

原文:https://towardsdatascience.com/a-data-science-conversation-9ca398573d2f?source=collection_archive---------9-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来源)

如何自学数据科学,通过项目获得数据科学工作,以及我在“走向数据科学”播客中采访的其他经验。

谈话很像写作,因为它迫使你把模糊的想法变成可以理解的、具体的概念。通常,我们认为我们知道一个想法,但我们并没有真正理解这个理论,除非我们能用语言清楚地与他人交流。这种通过交流强行理解的方式是促使我开始写数据科学的部分原因,也是促使我最近在走向数据科学播客上发言的原因。

在这一集里,我们(我和来自 CS Dojo 的主持人 YK)谈论我如何自学数据科学,我如何通过我的项目获得两份数据科学工作,如何让学习数据科学变得愉快,一种自上而下的学习方法,以及我在进入数据科学领域的旅程中得到的其他建议。你可以在 Spotify 上免费听完整集(以及 TDS 播客的所有其他集)。在这一集的下面,我捕捉到了一些关键的要点。

  • 不要指望一所正规大学会教你适用于在行业中实践数据科学的材料。在线课程更新迅速,通常是与公司一起开发的,是学习行业所需数据科学技能的更高效、更具成本效益的方式。
  • 数据科学项目、博客帖子或 Github repos 可以让你获得求职面试的机会。技术和沟通技能为你赢得这份工作(并在你的职业生涯中不断取得成功)。
  • 尝试自上而下的学习方法。在深入研究方法如何工作的细节之前,弄清楚一种技术或算法可以解决什么问题。
  • 专注于建立一个投资组合,由真实世界的数据科学项目组成,以展示您的技术技能。强调掌握技能,而不是获得证书,这在数据科学行业中意义不大。
  • 通过从事您个人感兴趣的项目或解决您或您周围的人遇到的问题,让学习数据科学变得有趣。我不断学习数据科学的动机不仅是因为它能为我赢得一份好工作,还因为学习数据科学本身就是一种享受。
  • 阅读,无论是技术性的还是个人学习,都是减少对世界误解的过程的一部分。你带着一些背景知识(先验)进入一本书,学习新的信息(收集数据),更新你的信念以更接近现实(后验)。试着选择那些能教会你一些东西并且你也觉得有趣的书。

我的第一个播客的总体体验是积极的,作为一个从播客中获益匪浅的人,从受访者的角度来看播客是非常有趣的。向所有致力于数据科学(博客和播客)的人致敬,我期待着为构建数据科学社区做出更多贡献。

一如既往,我欢迎反馈和建设性的批评。你可以在回复中联系,或者在 Twitter 上联系。

从数据科学的角度看群体免疫,我们需要付出什么来阻止病毒?

原文:https://towardsdatascience.com/a-data-science-view-of-herd-immunity-what-do-we-have-to-pay-to-stop-the-virus-3a05fc2ce720?source=collection_archive---------17-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

由凯瑟琳·王创作,版权所有

从数据科学家的角度看新冠肺炎疫情,没有废话,没有指责,没有政治化。让数据告诉你真相。群体免疫是对抗新冠肺炎疫情的好策略吗?

编者按: 走向数据科学 是一份以数据科学和机器学习研究为主的中型刊物。我们不是健康专家或流行病学家,本文的观点不应被解释为专业建议。想了解更多关于疫情冠状病毒的信息,可以点击 这里

ovid-19 像野火一样蔓延。这种微生物粒子正在迅速改变世界。在不到四个月的时间里,它已经从武汉(中国)发展到世界上几乎每个国家。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2020 年 3 月 31 日来自约翰·霍普金斯 CSSE 的数据和仪表板

2020 年 3 月 13 日,英国首相鲍里斯·约翰逊向全国发布了最新的冠状病毒简报。当时他提到,英国将利用科学研究,根据现有的证据建立最佳策略模型,这种松散的控制策略后来被英国首席科学顾问帕特里克·瓦兰斯(Patrick Vallance)指控为群体免疫。

英国将保持正常运作,没有任何严格的控制或封锁,但与此同时,鲍里斯提出,每个英国家庭都应该准备好“提前失去亲人”。

在提出群体免疫建议 14 天后,据报道鲍里斯·约翰逊与新冠肺炎的检测呈阳性。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3 月 27 日,鲍里斯·约翰逊被检测出新冠肺炎阳性

在同样的 14 天里,英国已经确认了近 20,000 例感染病例,超过 1,200 例死亡。(数据来自 2020 年 3 月 30 日,英国政府后来实施了更严格的立法来抑制疫情)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2020 年 3 月 30 日来自https://corona.help/的报告,红线表示 2020 年 3 月 13 日之后群体免疫公告后的病例增长。

那么到底什么是群体免疫呢?这是我们对抗病毒的最好方法吗?

让我们通过数据科学的镜头来讨论今天的话题。

一.简单的病毒传播模型。

病毒传播过程本质上极其复杂。有各种流行病学模型来解释或模拟传染病的传播。但是为了一个基本的理解,我们从一个简单的模型开始。

在这个模型中,我们有两个基本的基础概念(基本再生数和世代间隔)

  • 基本 R 生产编号

基本再生数(R0)定义为完全易感人群中单次(典型)感染产生的继发性病例的预期数量。

这将有助于我们理解传染病在人群中传播的速度。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如果 R0 小于 1,例如 0.5。那么一个人会产生 0.5 个新病例,继发的 0.5 个病例会把病毒传给下一个 0.25 个病例。因此,受感染的人口会越来越少。并且没有任何机会成为全球性流行病而消亡。

如果 R0 接近或等于 1,意味着一个人只会把病毒传给另一个人,然后传给下一个人。我们最终会得到一条感染病例的直线。因此我们称之为地方病(局部传播),例如水痘。

最后一种情况是,当 R0 大于 1 时,例如 2,那么增长将是指数的,从 2 到 4,从 4 到 8,最终达到临界点,它不能被包含在局部区域中。我们现在称之为疫情。

一旦病毒爆发成为疫情,通常有两种结局,患者要么死亡(打破循环),要么形成针对病毒的免疫系统。(停止蔓延)

总之,R0 越大,传染性越强。(有些科学家用 Rt 表示符号)

R0 的更现实的计算

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来自斯坦福大学人类科学系

看一看一些众所周知的疾病的 R0。传染性最强的是麻疹,其基本繁殖率为 12-18,其次是白喉,R0 为 6-7。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来自维基百科 —基本复制数

世卫组织最初估计新冠肺炎 R0 为 1.4–2.5(平均值为 1.95),然而最近对 12 项研究的审查估计基本 R0 为 3.28,中值 R0 为 2.79。

  • 生成间隔间隔

什么是世代间隔?这是分隔连续感染的时间段。

简而言之,让我们假设一个新冠肺炎患者可以将疾病传染给另外两个人,那么这种传播需要多长时间?1 天、2 天或一周。这是数学模型中的另一个关键因素,两代人之间的间隔越短,传染性越强。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

由凯瑟琳·王创作,版权所有

“A”感染病毒的时间用圆圈表示。过了一会儿,“A”显示了一些轻微的症状,用正方形表示。

圆圈和正方形之间的间隙是潜伏期。(从接触感染到出现第一批症状之间的时间)新冠肺炎的潜伏期变化很大,从 3 天到 20 天不等。我们来加权平均一下,8 天。

需要指出的是,患者“A”在整个潜伏期都具有传染性,因此可以在 8 天内的任何时间感染患者 B。那么 B 还需要 8 天才能出现症状(也标记为方形)。两个方块之间的时间间隔称为世代间隔。对于新冠肺炎来说,大约是 4 天。

就拿“Ro = 2.5”“世代间隔= 4”来说,如果没有干预,新冠肺炎要多久才能蔓延到整个欧洲?

到 2020 年 1 月 24 日,法国确诊首例新冠肺炎患者。不幸的是,当地政府没有给予足够的重视,从而给了病毒爆发的机会,但控制有限。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

由凯瑟琳·王创作,版权所有

上述等式是基于几何级数求和推导出来的,它计算了冠状病毒在每一代中的累积预测病例数(R0=2.5)。欧洲的总人口是 7 . 41 亿,这是 23 代人的结果。

大多数人会对这个数字感到震惊,心想这怎么这么小。指数增长的魔力。

而当我们每代取 4 天时,最终结果对应的是 92 天。

从 2020 年 1 月 24 日算起,到 2020 年 4 月 25 日,新冠肺炎将在没有任何非药物干预(NPI)的情况下覆盖欧洲大陆的每个角落。

请记住,这是一个极其简单的模型,真实世界的情况要复杂得多,需要将更多变量的大小纳入动态流行病学模型。

这里有几个可以考虑模型,

  • SI 模型—[将人群分为易感人群 S(t)和传染性人群 I(t)。n 是总人口数量。那么我们有 S(t)+ I(t) = N.]
  • SIR 模型—[除了易感性和传染性,该模型假设从感染中恢复的人变得免疫,并且不能被第二次感染。S(t)+ I(t) +R(t)= N]
  • SIS 模型—[假设康复后的人仍然易患该疾病]
  • 贝叶斯分层模型(London‌帝国理工学院在其最新报告中使用,该模型易于解释和推断)
  • 等等。

二。群体免疫

最后,我们来看看群体免疫。

经济学家总结说,世界各国政府正在使用三种主要方法来对抗新冠肺炎。

  • 群体免疫 - >允许大多数被感染人群发展出免疫系统的情况。
  • 缓解 - >通常被称为“拉平曲线”,通过包括大规模检测、接触者追踪、隔离病例、隔离等手段降低疫情的强度。
  • 镇压 - >关闭城市,关闭公共活动,学校,大学以减少传播。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

由 Catherine Wang 创建,数据来源于伦敦帝国理工学院报告,版权所有

如前所述,英国是第一个提出群体免疫方法来控制疾病的国家(如上图所示,英国是最后一个实施封锁的国家)

群体免疫。

这个理论是一个世纪前提出的(和很多数据科学经典模型一样)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

由凯瑟琳·王创作,版权所有

  • 首先,让我们假设我们有一群人,他们正在爆发未知病毒
  • 大多数人将从疾病中康复,并建立起针对病毒的免疫系统。这个比率表示为 P,无免疫率为(1-p)
  • 取 R0 率,病毒只能传染给非免疫组。RO(1 名专业人员)
  • 如果我们设法得到[R0(1-P)]< 1, the disease will go away in a short period of time. To satisfy, we need to have P>1–1/R0(简单计算)。
  • 在这个等式中取新冠肺炎 R0 = 2.5,我们将有一个 **P > 60 %。**这意味着该群体中有 2/3 的人需要被感染并恢复免疫力才能阻止病毒。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来自其他颜色图片

正如你在左边的图像中看到的。

患病病例在开始时呈指数增长,并迅速感染大多数节点。(橙色)

但是一段时间后,越来越多的节点发展出免疫系统(紫色)。

因此,整个群体正在恢复到健康状态。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

由凯瑟琳·王创作。版权所有

比方说,如果英国政府继续实施这种方法,6640 万* 60%≈4000 万人将被感染。此外,新冠肺炎目前的病死率(CFR)为 4%,预计中国和意大利为 8%,假设英国拥有世界上最好的医疗保健系统,可以将病死率降至 1%,仍将有约 4000 万* 1% = 40 万人死亡。

同样,领导新冠肺炎非药物研究 [ 论文*】*研究的伦敦帝国学院教授 Neil Ferguson 说,他最初的估计仍然正确,该估计显示冠状病毒将在英国杀死 500,000 人(有限的 NPI,非药物干预),而一个反映封锁措施影响的新模型读数看到该估计缩小到 20,000 或

这个数字是什么意思?

2018 年,英国总死亡人数刚刚超过 50 万。通过群体免疫策略,新冠肺炎将在几个月内夺走几乎同样数量的人的生命。相比之下,第二次世界大战在英国只花费了超过 45 万人的生命,包括士兵,护士,市民等。这意味着新冠肺炎可能会比二战对英国产生更大的影响。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者凯瑟琳·王,版权所有。

群体免疫方法的支持者认为,如果没有疫苗,这种流行病将在限制取消后的几周内卷土重来。每当这种疾病再次出现时,政府可能需要压制它。这种时断时续的循环必须重复,直到疾病在人群中传播,或者 6 个月后出现疫苗。

批评者辩称,没有科学证据支持新冠肺炎季节性爆发的理论,即使公众能够建立群体免疫力,当病毒变异时也不会有效。

三。群体免疫曾经阻止过流行病吗?

最好的例子是麻疹。

前提:

  • 麻疹的 R0 值为 12-18,极具传染性。
  • 人类是麻疹的唯一宿主。
  • 病死率低,为 0.3%。
  • 没有突变,人类可以对麻疹产生终身免疫。

对于所有这些特征,麻疹似乎是群体免疫的最佳候选者。

那么这种病很快就灭绝了吗?

麻疹的首次出现是在 10 世纪,直到 1980 年我们发现疫苗之前,它每年导致超过 260 万人死亡。

在接种 MMR 疫苗之前,90%(或者一些专家说 99%)的婴儿将会感染麻疹。典型的症状包括皮疹和肺炎,甚至小病例的脑损伤。

即使在我们发现 MMR 之后。麻疹仍然很难预防和控制。

使用前面的等式 P > 1-(1/R0)= 1-(1/15)= 93%。我们需要让 93%的人口建立起一个免疫系统来控制病毒。(世卫组织建议这个数字应该是 95%)。

但是,由于一些关于接种 MMR 疫苗后不良反应的负面评论,实际接种率仅为 86%。

1998 年,英国《柳叶刀》发表了一篇文章,谈到麻疹疫苗可能会导致儿童自闭症[参考文献]

我们已经消灭了天花,世卫组织接下来要消灭的是麻疹、脊髓灰质炎和新冠肺炎。

然而,为了抗击 R0=2.5、CER 为 1%的疫情,人们会愿意为了获得公众群体免疫而被感染吗?

缓解措施花费了太多的生命,抑制措施可能在经济上不可持续,群体免疫?我们能给人们的生活贴上价格标签吗?

由凯瑟琳王创作,版权所有。

当我看到英国首相和首席科学官的演讲时。我既震惊又失望。

长期以来,英国一直是伟大天才和艺术家的诞生地,他们是一些不朽的英雄。他们照亮了整个世界,牛顿、法拉第,是他们把人类带入了第三次工业革命;查尔斯·达尔文,他告诉我们我们的起源;莎士比亚和列侬,他们让我们笑出了眼泪;丘吉尔,他团结全国人民抵抗敌人入侵,捍卫国家主权。

一个最早创造出用于临床试验的疫苗的县,第一个进行流行病学研究的国家,拥有世界顶尖研究人员和最好医学期刊的国家。

有些人用第三次世界大战来比喻新冠肺炎,它将作为比西班牙流感和黑死病更大的事件被人类历史铭记和记录。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来自 quotemaster

我希望有一天,当下一代回顾历史,看到世界团结一致,不分意识形态和宗教,不分贫富,共同抗击病毒。

现在不是安逸舒适的时候,不是互相推诿和指责并把它作为政治武器的时候。

没有人知道我们将在未来几周面临什么,但每个人都知道,新冠肺炎将考验我们的能力,考验我们是否善良、慷慨,是否超越自我和自身利益。我们现在的任务是把最好的我们和我们的所作所为带到一个比我们任何人希望的都更复杂、更困惑的世界。愿我们都带着智慧和优雅前进。

参考

关于我,我是👧🏻现居澳大利亚墨尔本。我学的是计算机科学和应用统计学。我对通用技术充满热情。在咨询公司做 AI 工程师👩🏻‍🔬,帮助一个组织集成人工智能解决方案并利用其创新力量。在LinkedIn上查看更多关于我的内容。

来自吉菲

预测房地产价格的数据科学网络应用程序

原文:https://towardsdatascience.com/a-data-science-web-app-to-predict-real-estate-price-d2366df2a4fd?source=collection_archive---------27-----------------------

数据科学+机器学习+ Web 开发

Web 开发和数据科学一直是我的激情所在。把这两个兴趣结合起来,融合在一起,做一个项目,一直是一个思路。最后,我通过构建一个 web 应用程序来完成这项任务,该应用程序可以预测印度 Bengaluru 市的房地产价格。这是一个巨大的项目,已经花了一段时间。我会确保带你走完我跟随的每一步。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

斯蒂芬·道森在 Unsplash 上拍摄的照片

该项目主要有 4 个步骤:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

应用程序的架构

数据科学

第一步是典型的数据科学工作,我们从 Kaggle 获取一个名为“ Bengaluru 房价数据”的数据集。我们将对它执行一些广泛的数据清理工作,以确保它在预测过程中给出准确的结果。

这个名为’realestepricepredictor . ipynb’的 jupyter 笔记本是我们执行所有数据科学相关工作的地方。因为 jupyter 笔记本是不言自明的,所以我将简要地谈一下我所实现的概念。我们的数据集需要大量的数据清理工作。事实上,笔记本 70%的内容都是关于数据清理的,我们删除空行,删除对预测没有帮助的不必要的列。

下一步是特征工程,即从数据集中提取对成功预测贡献最大的有用和重要信息的过程。

最后一步是处理异常值。异常值是对数据和预测造成巨大破坏的异常现象。从逻辑上来说,要从数据集中发现并去除这些异常值,需要了解很多东西。

同样,所有这些都已经在 jupyter 笔记本中解释过了。

最终,原始数据集从大约 13000 行和 9 列减少到大约 7000 行和 5 列。

机器学习

获得的最终数据服从于机器学习模型。我们将主要使用 K-fold 交叉验证和 GridSearchCV 技术来执行超参数调整,以获得模型的最佳算法和参数。

结果表明,线性回归模型为我们的数据提供了最好的结果,得分超过 80%,这还不错。

现在,我们的模型需要导出到一个 pickle 文件(Bengal uru _ House _ data . pickle)中,该文件将 python 对象转换成字符流。此外,我们需要将位置(列)导出到一个 json( 列. json )文件中,以便能够从前端与它进行交互。

计算机网络服务器

我们将使用 Flask 服务器作为我们的后端来本地托管应用程序。在服务器文件夹中,我们将建立两个文件:

server.py 文件将负责处理获取位置名称和预测房价的路径。它还从前端获取表单数据,并将其馈送给 util.py。这些路线可以使用 Postman app 进行测试。

util.py 文件是后端的主脑。它有一个加载 JSON 和 pickle 文件的函数。该文件采用来自 server.py 的表单数据,并使用该模型来预测房产的估计价格。

前端

前端由简单的 HTMLCSSJavaScript 组成。用户可以在表格中选择平方英尺的面积,BHK,浴室和位置的数量,并点击“估计”按钮,以获得估计的价格。JavaScript 文件负责与后端 flask 服务器路由和前端 HTML 交互。它获取用户填写的表单数据,并调用使用预测模型的函数,以 10 万卢比(10 万卢比= 100000)来呈现估计价格。

结果

让我们看看我们的项目是如何运作的。在后台运行 server.py 文件,打开我们创建的 HTML 网页。输入房产的面积(平方英尺)、BHK 的数量、浴室的数量和位置,然后点击“估算”。😲耶!我们预测了某人梦想中的房子的价格。

奖励—部署

这一部分相当棘手,所以请务必跟着我做每一步。

到目前为止,该项目只是本地的,我们将学习如何使用 AWS EC2 实例将应用程序部署到 web。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

体系结构

我们将使用 nginx,它是一个可以服务 HTTP 请求的 web 服务器。nginx 可以与我们的 Flask 服务器交互。

这里下载 nginx 并安装。

  • 步骤 1: 为了进行估算,在 script.js 文件中,最初我们有这两行:
var url = "http://127.0.0.1:5000/predict_home_price";
var url = "http://127.0.0.1:5000/get_location_names";

这两行只是为了在本地运行我们的应用程序,现在我们必须将这两行改为:

*var url = "/api/predict_home_price";
var url = "/api/get_location_names";*

我们需要在 nginx 服务器上配置反向代理,以便所有对’/api '的请求只被路由到端口 5000。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • **第三步:**创建新的密钥对,输入名称,下载密钥(。pem 文件)并启动 EC2 实例。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 步骤 4: 点击“启动实例”旁边的“连接”选项,在“示例”下会有一个命令。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

复制此命令。它看起来会像这样。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 步骤 5: 打开 bash shell 并粘贴这个命令,但是用下载的 pem 文件的路径替换涂黑的区域。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

现在,您已经连接到 AWS cloud 上的 Linux 机器。

  • 步骤 6: 现在你需要使用 WinSCP 将你的项目复制到那个虚拟机上。下载并启动 WinSCP。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • **第 7 步:**在您的 AWS 上,如果我们再次单击“连接”,在“示例”上方会出现一个命令,类似于:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

将此复制到您的 WinSCP 主机名,因为这是您的虚拟机的主机名。

  • **第七步:**用户名为’ ubuntu '。在输入密码之前,我们需要将。pem 文件放入。使用 PuTTYgen 的 ppk 文件。请从这个链接下载 PuTTYgen。
  • 单击密码字段下的“高级”按钮。选择下载的。pem 文件,它将打开 PuTTYgen 来转换。pem 文件到。ppk 文件。选择新的。ppk,然后单击“确定”。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 点击“登录”。
  • 将您的整个根项目文件夹(RealEstatePricePrediction)从您的机器复制到云服务器。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 在服务器的 ubuntu shell 上执行以下命令:
sudo apt-get update
sudo apt-get install nginx
  • 将我们之前看到的“连接”对话框中的主机名复制粘贴到浏览器中。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

你应该会看到 nginx 运行的主页。

  • 步骤 8: 执行以下命令:
cd /etc/nginx/sites-enabled/
sudo unlink default
cd ../sites-available/
sudo vim BengaluruHousePrediction.conf

将下面的代码复制粘贴到。会议文件。这是反向代理设置。

server {
    listen 80;
        server_name BegaluruHousePrediction;
        root /home/ubuntu/RealEstatePricePrediction/client;
        index index.html;
        location /api/ {
            rewrite ^/api(.*) $1 break;
            proxy_pass [http://127.0.0.1:5000;](http://127.0.0.1:5000;)
        }
}
  • 退出 vim 并执行以下命令:
cd ../sites-enabled/
ln -v -s /etc/nginx/sites-available/BengaluruHousePrediction.conf inside /etc/nginx/sites-enabled

我们在上面的命令中所做的是建立一个符号链接。

  • 使用以下命令重新启动服务器:
sudo service nginx restart
  • 使用以下方式检查状态:
sudo service nginx status
  • 转到您的浏览器,在 url 中输入主机名链接。您应该看到您的应用程序前端加载,但后端还没有工作。
  • **第 9 步:**返回终端,键入:
cd ~
cd RealEstatePricePrediction/server/
sudo apt-get python3-pip
sudo pip3 install Flask
sudo pip3 install scikit-learn
sudo pip3 install numpy
  • 使用以下方式启动后端服务器:
 python server.py

您的应用程序现已在互联网上运行,可从世界任何地方访问。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我知道部署阶段有点艰难。如果你遇到任何问题,可以通过我的 LinkedIn 联系我。在我的 GitHub 上随意检查整个代码库。

我希望你们都明白并学到了很多东西。

谢谢 !

数据科学家的方法:使用 Docker 运行 Postgres SQL

原文:https://towardsdatascience.com/a-data-scientist-approach-running-postgres-sql-using-docker-1b978122e5e6?source=collection_archive---------17-----------------------

面向数据科学家的 Docker 应用程序

面向数据科学家的 Postgres docker 容器

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在这篇简短的教程中,我解释了设置在 Docker 中运行的 PostgreSQL 本地实例并使用 python 与数据库交互的步骤。已采取以下步骤来设置流程。

1.为 PostgreSQL
2 设置 docker。用 Pgadmin4
3 连接 Postgres。使用 Python 与 Postgresql 交互

我用过 Ubuntu 18.04 和 Python 3.7

Docker 中的 Postgres

Postgres 是一个流行的开源数据库,被从网络应用到数据科学项目的数据库应用广泛使用。

Postgress 是现代数据相关应用的主干

有许多数据库框架可供数据科学家选择。在为您的目标应用程序选择最佳框架时,需要考虑的一些因素可能是

  • 您的应用程序需要关系数据库吗?
  • 数据库和表计数的大小是多少?
  • 数据库将驻留在哪里?
  • 开源很重要吗?
  • 您的前端有与 DB 交互的工具吗?

因为这里的目标受众是热爱开源的数据科学家,所以使用 Python 的 Postgres 是事实上的选择。

在过去的几年中,Docker 在开发人员和数据科学家中变得非常流行。Docker 帮助数据科学家共享开发环境,以便在任何机器上重现结果。此外,扩大生产规模是码头工人使用的额外好处。

我用的是由【bitnami】(https://bitnami.com/)和docker-compose开发维护的 Postgres docker。下面是我在 docker 中运行 Postgress 的内容。

version: '2'services:
  postgresql12:
    image: 'bitnami/postgresql:12'
    ports:
      - '5432:5432'
    volumes:
      - 'postgresql_data_12:/bitnami/postgresql12'
    environment:
      - POSTGRESQL_USERNAME=postgres
      - POSTGRESQL_PASSWORD=pwd0123456789
      - POSTGRESQL_DATABASE=my_database
      - ALLOW_EMPTY_PASSWORD=yesvolumes:
  postgresql_data_12:
    driver: local

当我们在 python 中连接这个实例时,这些信息非常有用。按照以下步骤运行docker-compose

  1. 如果之前没有安装 Docker(为 Ubuntu 安装 Docker)。
  2. 如果之前没有安装docker-compose(安装 Docker-Compose for Ubuntu )
  3. docker-compose.yml所在的目录运行docker-compose up

按照以上步骤操作后,可以去 http://localhost:5432/

对于通过 Python 连接到 Postgres,我们使用docker-compose.yml.中定义的信息

连接到 Postgres

我们已经通过 docker 成功剥离了 Postgress 服务器,可以通过 post 5432 的 localhost 访问。连接到 Postgres 服务器的一些最常见的方法是

  1. 使用 PgAdmin4
  2. 使用 psql 客户端工具
  3. 使用 Python

由于我们的重点是使用 Python 连接 Postgres 服务器,所以我们不打算讨论 1 和 2。

使用 Python 与 Postgres 交互

在本节中,我们将学习如何使用 python 与本地运行的 Postgres 进行交互。

code snip pts Credits:https://auth 0 . com/blog/sqlalchemy-ORM-tutorial-for-python-developers/

按照上面的链接,一行一行地详细描述下面的代码。

# To install sqlalchemy
! pip install sqlalchemy

安装完上面的包后,让我们连接到 Postgres 引擎。

```python
# Import objects
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmakerfrom datetime import date# Settings as shown in docker-compose.yml
engine = create_engine('postgresql://postgres:pwd0123456789@localhost:5432/my_database')
Session = sessionmaker(bind=engine)Base = declarative_base()from sqlalchemy import Column, String, Integer, Date, Table, ForeignKey, Boolean
from sqlalchemy.orm import relationship, backref
# from base import Base

创建一些表格

movies_actors_association = Table(
‘movies_actors’, Base.metadata,
Column(‘movie_id’, Integer, ForeignKey(‘movies.id’)),
Column(‘actor_id’, Integer, ForeignKey(‘actors.id’))
)class Movie(Base):
tablename M= 'movies’id = Column(Integer, primary_key=True)
title = Column(String)
release_date = Column(Date)
actors = relationship(“Actor”, secondary=movies_actors_association)def init(self, title, release_date):
self.title = title
self.release_date = release_dateclass Actor(Base):
tablename = 'actors’id = Column(Integer, primary_key=True)
name = Column(String)
birthday = Column(Date)def init(self, name, birthday):
self.name = name
self.birthday = birthdayclass Stuntman(Base):
tablename = 'stuntmen’id = Column(Integer, primary_key=True)
name = Column(String)
active = Column(Boolean)
actor_id = Column(Integer, ForeignKey(‘actors.id’))
actor = relationship(“Actor”, backref=backref(“stuntman”, uselist=False))def init(self, name, active, actor):
self.name = name
self.active = active
self.actor = actorclass ContactDetails(Base):
tablename = 'contact_details’id = Column(Integer, primary_key=True)
phone_number = Column(String)
address = Column(String)
actor_id = Column(Integer, ForeignKey(‘actors.id’))
actor = relationship(“Actor”, backref=“contact_details”)def init(self, phone_number, address, actor):
self.phone_number = phone_number
self.address = address
self.actor = actor


按照下面的代码块将数据插入到使用上面的代码片段创建的数据库中。

from datetime import date# 2 - generate database schema
Base.metadata.create_all(engine)# 3 - create a new session
session = Session()# 4 - create movies
bourne_identity = Movie(“The Bourne Identity”, date(2002, 10, 11))
furious_7 = Movie(“Furious 7”, date(2015, 4, 2))
pain_and_gain = Movie(“Pain & Gain”, date(2013, 8, 23))# 5 - creates actors
matt_damon = Actor(“Matt Damon”, date(1970, 10, 8))
dwayne_johnson = Actor(“Dwayne Johnson”, date(1972, 5, 2))
mark_wahlberg = Actor(“Mark Wahlberg”, date(1971, 6, 5))# 6 - add actors to movies
bourne_identity.actors = [matt_damon]
furious_7.actors = [dwayne_johnson]
pain_and_gain.actors = [dwayne_johnson, mark_wahlberg]# 7 - add contact details to actors
matt_contact = ContactDetails(“415 555 2671”, “Burbank, CA”, matt_damon)
dwayne_contact = ContactDetails(“423 555 5623”, “Glendale, CA”, dwayne_johnson)
dwayne_contact_2 = ContactDetails(“421 444 2323”, “West Hollywood, CA”, dwayne_johnson)
mark_contact = ContactDetails(“421 333 9428”, “Glendale, CA”, mark_wahlberg)# 8 - create stuntmen
matt_stuntman = Stuntman(“John Doe”, True, matt_damon)
dwayne_stuntman = Stuntman(“John Roe”, True, dwayne_johnson)
mark_stuntman = Stuntman(“Richard Roe”, True, mark_wahlberg)# 9 - persists data
session.add(bourne_identity)
session.add(furious_7)
session.add(pain_and_gain)session.add(matt_contact)
session.add(dwayne_contact)
session.add(dwayne_contact_2)
session.add(mark_contact)session.add(matt_stuntman)
session.add(dwayne_stuntman)
session.add(mark_stuntman)# 10 - commit and close session
session.commit()
session.close()


下面是从 Postgres 服务器提取/读取数据的 python 代码片段。如果失去连接,请重新连接。

movies = session.query(Movie)
.filter(Movie.release_date > date(2015, 1, 1))
.all()print(‘### Recent movies:’)
for movie in movies:
print(f’{movie.title} was released after 2015’)
print(‘’)# 6 - movies that Dwayne Johnson participated
the_rock_movies = session.query(Movie)
.join(Actor, Movie.actors)
.filter(Actor.name == ‘Dwayne Johnson’)
.all()print(‘### Dwayne Johnson movies:’)
for movie in the_rock_movies:
print(f’The Rock starred in {movie.title}‘)
print(’‘)# 7 - get actors that have house in Glendale
glendale_stars = session.query(Actor)
.join(ContactDetails)
.filter(ContactDetails.address.ilike(’%glendale%‘))
.all()print(’### Actors that live in Glendale:‘)
for actor in glendale_stars:
print(f’{actor.name} has a house in Glendale’)
print(‘’)


## 结论

在这个简短的教程中,我们学习了如何使用 docker 设置一个本地 Postgres 服务器,并使用 python 与之交互。

由于 Postgres 运行在 docker 中,我们可以将这个 docker 部署到任何云上,只需做很少的更改。我们必须用主机的 IP 地址替换本地主机,这样一切都可以正常工作了。

# 收入多样化的数据科学家指南

> 原文:<https://towardsdatascience.com/a-data-scientist-guide-to-income-diversification-5b0f21b7deb0?source=collection_archive---------37----------------------->

## 当你可以有五种收入来源时,为什么要坚持单一收入来源呢?

作为一名数据科学家,你有点像独角兽——你知道一些编程、数据库、统计,当然还有数据。不利用每一点知识不会让你走得太远,朝九晚五也不像以前那样安全了。那么,你能做什么呢?多元化。

![](https://gitee.com/OpenDocCN/towardsdatascience-blog-zh-2020/raw/master/docs/img/c564d45543d2f0383e666dba1468260d.png)

由[安妮·斯普拉特](https://unsplash.com/@anniespratt?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)在 [Unsplash](https://unsplash.com/s/photos/income?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) 上拍摄

***来自《走向数据科学》编辑的提示:*** *虽然我们允许独立作者根据我们的* [*规则和指南*](/questions-96667b06af5) *发表文章,但我们并不认可每个作者的贡献。你不应该在没有寻求专业建议的情况下依赖一个作者的作品。详见我们的* [*读者术语*](/readers-terms-b5d780a700a4) *。*

一开始就很难找到数据科学的工作。这不应该是最终目标,至少对千禧一代和更年轻的人(比如我)来说是这样,因为:

*   它不再那么安全了(COVID 危机证明了这一点)
*   我们不太关心安全

但即使我们做到了,依赖单一收入来源也不是一个人能做的最好的事情——至少对于数据科学家的技能来说不是。

问问你自己下面的问题:如果我现在失业了,这笔钱会持续多久?直到下个月 1 号?还是 10 号?无论如何,你得到了要点。只要你工作,你就能挣钱。

那个想法一点也不能让我兴奋。这就是为什么一年前,我决定分散我的收入来源,现在我有 5 个。

这怎么可能呢?下面你会发现五个部分,每个部分都描述了一个单一的收入来源以及我是如何维持它的。你也可以这样做,只要:

*   **你有一些适销对路的技能** —数据科学家和软件工程师优先。这不是必须的,但如果这不是你的背景,你将不得不找出更多的东西
*   你愿意工作,我说的工作是指真正的工作。12 小时以上的工作日和周末工作对于接下来的事情来说是一个小小的代价

此外,不需要高于平均水平的智力。一个愿意努力工作的普通人每次都能打败有才华的懒蛋万事通。

让我们从第一个收入来源开始。

# 朝九晚五

我想这个对你们大多数人来说是显而易见的。我说普通工作不再那么安全了,但这并不意味着你应该辞职。至少在开始的时候。我来详细说明一下。

如果你已经开始工作了,放弃你唯一的收入来源去做其他事情是没有意义的。对个人项目的一些兴奋是很棒的,但更多的时候,它的回报恰恰是 0 美元,甚至从口袋里掏出一些钱。你现在还负担不起那种生活方式,但这只是时间问题。

朝九晚五会让你获得**相关工作经验**。你永远不会像你正在从事的一个新的企业级数据科学项目那样,把自己置身于舒适区之外。这是做得更好的必要条件。

让我再重复一遍——朝九晚五不应该是任何想要建立多种收入来源的人的最终目标。不管这份工作是在谷歌还是微软,或者薪水是 50 万美元。一旦你停止工作,这种收入流就停止了(换句话说,这是*主动收入*)。

# 副业

这一次也不应该让人感到意外。如果你有一些空闲时间,并且不介意在工作中抽出时间,试试*自由职业者*或者提供一些其他 B2B 服务也无妨。你会惊讶于一周只工作几个小时就能挣多少钱。

可能性是无限的——从在像 *UpWork* 这样的网站上做自由职业者,到开始自己的事业并在几年内扩大规模——这取决于你的抱负和你能投入的时间。同样,作为一名数据科学家,你的技能范围很广,所以你可以申请比前端开发人员更多的职位。

如果有一件事比找一份没有经验的工作更难的话,那就是得到你的第一个自由客户,至少在你的名字完全不为人知的情况下。所以做好被拒绝一个月的准备吧。这只是暂时的。

# 博客

这是我最喜欢的一个。对于任何数据科学家来说,这都是一个宝贵的工具,因为:

*   让你从人群中脱颖而出——阅读:招聘者来找你,而不是你来找他们(从长远来看)
*   让你更深刻地理解事物——因为你必须尽可能用最简单的方式解释它们
*   让你不断地学习新的东西——数据科学正在快速发展,所以你总是紧跟时代的步伐,你没有办法写不完的东西
*   兼职收入——每月几百到几千美元,取决于你投入的工作

如果你想作为一名数据科学家(或技术专家)了解更多关于博客的知识,请查看这篇文章:

[](/how-having-a-blog-can-advance-your-career-as-a-data-scientist-245270cc281e) [## 拥有一个博客如何推进你作为数据科学家的职业生涯

### 提示:这也适用于其他职业

towardsdatascience.com](/how-having-a-blog-can-advance-your-career-as-a-data-scientist-245270cc281e) 

老实说,如果你想让自己和你的收入更上一层楼,这应该是显而易见的。当然,中型是一个很好的起点,但是您也可以选择托管您的内容。第一个选项是免费的,会更快地显示结果,但如果你想要 100%的内容控制,阶梯更好。

# 联盟营销

偶尔,我会读一本书或看一门比其他课程更好的课程。如果我发现它有益,没有理由不与我的观众分享它。此外,这种收入流自然伴随着博客而来,因为没有理由不让任何产品链接成为附属链接。

如果你不确定什么是代销商链接,请继续阅读。本质上,它是一个推荐链接,这意味着你将从通过你的链接购买的任何商品中获得一小笔佣金。最终用户的价格保持不变,甚至在某些情况下有所降低。

我经常用科技书籍来做这件事,这些书籍帮助我在工作中变得更好。请参阅下面的文章了解一下情况:

[](/the-single-best-introductory-statistics-book-for-data-science-a2601ea7c0be) [## 数据科学的最佳入门统计学书籍

### 了解数据科学最重要的支柱

towardsdatascience.com](/the-single-best-introductory-statistics-book-for-data-science-a2601ea7c0be) 

如果你没有时间阅读,以下是我对联盟内容的思考过程:

1.  我读过/看过一本精彩的书/课程
2.  我的观众可以从中受益——写一篇简短的评论
3.  给这本书/课程添加一个附属链接,并确保公开它

这是一个简单的策略,每月无需额外努力就能赚几百美元——因为无论如何我都会写书评/课程评论。

亚马逊和 T2【Udemy】有很好的会员计划。

# 写书

有时候,我有一个内容想法,但不能写进一篇博文,因为它需要 45 分钟的阅读时间。没有人希望这样。那么,为什么不把它做成一本简短的*电子书*?

我进入这个收入流只有一周左右的时间,但是已经有一些人购买了我的[时间序列预测和 XGBoost](https://www.amazon.com/Time-Forecasting-Python-XGBoost-supervised-ebook/dp/B08KPM6TM5/ref=sr_1_1?dchild=1&keywords=dario+rade%26%23269%3Bi%26%23263%3B&qid=1602062782&sr=8-1) 电子书。

而且非常容易上手。最具挑战性的部分是,嗯,写和编辑这本书。出版很容易。让我们讨论两个选项:

*   通过你的网站——如果你有的话,WordPress/WooCommerce 组合也可以
*   通过亚马逊——首先我选择了这个选项,因为他们有很好的 Kindle 直接出版服务

我不能确切地告诉你这种收入流的利润会有多高,但这是一个让你出名并赚点钱的好方法。

# 结论

现在你知道了——确切地说,如何从一个收入来源增加到五个收入来源。这里有很多技术细节没有提到,因为,同样,这将是一个 45 分钟的阅读,但我希望你得到要点,并将自己进一步探索。

如有任何问题,请随时联系。请在 LinkedIn 上找到我并发送消息,我很乐意提供帮助。

感谢阅读。

[**加入我的私人邮件列表,获取更多有用的见解。**](https://mailchi.mp/46a3d2989d9b/bdssubscribe)

*喜欢这篇文章吗?成为* [*中等会员*](https://medium.com/@radecicdario/membership) *继续无限制学习。如果你使用下面的链接,我会收到你的一部分会员费,不需要你额外付费。*

[](https://medium.com/@radecicdario/membership) [## 通过我的推荐链接加入 Medium-Dario rade ci

### 作为一个媒体会员,你的会员费的一部分会给你阅读的作家,你可以完全接触到每一个故事…

medium.com](https://medium.com/@radecicdario/membership) 

*原载于 2020 年 10 月 9 日 https://betterdatascience.com*[](https://betterdatascience.com/a-data-scientist-guide-to-income-diversification/)**。**

# 数据科学家的数据架构指南

> 原文:<https://towardsdatascience.com/a-data-scientists-guide-to-data-architecture-bac00b0913f?source=collection_archive---------23----------------------->

## 构建强大的数据流程需要了解的内容

# 第 1 部分—基于一家主要保险公司的案例研究

> 你应该总是准备你自己的数据。

这句话来自人工智能领域的一位高管,几年前我问他对数据的看法。

他不是唯一有这种想法的人。在我的第一份工作中,部门主管不信任另一个团队来构建数据管道,最终自己编写了很大一部分 ETL 代码,并让数据团队直接向他汇报。

为什么这些高管如此重视数据?

因为如果没有很好地掌握数据,你就不会(也不应该)对你从数据中得出的见解和建议有太多信心。

对于从原始形式一直到准备好进行分析的数据,它经历了许多过程。一名优秀的数据科学家必须坚持不懈地质疑流程的每一步,并提出如下问题:

*   是否收集了正确的数据?
*   数据质量怎么样?
*   端到端的数据流程是怎样的?

本文的目的是使用真实世界的例子来浏览一些与数据架构相关的主题,这样您就有了一些基本的背景知识,并且知道应该向您的数据团队提出什么问题。

![](https://gitee.com/OpenDocCN/towardsdatascience-blog-zh-2020/raw/master/docs/img/850e40e88ec910ba7a869a56e170d209.png)

照片由 [JJ 英](https://unsplash.com/@jjying?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)在 [Unsplash](https://unsplash.com/s/photos/pipeline?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)

# 生产与暂存

如前所述,我的职业生涯始于为一家大型保险公司工作,在一个所有数据处理都由我们自己完成的团队中。

每个月,我们都会从生产数据库中取出一长串表的副本,并将其放在我们的 SQL server 上,我们称之为临时数据库。

> **生产数据库**:各部门用于实时管理保单和理赔的交易数据库。
> 
> **暂存数据库**:这是用于各种分析工作的生产数据库的快照。通常情况下,快照每月拍摄一次,但有时会根据临时请求更频繁地拍摄。

临时数据库的目的是为了不干扰正常的业务运营。

这种情况不应该发生,但由于数据连接设置问题,确实发生过一次。我们每 5 分钟就接到 IT 部门的电话,因为每个人都在抱怨系统冻结了…

对于分析团队来说,暂存环境是安全的。此外,只要对临时数据库运行代码,就一定会得到相同的结果。

# 规范化与非规范化表

一旦所有的表都被复制到临时数据库中,我们就执行一系列的数据处理步骤,将这些表转换成一些非规范化的表。

生产系统中的原始表称为规范化表,这是关系数据库背后的核心概念。每个表包含不同事物的数据,可以通过主键和外键链接在一起。

![](https://gitee.com/OpenDocCN/towardsdatascience-blog-zh-2020/raw/master/docs/img/10a88804eb246a2954ea47a83239de74.png)

一个关系数据库的例子。omnisi.com[礼貌](https://www.omnisci.com/technical-glossary/relational-database)

出于分析的目的,在获得有用的东西之前,需要大量的表连接。

例如,假设您想要预测在给定建筑物特征的情况下获得建筑物保险索赔的概率。理想情况下,你需要一个平的桌子

*   目标是一个“是/否”标志,表示是否有索赔
*   这些特征/预测因素包括保险金额、建筑年龄、郊区等。

要创建平面表,您需要将索赔表(告诉您是否有索赔)、保险单表(包含保险单信息)和风险表(包含建筑物信息)连接在一起。

这个过程叫做**反规格化**。结果是一个**反规格化的**或**平面表**,其中的数据被很好地组织起来并准备好进行分析。

![](https://gitee.com/OpenDocCN/towardsdatascience-blog-zh-2020/raw/master/docs/img/3123d1103e61bd6bcdc637dea537d6ff.png)

雷蒙德·拉斯姆森在 [Unsplash](https://unsplash.com/s/photos/organised?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) 上拍摄的照片

# 反规范化过程的陷阱

你可能认为这没什么大不了的。我们只需要执行一些连接就可以了,不是吗?什么会出错?

很多事情都会出错。您可能有重复的记录。您可能会无意中获得或丢失记录。

这是我开始第一份工作时被告知要做的,我相信我今天仍然受益于这些好习惯。

*   在每次连接之前,检查 by 变量的唯一性
*   我们在做什么样的加入?我们在做左连接、右连接、内连接还是外/笛卡尔连接?
*   我们从多少记录开始,每一步我们获得/失去了多少记录?

如果我们跳过这些步骤,我们可能会浪费更多的时间。这是我在许多不同的项目中反复学到的一课。

![](https://gitee.com/OpenDocCN/towardsdatascience-blog-zh-2020/raw/master/docs/img/e7a7b597d2c8bd3cf7f4276be07cbcbf.png)

劳尔·纳杰拉在 [Unsplash](https://unsplash.com/s/photos/danger?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) 上的照片

# 交付核心数据集

经过大量努力,我们最终得到了满足整个团队需求的几个核心表,包括:

*   策略标题:每个策略一行,显示关于该策略的最新信息
*   风险标题:每个风险占一行,显示关于该风险的最新信息(如建筑物或汽车)。每份保单下可能有多种风险。
*   索赔标题每份保单一行,显示保单的最新信息

这些都是平面表,每月生产一次,放在一个公共服务器上。无论谁需要做任何分析,只要复制这些平面表,就知道数据是可信的。

# 抽取、转换、加载至目的端(extract-transform-load 的缩写)

ETL 代表 **E** 提取, **T** 转换, **L** oad。这听起来可能有点不可思议,但是你已经看到了这个过程。“提取”是指我们将数据从生产数据库复制到临时数据库。“加载”是指我们交付最终核心数据集的时间。“转换”是介于两者之间的所有工作。

# 数据完整性检查

在整个过程中,我们每一步都进行了可靠的数据检查:

*   当将数据从生产数据库复制到临时数据库时,我们会对总记录数和金额进行调节。
*   在转换的每个阶段,我们跟踪有多少数据流入不同的桶(我们保留的和我们丢弃的,如果有的话)。
*   我们根据财务部门提供的总账核对核心数据集中的保费、索赔支付金额和案例估计。必须调查大的移动。
*   我们将本月的值与上月的值进行比较,以发现任何重大变化。
*   我们使用仪表板来检测任何异常的分布变化。

当时,大部分数据完整性检查,以及最初的 ETL 过程都是用 SAS 程序编写的。通常,添加这些检查后,SAS 程序的大小会增加 3 倍。

的确,检查比做更费力气!

这值得吗?绝对的。

团队中的每个人都可以拿起数据集,并立即自信地使用它,因为知道它已经被检查过了。

![](https://gitee.com/OpenDocCN/towardsdatascience-blog-zh-2020/raw/master/docs/img/e7e0b8000bcf884d36e3d06dd513da0c.png)

Joshua Hoehne 在 [Unsplash](https://unsplash.com/s/photos/confidence?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) 上拍摄的照片

# 了解数据是如何创建的

除了强大的数据检查之外,我们还花了很多时间学习数据最初是如何生成的。

这是通过每天与输入数据的人坐在一起完成的。在我们的例子中,销售部门负责保单数据,理赔部门负责理赔数据。

我们坐在一线员工旁边,听他们回答客户的问题,将数据输入系统。我们尽力去理解他们是如何工作的,并积累了大量的领域专业知识。查看 [**这篇文章**](/domain-expertise-why-is-it-important-for-data-scientists-2d6a406d544d) 是我写的关于建立领域专业知识重要性的文章。

# 数据质量反馈回路

虽然上述过程可能有助于检测数据质量问题,但它并不能解决这些问题。这就是为什么需要一个反馈回路。

每个月,我们都会发布一组数据质量报告,并与管理团队分享。我们寻找的一些东西是

*   缺失或可疑的地址
*   出生日期

数据质量绩效与员工的 KPI 相关联,并构成驱动其薪酬的指标的一部分。这为每个人关心数据质量提供了强大的激励。

没有公司高级管理层的支持,这是不可能的。我认为,数据驱动的决策文化永远无法自下而上驱动。它需要自上而下。

# 第二部分——街区的新成员

到目前为止,我已经解释了传统的方法。我们当时用的是 SAS。人们没有使用数据工程师或数据科学家这个词。如今,很多事情都变了,但这些概念仍然适用。

接下来,我将讨论几个近年来变得越来越重要的话题。

# 内部与外部数据

从 IT 系统中提取的数据称为内部数据,因为它是内部生成的。

外部数据非常强大,可以极大地丰富和补充内部数据。外部数据的类型因上下文而异。

对于建筑保险,以下是一些可以使用的外部数据示例:

*   显示每个地区人口统计信息的普查数据
*   显示犯罪率的警方数据
*   建筑信息
*   卫星图像和高分辨率航空地图
*   国家洪水地图
*   气象资料

就汽车保险而言,以下是一些可以使用的额外外部数据示例:

*   车辆信息
*   驾驶行为/远程信息处理数据

# 结构化与非结构化数据

上面讨论的大多数数据都是结构化数据。非结构化数据的示例包括:

*   索赔描述——使用自然语言处理,我们可以得出客户情绪等特征
*   卫星图像——通过图像识别,我们可以推断出一些特征,比如游泳池的存在

如您所见,非结构化数据通常需要一些额外的处理才能对我们的任务有用,例如保险风险建模。

# 实时分析

到目前为止,我只讨论了批处理。ETL 过程至少需要 2-3 天。再加上几天的分析时间,至少在数据可用一周后,你才会有任何产出。

实时分析则不同。数据一进来,就被处理和分析。

你能想象你买一件商品的那一刻,亚马逊对你说:

> “尊敬的客户,感谢您的购买。请等一周,我们会推荐一些您感兴趣的产品。”

这从来没有发生过。他们会立即提供推荐。这使得他们从 Amazon.com 的推荐中获得 35%的收入。

实时分析通常属于数据工程师的领域。以新冠肺炎为例,这些是我创建的基于批处理的静态仪表板结果。更新结果是一件痛苦的事。当我发表这些文章时,这些数字已经过时了。

[*冠状病毒(新冠肺炎)疫情状态更新*](https://medium.com/@zemingyu/status-update-of-the-coronavirus-covid-19-outbreak-31da9389b04a)*—3 月 17 日发布*

[*冠状病毒(新冠肺炎)疫情状态更新*](https://medium.com/@zemingyu/state-of-the-coronavirus-outbreak-in-10-charts-and-key-findings-721f62c08a9e)*—2 月 29 日发布*

[*冠状病毒爆发—大数据五问*](/coronavirus-outbreak-5-questions-to-ask-big-data-3550794d2fe9)*—2 月 1 日发表*

将上述内容与[互动仪表盘](https://da-team-sg.shinyapps.io/covid-19/)进行比较,该仪表盘显示了自 1 月下旬以来新冠肺炎病毒在全球尤其是新加坡的传播情况。当新数据进来时,整个过程自动发生。

![](https://gitee.com/OpenDocCN/towardsdatascience-blog-zh-2020/raw/master/docs/img/4ae5d7f5fb175782ba8f1599d22ab115.png)

慕尼黑再保险 SG 分析团队制作的交互式仪表盘

真实世界的分析会在最需要的时候提供结果——谁会关心一周前的新冠肺炎数据呢?

让我们把同样的逻辑应用到保险领域。为什么保险公司的首席执行官要关心 3 个月前的销售额或损失率?然而,今天大多数保险公司仍然使用月度或季度报告。

除了实时欺诈分析等一些例外情况,保险业在采用这些新技术方面往往较为缓慢。随着像 R-Shiny 和 Dash 这样的工具使部署实时分析变得更加容易和经济实惠,我预计它在不久的将来会获得动力。

# 结论

在数据科学世界里,有很多性感的话题——人工智能、深度学习、大数据……

数据架构不是这些性感的话题之一。公司高管永远不会通过说“我们已经建立了世界级的数据完整性检查”来吸引任何媒体的注意。这是艰苦的工作。做好这件事需要很大的自律。然而,如果你真的成功了,它可能会比那些性感的话题更有价值。

作为一名数据科学家,花一些时间学习这些概念是值得的,这样您就可以与您的数据团队有效地沟通,并确保您拥有一个强大的数据流程,为您的所有分析工作奠定坚实的基础。

# 黑客啤酒节数据科学家指南

> 原文:<https://towardsdatascience.com/a-data-scientists-guide-to-hacktoberfest-8135b8bf2c01?source=collection_archive---------67----------------------->

## 如何对开源做出有意义的贡献

![](https://gitee.com/OpenDocCN/towardsdatascience-blog-zh-2020/raw/master/docs/img/60705a95da46839b20a2955636f33972.png)

Justin Jairam 摄自 [@jusspreme](https://www.instagram.com/jusspreme/?hl=en) (经允许)

# 什么是 Hacktoberfest

开源项目是数据行业的支柱,没有它们,熊猫、Numpy Sci-kit Learn 和整个大数据 Apache 堆栈等项目就不会存在。Hacktoberfest 是一个为期一个月的活动,开发者可以在 Github 上贡献开源项目,并获得免费赠品。要有资格获得免费赠品,您必须提交四个成功的项目拉请求,这些项目都选择了 Hacktoberfest。为了尝试并轻松获得免费赠品,一些贡献者提交了无意义的贡献,导致项目维护者不高兴。

![](https://gitee.com/OpenDocCN/towardsdatascience-blog-zh-2020/raw/master/docs/img/037a9403663ccdb13f6bc45aefb06c81.png)![](https://gitee.com/OpenDocCN/towardsdatascience-blog-zh-2020/raw/master/docs/img/951719abe0f38424c826d39d5f83ee49.png)![](https://gitee.com/OpenDocCN/towardsdatascience-blog-zh-2020/raw/master/docs/img/3de3bc8c6bab4410e0cf564abb76f1fd.png)

无意义的贡献示例

在本帖中,我们将讨论如何回馈社区,为开源项目做出有意义的贡献。

# 我是如何进入开源领域的

我第一次接触开源是在我参与两个项目的时候,[解释](https://github.com/interpretml/interpret)和[熊猫-总结](https://github.com/mouradmourafiq/pandas-summary)。在这两种情况下,项目的使用并没有完全覆盖我的用例,尽管它们非常小。

使用 interpret,我试图使用库来解释/解释 Sklearn 分类器。潜在的问题是`.predict`方法返回一个整数(0,1,等等。)用于分类器。当这些整数值用于计算 Morris 敏感度时,会抛出一个错误,指出数据必须是一个`float`。在这种情况下,[修复很简单](https://github.com/interpretml/interpret/pull/64)——将 Sklearn 分类器返回的整数转换为浮点数!在修复之前,任何试图解释 Sklearn 分类器的人都会得到一个错误,这个简单的贡献允许所有用户解释 Sklearn 分类模型。

对于 pandas-summary,我使用这个库来自动化列数据的描述和统计分析。唯一的问题是,每次我使用这个库时,总会绘制一个直方图,这很讨厌。作为对生活质量的修正,我[添加了一个简单的标志](https://github.com/mouradmourafiq/pandas-summary/pull/20),用户可以指定他们是否想要绘制直方图。

我的前两个贡献没什么特别的,也很简单,但是从这两个贡献中,我学到了如何向远程项目发出拉请求、遵循贡献指南以及通过 Github、Slack 等与项目维护者互动和交流的基本知识。

从那以后,我成为了 [pandas-bokeh](https://github.com/PatrikHlobil/Pandas-Bokeh) 库的主要贡献者,为[interact](https://github.com/nteract/nteract)贡献了错误修复和 UI 改进,并为 [Prefect](https://github.com/PrefectHQ/prefect) 添加了主要的功能集成。

# 技巧

## 了解如何提出拉取请求

拉请求是将您的代码贡献给项目的一种方法。首先,找到一个你想参与的项目,点击项目页面右上角的`fork`按钮,开始这个项目。这将在您的存储库下创建一个当前状态的项目副本。

![](https://gitee.com/OpenDocCN/towardsdatascience-blog-zh-2020/raw/master/docs/img/b67be5602fbc4da36648aa019f2ab503.png)

一旦您分叉了项目,导航到 Github 中您的项目下的存储库。在项目名称下应该显示`forked from ...`。

将分叉的项目克隆到您的本地计算机上。

为你的变更或 bug 修复创建新的分支:`git checkout -b your_branch_name`。

做出你的改变,按照项目的贡献指南提交它们。

将您的更改推送到分叉的项目存储库:`git push -u origin your_branch_name`。

导航到分叉存储库项目页面。您将看到创建拉取请求的提示。如果您没有导航到 pull requests 选项卡并从那里通过选择`New Pull Request`创建一个。

![](https://gitee.com/OpenDocCN/towardsdatascience-blog-zh-2020/raw/master/docs/img/b8c6b08e1c5f4833cd2bd783d57d1dc1.png)

填写“拉”请求模板(如果有),或者填写相关指南中概述的模板。一旦完成,你的拉动请求就可以开始了,等待反馈!

## 从你经常使用的图书馆开始,无论大小

第一个开源贡献的第一步是选择一个你想贡献的项目。我经历过的最好的方法是为你经常使用或正在积极使用的项目做贡献。如果你已经广泛地使用了一个项目,你可能会遇到一些会提高项目质量的 bug 或增强。这就是我如何开始我的开源之旅的,通过尝试改进我日常使用的项目。

## 看看现有的 Github 问题

如果你正在寻找一个问题或者为一个项目做贡献的方法,一个好的起点是 Github 的内置`Issues`标签。这是用户和项目维护人员可以记录错误和特性增强的地方。项目维护人员将仔细检查这些问题并标记它们,收集更多信息,添加元数据等。他们将添加的标签之一是“好的第一个问题”标签,以通知潜在的贡献者,这个问题对于第一次贡献者或项目的新贡献者是好的。

![](https://gitee.com/OpenDocCN/towardsdatascience-blog-zh-2020/raw/master/docs/img/811265934945aa8464ace6e221e29fe5.png)

这些问题推荐给那些对开放源码或项目本身不熟悉的贡献者,以帮助他们开始并做出贡献。如果您找不到自己要修复的 bug 或要添加的增强功能,请利用这些工具。

## 阅读投稿指南

没有什么比投入所有这些寻找项目、隔离 bug 或开发新功能的工作更糟糕的了,因为你没有遵循编码、格式化或提交消息标准,它被拒绝或甚至没有被关注。好消息是所有这些都是可用的,通常在项目自述文件的贡献部分或项目的贡献指南部分。当您创建一个拉请求时,项目通常会运行自动格式检查,并且在这些基本检查通过之前,您的拉请求通常不会被查看。

如果你没有看到贡献部分或者一个项目没有贡献指南,不要想做什么就做什么。1)尽可能地遵循项目中的编码和文档风格。2)遵循编码和文档最佳实践。

## 每一份贡献都很重要

开源的每一项贡献都很重要,无论大小。无论是从可用性的角度还是从阅读文档的角度来看,如果你正在经历一个项目的 bug 或抱怨,其他人也会经历。文档是开源软件的重要组成部分,因为每个项目都需要它。当你开始了解一个项目是关于什么的时候,这通常是开始为一个项目做贡献的好地方。它提供了设计决策和项目考虑的背景信息,这反过来将帮助您理解代码。

文档是用户查找信息的第一个地方,一个项目的文档越完整,它的用户群就越多。开发人员喜欢文档化的项目,当一个项目没有文档,或者文档很差时,开发人员在将它添加到他们的工作流程之前会三思。添加文档或修复哪怕是最小的 bug 都可能影响成百上千每天使用该项目的用户,许多人会为此感谢你。

# 接下来会发生什么

你的贡献很少会马上被合并。几天之内,项目团队会有人对他们的反馈进行评论,或者通知你他们正在审查你的拉动式需求。处理评论,提出问题,澄清你不明白的地方,提出修改建议,如果有的话,你的修改很快就会被合并!

如果你在一周内没有收到任何关于你的拉请求的反馈,给项目维护者发信息,礼貌地询问他们状态如何。在较大的项目中,经常有大量的拉请求,他们可能已经忘记了拉请求,或者还没有抽出时间来检查它。

如果此时你还没有收到回复,这并不经常发生(在我身上从来没有发生过),从这个项目中吸取技能和学习点,继续下一个项目。一旦你提出了拉取请求,并通知了项目维护人员,剩下的就不在你的掌控之中了。这是开源唯一真正令人遗憾的地方,也是你不应该放在心上的地方。

# 利益

## 成为更好的工程师或科学家

无论你是数据工程师、ML 工程师还是数据科学家,贡献开源都有助于你在自己的领域变得更好、进步。从了解项目是如何构建和组织的,到深入了解关键库,导航大型代码库,编写生产级代码,甚至是学习解决问题的新方法。所有这些技能将直接转化为你的职业或你的下一个项目。

## 结识新的工程师、开发人员和科学家

为开源做贡献的最大好处是有机会与那些创造了一个被全世界成千上万人使用的工具的人一起工作和互动。你可以直接看到他们是如何创造一个解决方案来解决一个普遍问题的。此外,你们最终可能会联系起来,互相交换想法,并在未来的项目上合作。就我个人而言,我已经和我参与过的项目的维护人员取得了联系,并在 Twitter 和 LinkedIn 上与他们保持联系。

# 结论

今天,你可能不能贡献一个新的特性,但是在项目周围,阅读代码,阅读文档,所有这些都会给你对项目的洞察力。从那里,对文档的一个小贡献,可能会导致一个被记录的 bug 修复,这导致对项目的更高理解,然后导致你的第一个特性。

这个故事的寓意是,尽你所能地做出贡献,最终你会达到开发新功能的目标,开始你自己的操作系统项目,甚至成为一个项目的关键贡献者。

# 反馈

我鼓励任何人对我的帖子提出反馈。你可以在推特上给我发信息,或者在 sidhuashton@gmail.com 给我发电子邮件。

# Python 模块和包的数据科学家指南

> 原文:<https://towardsdatascience.com/a-data-scientists-guide-to-python-modules-and-packages-9193a861c26b?source=collection_archive---------14----------------------->

![](https://gitee.com/OpenDocCN/towardsdatascience-blog-zh-2020/raw/master/docs/img/bd8532a3e12d9ed1aca9e2ef24d0e6af.png)

杰西·拉米雷斯在 Unsplash[拍摄的照片](https://unsplash.com/s/photos/package?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)

## 如何创建、导入和使用您自己的 python 包

数据科学代码通常是非常线性的。从源中提取一些数据,应用一系列转换,然后执行一些分析、计算或训练模型。然而,为了可读性、效率和可重复性,模块化和打包代码对于重用和协作是有用的。

当我第一次开始学习数据科学编程时,我发现很难找到创建模块和包的简单解释和教程,特别是对于数据科学项目。在这篇文章中,我将给出一个非常简单的教程,介绍如何为数据科学和机器学习项目创建和使用自己的包和模块。

在整篇文章中,我将使用可以从 [UCI 机器学习库](https://archive.ics.uci.edu/ml/datasets/Adult)下载的成人数据集。这是一个通常用于建立分类机器学习模型的数据集,其目标是预测给定的成年人每年是否会赚超过 5 万美元。

## 模块的数据科学用例

python 模块只是一组 python 操作,通常是函数,放在一个带有`.py`扩展名的文件中。然后,这个文件可以导入到 Jupyter 笔记本、IPython shell 或其他模块中,以便在您的项目中使用。

让我们看一个例子。

在下面的代码中,我已经阅读了 CSV 文件,我将使用熊猫。

import pandas as pddata = pd.read_csv(‘adults_data.csv’)
data.head()


![](https://gitee.com/OpenDocCN/towardsdatascience-blog-zh-2020/raw/master/docs/img/be362f22b72580178f36686e23146c32.png)

该数据集包含大量分类特征。如果我们打算用它来训练一个机器学习模型,我们首先需要进行一些预处理。

分析完这些数据后,我决定在训练模型之前采取以下步骤对数据进行预处理。

*   一次性编码下列栏目:工作类,婚姻状况,关系,种族和性别。
*   取最常出现的值,将剩余的值分组为“其他”,并对结果特征进行一次性编码。这将需要为以下各列执行,因为它们具有大量的唯一值:教育、职业、本国。
*   缩放剩余的数值。

我们需要编写来执行这些任务的代码将会非常大。此外,这些都是我们可能希望多次执行的任务。为了使我们的代码更具可读性,并且能够轻松地重用它,我们可以将一系列函数编写到一个单独的文件中,该文件可以导入到我们的笔记本中使用——一个模块。

## 编写模块

要创建一个模块,你需要首先创建一个新的空白文本文件,并用扩展名`.py`保存。你可以使用一个普通的文本编辑器,但是很多人使用 IDE(集成开发环境)。IDE 为编写代码提供了许多额外的功能,包括编译代码、调试和与 Github 集成的工具。有许多不同类型的 IDE 可供使用,值得尝试几种,以找到最适合您的一种。我个人更喜欢 [PyCharm](https://www.jetbrains.com/pycharm/) ,所以我将在示例中使用它。

为了开始编写 python 模块,我将创建一个新的 python 文件。

![](https://gitee.com/OpenDocCN/towardsdatascience-blog-zh-2020/raw/master/docs/img/c958f0dc6bbe00ce90e82fb307f3f93d.png)

我将它命名为`preprocessing.py`。

![](https://gitee.com/OpenDocCN/towardsdatascience-blog-zh-2020/raw/master/docs/img/61775f0a7a7b42d78e5ba50c28bf193c.png)

让我们在这个文件中编写我们的第一个预处理函数,并在 Jupyter 笔记本中测试导入和使用它。

我在`preprocessing.py`文件的顶部写了下面的代码。给代码添加注释是一个很好的做法,这样可以使代码更具可读性。我在下面的代码中添加了一些注释。

def one_hot_encoder(df, column_list):
“”“Takes in a dataframe and a list of columns
for pre-processing via one hot encoding”“”
df_to_encode = df[column_list]
df = pd.get_dummies(df_to_encode)
return df


要将这个模块导入到 Jupyter 笔记本中,我们只需编写以下代码。

import preprocessing as pr


IPython 有一个方便的神奇扩展,叫做`autoreload`。如果您在导入之前添加了以下代码,那么如果您对模块文件进行了任何更改,这些更改将自动反映在笔记本中。

%load_ext autoreload
%autoreload 2import preprocessing as pr


让我们测试使用它来预处理一些数据。

cols = [‘workclass’, ‘marital-status’, ‘relationship’, ‘race’, ‘gender’]one_hot_df = pr.one_hot_encoder(data, cols)


![](https://gitee.com/OpenDocCN/towardsdatascience-blog-zh-2020/raw/master/docs/img/492fd2a974a4b2313a8da1989c488eba.png)

现在我们将剩余的预处理函数添加到我们的`preprocessing.py`文件中。

def one_hot_encoder(df, column_list):
“”“Takes in a dataframe and a list of columns
for pre-processing via one hot encoding returns
a dataframe of one hot encoded values”“”
df_to_encode = df[column_list]
df = pd.get_dummies(df_to_encode)
return df

def reduce_uniques(df, column_threshold_dict):
“”“Takes in a dataframe and a dictionary consisting
of column name : value count threshold returns the original
dataframe”“”
for key, value in column_threshold_dict.items():
counts = df[key].value_counts()
others = set(counts[counts < value].index)
df[key] = df[key].replace(list(others), ‘Others’)
return df

def scale_data(df, column_list):
“”“Takes in a dataframe and a list of column names to transform
returns a dataframe of scaled values”“”
df_to_scale = df[column_list]
x = df_to_scale.values
min_max_scaler = preprocessing.MinMaxScaler()
x_scaled = min_max_scaler.fit_transform(x)
df_to_scale = pd.DataFrame(x_scaled, columns=df_to_scale.columns)
return df_to_scale


如果我们回到笔记本电脑,我们可以使用所有这些功能来转换数据。

import pandas as pd
from sklearn import preprocessing%load_ext autoreload
%autoreload 2import preprocessing as prone_hot_list = [‘workclass’, ‘marital-status’, ‘relationship’, ‘race’, ‘gender’]
reduce_uniques_dict = {‘education’ : 1000,‘occupation’ : 3000, ‘native-country’ : 100}
scale_data_list = data.select_dtypes(include=[‘int64’, ‘float64’]).columnsone_hot_enc_df = pr.one_hot_encoder(data, one_hot_list)
reduce_uniques_df = pr.reduce_uniques(data, reduce_uniques_dict)
reduce_uniques_df = pr.one_hot_encoder(data, reduce_uniques_dict.keys())
scale_data_df = pr.scale_data(data, scale_data_list)final_data = pd.concat([one_hot_enc_df, reduce_uniques_df, scale_data_df], axis=1)final_data.dtypes


我们现在有了一个完全数值化的数据集,它适合于训练一个机器学习模型。

![](https://gitee.com/OpenDocCN/towardsdatascience-blog-zh-2020/raw/master/docs/img/d103a7a5f00ea12aa6c46a555556a12d.png)

已转换列的快照

## 包装

在进行机器学习项目时,创建几个相关的模块并将它们打包以便一起安装和使用通常是理想的或者有时是必要的。

举个例子,在我的工作中,我目前正在使用一个名为 [AI 平台](https://cloud.google.com/ai-platform/)的机器学习模型的 Google Cloud 部署解决方案。该工具要求您将机器学习模型中的预处理、训练和预测步骤打包上传并安装在平台上,以部署最终模型。

python 包是包含模块、文件和子目录的目录。该目录需要包含一个名为`__init__.py`的文件。该文件表明它所在的目录应该被视为一个包,并指定应该导入的模块和函数。

我们将为预处理管道中的所有步骤创建一个包。__init__ 的内容。py 文件如下。

from .preprocessing import one_hot_encoder
from .preprocessing import reduce_uniques
from .preprocessing import scale_data
from .makedata import preprocess_data


同一个包中的模块可以导入到另一个模块中使用。我们将向我们的目录添加另一个名为 makedata.py 的模块,该模块使用 preprocessing.py 模块来执行数据转换,然后将最终数据集导出为 CSV 文件供以后使用。

import preprocessing as pr
import pandas as pd

def preprocess_data(df, one_hot_list, reduce_uniques_dict, scale_data_list, output_filename):
one_hot_enc_df = pr.one_hot_encoder(data, one_hot_list)
reduce_uniques_df = pr.reduce_uniques(data, reduce_uniques_dict)
reduce_uniques_df = pr.one_hot_encoder(data, reduce_uniques_dict.keys())
scale_data_df = pr.scale_data(data, scale_data_list)
final_data = pd.concat([one_hot_enc_df, reduce_uniques_df, scale_data_df], axis=1)
final_data.to_csv(output_filename)


新目录现在看起来像这样。

![](https://gitee.com/OpenDocCN/towardsdatascience-blog-zh-2020/raw/master/docs/img/1c54d5238e49243fb039cb5fc69b4b1f.png)

现在我们可以回到 Jupyter 笔记本,使用这个包来执行所有的预处理。我们的代码现在非常简单明了。

import pandas as pd%load_ext autoreload
%autoreload 2
import preprocessing as prdata = pd.read_csv(‘adults_data.csv’)one_hot_list = [‘workclass’, ‘marital-status’, ‘relationship’, ‘race’, ‘gender’]
reduce_uniques_dict = {‘education’ : 1000,‘occupation’ : 3000, ‘native-country’ : 100}
scale_data_list = data.select_dtypes(include=[‘int64’, ‘float64’]).columnspr.preprocess_data(data, one_hot_list, reduce_uniques_dict,scale_data_list, ‘final_data.csv’)


在我们当前的工作目录中,现在将有一个名为`final_data.csv`的新 CSV 文件,它包含预处理过的数据集。让我们回过头来检查几行,以确保我们的包按预期执行。

data_ = pd.read_csv(‘final_data.csv’)
data.head()


![](https://gitee.com/OpenDocCN/towardsdatascience-blog-zh-2020/raw/master/docs/img/4a30dbc57bcf147bf2ba9fa87a3a8a5d.png)

在这篇文章中,我已经说明了在数据科学和机器学习项目中使用模块和包是如何提高代码的可读性和可重复性的。在我寻找这些过程的简单解释的过程中,我发现这个[博客帖子](https://timothybramlett.com/How_to_create_a_Python_Package_with___init__py.html)非常有用,并且很好地浏览了 [python 如你所愿](https://www.pythonlikeyoumeanit.com/Module5_OddsAndEnds/Modules_and_Packages.html)项目。

感谢阅读!

# 数据科学家的侧推指南💰

> 原文:<https://towardsdatascience.com/a-data-scientists-guide-to-the-side-hustle-3dd93a554eb8?source=collection_archive---------2----------------------->

## 将你的发展技能货币化,开始赚取被动收入

![](https://gitee.com/OpenDocCN/towardsdatascience-blog-zh-2020/raw/master/docs/img/bb6386e8645d378a03141a12f8aa94ab.png)

信用: [@garrhetsampson](https://unsplash.com/@garrhetsampson) 通过 [Unsplash](https://unsplash.com/photos/CmF_5GYc6c0)

***来自《走向数据科学》编辑的提示:*** *虽然我们允许独立作者根据我们的* [*规则和指导方针*](/questions-96667b06af5) *发表文章,但我们并不认可每个作者的贡献。你不应该在没有寻求专业建议的情况下依赖一个作者的作品。详见我们的* [*读者术语*](/readers-terms-b5d780a700a4) *。*

啊,[侧扑](https://www.entrepreneur.com/article/293954)。有一个额外的收入流,一个有利可图的激情项目,或一个次要的奖金演出,是如此诱人。我们中的许多人至少都有一些兼职赚外快的方法,即使只是简单地投资零花钱。整个行业都在迎合旁门左道:优步/ Lyft 会在下班时间付钱给赞助人;AirBnB 提供了一个完整的用户网络,有兴趣租用你的房子;Instagram 奖励向粉丝兜售商品和服务的有影响力的人。对我来说,开始是为了攒钱上大学(在 Craigslist 上翻运动器材🤸‍♂)已经发展成为通过**教学、写作、构建软件以及更多**创造额外收入来传播数据科学。

那么,*你如何*利用你的数据科学技能赚点外快呢?我们将探索一些我最喜欢的方法来赚取一些🍞并培养数据技能。

来源: [VH1](https://vh1.tumblr.com/post/129219230256/me-on-payday) 通过[吉菲](https://giphy.com/gifs/vh1-all-new-twinning-tonight-at-10-ji-and-le-fLNQD3RQpAEYE)

也许你想创造额外的收入来支付那些讨厌的订阅服务。或者也许你计划乘飞机去巴厘岛,拥抱一种更有田园风味的远程工作。不管是什么原因,我建议设定一个切实的目标,并列出你需要达到的步骤或微观目标。

> 我的目标很简单。我想每周多花几个小时来提高我的数据科学知识,并为此获得报酬。我把目标定为每周 50 美元,并着手记录我在收入和数据科学技能方面的里程碑。

## 我将从以下几个方面对我最喜欢的赚钱方法进行排名

1.  努力:一般来说,我每周需要投入多少时间?
2.  **价值**:努力正常化,多少是可行的支出?
3.  **难度**:我需要多少领域和/或技术专长?
4.  一致性:我多久能得到一次报酬?

# 为介质书写

> “通过算法和编辑管理的结合,媒体上的帖子基于兴趣和参与度得到传播。有些书拥有成千上万的读者——并不是因为它们是名人写的。媒介不是关于你是谁或你认识谁,而是关于你必须说什么。”
> 
> —中等

作为一名读者,你对 Medium 和这个平台上令人振奋的观点非常熟悉。提炼你的品牌并把内容推向世界似乎令人生畏,但它可以赋予*和*利润。经过几个月的随意观察(许多令人鼓舞的👏),我终于打开了水龙头,开始发布内容。拿着一台旧的 MacBook 和对散文的初步理解,我开始在我最喜欢的媒体出版物上发表文章,并赚到足够支付每年 50 美元的订阅费。

如果你不熟悉出版商如何赚钱,请查看概述媒体合作伙伴计划的指南。基本上,你可以发布有资格获得与浏览量、点击量、阅读时间和转化率相称的收入的内容(非会员注册为 Medium)。作为媒介生态系统中的一个“新鲜”视角,我从像苏珊·李和凯西·科济尔科夫这样的知名作家身上寻找灵感。

Effort: 3
Value: 1
Difficulty: 2
Consistency: 2

Overall Score: 2


你可以在写作技巧、研究、网络等方面投入无限的资源。对获得正投资回报的信心不足。虽然大多数作家都很难获得足够的持续曝光率来赚钱(2019 年 1 月只有 8.1%的作家赚了[超过 100 美元),但这也是推销你的才华和练习写作的好方法。在媒体上取得成功需要强大的声音、吸引人的原创内容、高效的分销渠道和一点运气。像其他任何事情一样,这是一门需要大量时间和细致入微的改进来找到你的最佳状态的学科。](https://medium.com/blogging-guide/how-much-money-can-you-make-writing-for-medium-a3cf0c9c7533)

我花了 30 天实现了总收入 50 美元的目标,只用了 10 天就把我的内容发布到了《走向数据科学》上。现在,我的重点是每周写一篇文章,迭代增长我的粉丝;这当然是一项正在进行的工作!

来源:[@世界之星](https://www.worldstarhiphop.com/videos/video.php?v=wshhqL2nd9UaksR76X35)经由[吉菲](https://giphy.com/gifs/worldstar-dj-khaled-worldstarhiphop-3o8dFwgfYgpff1u5H2)

# 发布和货币化 API

> “API 是新生态系统的窗口。”
> 
> **— Bala Iyer 在** [**哈佛商业评论**](https://hbr.org/2015/01/the-strategic-value-of-apis)

开发人员使用 API 在他们自己的程序中利用外部软件。通过促进互连,公司和技术人员可以共享他们的工作,并让越来越多的数据专业人员能够构建各种规模的惊人解决方案。尽管开源软件鼓励“通过教育、合作和基础设施实现社会自由”,但 API 的收入为世界上一些最受欢迎和最赚钱的科技公司提供了燃料。据《哈佛商业评论》(Harvard Business Review)报道,“Salesforce.com通过 API 产生 50%的收入,Expedia.com[产生 90%,易贝](http://www.slideshare.net/faberNovel/why-shouldicareaboutap-is4/45)产生 60%”。哇哦。

> 许多最流行的 API 是由公司而不是个人开发的。但是随着有才华的数据专业人员数量的增加,对使用开源技术构建的廉价、复杂替代品的需求也会增加。

那么如何开始呢?一个 [API marketplace](https://rapidapi.com/blog/api-glossary/api-marketplace/) 允许开发者发布和货币化他们的工作,而不必管理定制的支付系统和复杂的基础设施。 [RapidAPI](https://rapidapi.com/) 是*我的*最爱,以“免费增值”和你能想到的每种 API 的付费订阅计划为特色。你可能不会马上获得被动收入,但是你已经展示了独特的才能和企业家精神。

Effort: 2
Value: 1
Difficulty: 4
Consistency: 1

Overall Score: 2


下面是如何将您有价值的工作部署到 API 的快速指南:

[](/earn-money-with-machine-learning-by-publishing-an-api-dc6694121ba5) [## 通过部署 API 利用机器学习赚钱

### 使用 FastAPI、uvicon/guni corn 和 Python 将您的作品发布到 RapidAPI 市场

towardsdatascience.com](/earn-money-with-machine-learning-by-publishing-an-api-dc6694121ba5) 

用这种方法我还没有赚到一分钱;我选择写体验(^),而不是最大化我的 API 的价值。然而,**天空才是真正的极限:**对于自然语言处理(NLP)和文本分类、图像识别、高效的数据管道等,有很多很酷的途径。你可以快速出版并赚钱。

来源:[Yahoo entertainment](https://yahooentertainment.tumblr.com/post/115712365116)via[Giphy](https://giphy.com/gifs/mlb-opening-day-field-of-dreams-qVtmVS0eailqg)

RapidAPI 有几类定制的 API 解决方案,比如体育、旅游、数据、金融等等。一个快速的查询会告诉你哪个 API 在给定的类别中最受欢迎,从而知道付费解决方案的市场有多大。

你建了,他们就来了!

# 卡格尔。

显而易见的选择!Kaggle 是一个增强技能和探索数据集的好地方。作为谷歌的子公司,它是一个为数据科学家和机器学习工程师量身定制的在线社区,旨在合作提升该领域的技术水平。他们提供[竞赛](https://www.kaggle.com/competitions),让大胆的技术人员在 [**CA$H 奖**](https://www.youtube.com/watch?v=C9mfuifkZgc) 的争夺中测试他们的技能(是的,你没看错)。

无论你是数据新手还是成熟的独角兽,Kaggle 竞赛都将考验你的专业知识。话题的广度*和深度*,从[新冠肺炎预测](https://www.kaggle.com/c/covid19-global-forecasting-week-5)到[神经成像](https://www.kaggle.com/c/trends-assessment-prediction)以及介于两者之间的一切。这也是一个公司/组织众包人才的惊人平台;zillow(120 万美元💰),通用电气(25 万美元💰)和国土安全部(150 万美元💰)post [Excalibur](https://en.wikipedia.org/wiki/Excalibur) 级挑战获得巨额现金奖励🏆。更有可能的是,你只是远远地欣赏这些尖端的解决方案,而不是把熏肉带回家,但你不妨试试!

Effort: 3
Value: 2
Difficulty: 5
Consistency: 2

Overall Score: 3


很简单:Kaggle 比赛很有趣!无论你是否套现,你都将享受一个挑战性的机会来检验你的技能。就我个人而言,我只收到过伴随胜利而来的无形的奖励,比如“荣誉”和“知识”,但我有一些同行从 Kaggle 那里赚了很多钱。

竞赛也是扩展你的网络和深入数据科学未探索领域的好方法。 [LeetCode](https://leetcode.com/) 是通过参加有趣的挑战来扩展您的数据科学技能的另一个平台,重点是面试过程。不管具体结果如何,如果你选择参与,你肯定会成为一名更好的技术专家。

# 自由职业平台:Upwork、Toptal 和 Guru

就像飞蛾扑火一样,智能招聘平台将自由职业者(🦋)和经过审核的机会(🔥).你只需支付一定比例的费用,在公开市场上劫持数据角色,而不是管理自己的业务开发渠道。从全职机会到一次性培训,这些平台可以根据您的需求和市场需求进行扩展。

根据你的专业水平,自由职业可以不仅仅是一个兼职。我知道许多数据专业人士已经放弃了传统的朝九晚五,转而从事全职自由职业——你也可以!但是就本文的目的而言,我将把重点放在低维护时间承诺的有限机会上。

Effort: 3
Value: 4
Difficulty: 2
Consistency: 3

Overall Score: 3


我对这种方法的评级标准感觉特别主观。我专门使用了 [Upwork](https://www.upwork.com/ab/find-work/domestic) 和[to tal](https://www.toptal.com/),两者都拥有高效的入职流程和大量数据科学/开发人员角色。为演出投标需要一些时间来适应,找到合适的时薪比仅仅依靠几年的经验要多得多。也就是说,如果你很勤奋,并且接受一个平台扣除大约 20%的费用,那么赚钱是很容易的。

通过自由职业,我每个月能挣 100 美元,但是我对自己感兴趣的职位很挑剔。作为一名白天的顾问,我知道我的小时工资和高度重视的特定技能/技术:我把时间集中在寻找充斥着文本分析和/或 NLP 的机会上。

来源: [ESPN](https://www.espn.com/) 经[吉菲](https://giphy.com/gifs/espn-S85obJAx8r6GO7gIn3)

# 教一个班

学习数据科学和一般编程技能有无数种方法。幸运的是,在线学习有巨大的市场,因为它涉及到建立有价值的技能和令人印象深刻的工作组合。虽然许多电子学习倡导者建议建立和/或管理你自己的个性化课程,但我更感兴趣的是帮助管理别人审核过的课程。去年年底,我通过明尼苏达大学双城分校报名参加了一个著名的数据训练营。

Effort: 4
Value: 2
Difficulty: 3
Consistency: 5

Overall Score: 4


这门特殊的课程以 6 个月为增量,涵盖了你在任何数据科学手册中都能找到的大部分技术:Python / R 编程、数据库查询和管理、前端 web 开发、统计学、机器学习等等。因为我不必管理课程更新、新生入职或任何与课程建设相关的管理任务,所以我可以专注于教学艺术。我每周花将近 15 个小时的时间来支持学生学习课程材料,而报酬相对较低。尽管付出了努力,但时间承诺非常一致,我可以和各种学术/专业背景的学生一起工作。查看一些即将推出的课程,寻找灵感📚:

[](https://www.switchup.org/rankings/best-data-science-bootcamps) [## 2020 年最佳数据科学训练营

### By: SwitchUp SwitchUp 根据校友的评论,对全球 18 个最佳数据科学训练营进行了排名。这些…

www.switchup.org](https://www.switchup.org/rankings/best-data-science-bootcamps) [](https://www.coursereport.com/blog/best-data-science-bootcamps-the-complete-guide) [## 我们的最佳数据科学训练营终极指南

### 当你听到数据科学这个术语时,你会想到电子表格和庞大的数字吗?数据科学帮助我们了解所有…

www.coursereport.com](https://www.coursereport.com/blog/best-data-science-bootcamps-the-complete-guide) 

与构建自己的课程相比,这种方法需要的前期投资明显较低,但会限制您的潜在收入上限;像我一样,你可能会收到一笔不多的两年期津贴。你要做的就是联系你的母校或者联系一个该领域的盟友(比如我!),并充实你对各种主题的知识。

如果您有兴趣了解更多关于结构、需求、物流和/或入职流程的信息,欢迎在下方留言或直接给我发消息😃。

# 辅导课程

如果你没有足够的带宽在结构化的环境中投入 6 个多月的时间来教学,或者对如此广泛的话题进行社交感到不舒服,那么**辅导**可能正合你的胃口。通过支持日益增长的在线学习需求,辅导服务高度个性化,利润越来越大。

来源:[威福莱吉](https://wifflegif.com/)通过[吉菲](https://giphy.com/gifs/teachers-kevin-hart-you-gon-learn-today-4nRiHFFTzmJZC)

许多私人公司提供辅导服务,以降低流失率,提高学生满意度。与其他昂贵的支持机制相比,导师提供了更高的价值。

Effort: 3
Value: 3
Difficulty: 2
Consistency: 5

Overall Score: 4.2


我设定我的时间,我想和多少学生一起工作,以及我想教的话题。我负责策划一个高效、舒适的学习体验,以换取每小时 30 美元的诱人报酬。它的低维护性、灵活性和盈利性足以成为我在数据科学生态系统中最喜欢的副业。

# …可能性是无限的!

有如此多的选择可以产生额外收入*和*一路学习:

*   出版您自己的数据科学教科书/课程
*   导致[堆栈溢出](https://stackoverflow.com/)
*   通过联盟营销创建内容
*   [打造酷炫 app](https://blog.inkdrop.info/how-ive-attracted-the-first-500-paid-users-for-my-saas-that-costs-5-mo-7a5b94b8e820)
*   预测[域名](https://www.pickydomains.com/make-money)
*   …这样的例子不胜枚举!

> 在写这篇文章的时候,我通过以上列举的方法每周可以赚到 350 美元。对于一个侧推来说还不错!我超过了最初设定的 50 美元/周的目标,并且一路走来,我学到了很多东西。最精彩的部分?这些方法是完全可重复的,并且已经成熟。你所需要的只是一点决心和学习的欲望。

来源:[通过](https://www.youtube.com/watch?v=JU9TouRnO84) [YouTube](https://www.youtube.com/) 的

我目前是一名教育工作者和家庭教师(兼职),同时尽可能多地写我在媒体上的经历。我经常在 Kaggle 上寻找挑战,试图每季度向市场发布一个 API,并不断地争取有趣的自由职业机会。这是我在有利可图的副业中找到的最佳组合*,它帮助我提高了我的网络和数据科学技能。根据您的专业水平、兴趣和可用性,您可以使用这些方法来启动和/或增加您自己的机会。*

感谢阅读!请在下面评论任何额外的想法或建设性的反馈。关注我( [Garrett Eichhorn](https://medium.com/u/dbec1257daf4?source=post_page-----3dd93a554eb8--------------------------------) )或在 [LinkedIn](https://www.linkedin.com/in/garretteichhorn/) 上与我联系。

# 数据科学家对 Dask 并行计算的介绍

> 原文:<https://towardsdatascience.com/a-data-scientists-intro-to-parallel-computing-with-dask-4c1b4a464579?source=collection_archive---------11----------------------->

## 利用 Dask 并行化您的 Python 代码

在这篇文章中,我们讨论了利用 python 中的 [*Dask*](https://docs.dask.org) *的基础知识,使用它来执行一些简单的并行化任务(*令人尴尬的并行*),了解一些最常见的可能用例(*数据管理、数据探索、机器学习*),然后触及一些更复杂的工作流,这些工作流可以通过将不同的 ML 库与 *Dask* 相结合来构建。在这篇文章中,我们将重点关注运行一个令人尴尬的与 Dask* 并行的任务。

**什么是并行计算?**

你可能听说过这个短语,但是除了所有实际的复杂算法之外,它真正的核心含义是:你执行你想做的工作,这样多个步骤同时发生,而不是总是等待前一个任务完成。难度随着你实际想要完成的事情的性质而增加。

彼此独立的操作/任务,即除了每个任务的开始和结束之外,不存在任何数据依赖性——通常最容易并行化,并被称为*令人尴尬的并行* ***、*** ,而在开始和结束之间涉及大量数据传输/通信的任务则难以并行化。

> 作为一名数据科学家/分析师,您并不总是有足够的时间或所需的技能来思考如何并行化您的任务,并从头开始用其他语言实施解决方案,例如,花费数周、甚至数月时间来发现最佳的分组方式并不是您所期望的!

**什么是 *Dask* ?**

> Dask:在 Python 中并行化计算任务的框架

`Dask`是一个旨在帮助促进:

*   超大型数据集的数据管理,以及
*   跨大量内核(具有多个工作人员的本地集群)或物理计算机(具有多个节点的集群)的计算分布

它提供的功能类似于 Apache Spark 的[](https://spark.apache.org)*,但是它被紧密地集成到了`numpy`和`pandas`中,对于那些库的用户来说,它比 Spark 更容易学习和使用。*

*并行化一项任务,如果你是一个从头开始构建框架的人,那么任何任务都是困难的。有 python 模块(例如*多重处理*)可以帮助你跳过这一部分,执行和管理(在某种程度上)不同的线程。但是,从用户的角度来看,即使这样也需要大量的努力和特殊的技能。在这种情况下,监控、日志记录等通常也是次要的。*

****Dask*** 去掉了所有复杂的*(虽然重要)*内部抽象,给你一个干净的 api,让你在 python 中并行化你现有的代码。取决于你如何编写你的代码——你可能甚至不需要修改你现有的函数来使它们与 ***Dask*** 一起工作!*

*让我们从使用下面的 ***Dask*** 和接下来的几篇文章开始。*

*![](https://gitee.com/OpenDocCN/towardsdatascience-blog-zh-2020/raw/master/docs/img/dff3cd5d559c5f5d7092cf567ab70687.png)*

***获取 *Dask* :***

*我会推荐以下选择之一:*

*   *为您的 python 环境安装 [Anaconda](https://www.anaconda.com/distribution) (我的首选,Dask 随基本设置一起安装。你也可以[创建一个新的环境](https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html)来保持你的 *Dask* 环境在你学习、安排工作等的时候是独立的*

conda create --name dask python=3.7 anaconda dask


*   *创建一个新的 [python 虚拟环境](https://docs.python-guide.org/dev/virtualenvs)并在其中安装 *Dask**
*   *在您当前的环境中安装 *Dask**

# Anaconda environmentconda install dask# pip based installationpip install “dask[complete]”


***创建你的 *Dask* 客户端:***

import dask
from dask.distributed import Client, progresstry:
client.close()
client = Client(threads_per_worker=1,
n_workers=5,
memory_limit=‘2GB’)
except:
client = Client(threads_per_worker=1,
n_workers=5,
memory_limit=‘2GB’)client


*在这里,我们已经创建了一个**本地集群**,定义了要运行多少本地工作者以及要为每个工作者分配的资源。
这个客户端一次最多可以运行 5 个任务(*n _ workers*)*Dask*处理定义单个线程的所有细节,在一个任务完成时在不同线程之间进行协调,下一个任务开始时,从我们的环境向每个工作线程传输数据,等等*

*![](https://gitee.com/OpenDocCN/towardsdatascience-blog-zh-2020/raw/master/docs/img/f6ef9c22f155c4f10882ae172d58bfef.png)*

## *您的第一个 Dask 示例:*

*任务:计算给定数据集中每个类别的平均值和标准偏差*

***步骤 01:创建一个样本模拟** 在我们的例子中,我模拟了一个包含 **k** 操作和 **g** 类别的数据集。该模拟的输出是每个模拟的平均值和标准偏差。*

*def simulate_dataset(i):

g = 10
k = 100000

categories = np.random.choice(a = np.arange(g), size= k)
values = [(j+1)*np.random.random(k//g) for j in range(g) ]
values = np.concatenate(values)

data     = pd.DataFrame({'category':categories,
                         'values':values})
data_out = data.groupby('category').apply(lambda df: [
                                     df.loc[:,'values'].mean(),
                                     df.loc[:,'values'].std()
                                     ])return(data_out)*

***这个**函数可以是你想要的任何东西,任何复杂的分析/模拟任务——只要它是独立的。每次迭代都可以独立运行,不需要与其他线程进行任何通信,只需要在模拟开始时进行输入。*

***步骤 02:在 for 循环中运行 n 次模拟***

*%%timeitresults = {}for i in range(n):

results[i] = simulate_dataset(i)*

***步骤 03:用 *Dask* 运行 n 次**模拟*

%%timeitresults_interim = {}
for i in range(n):
results_interim[i] = delayed(simulate_dataset)(i)results_scheduled = delayed(list)(results_interim)
results = results_scheduled.compute()


# *比较:*

*在这个独立的例子中,我们看到了大约 3 倍的加速。当您增加计算/模拟的重量时,加速会更加明显(增加独特的**类别**或**总样本量**(在我们的例子中为 **)***

*![](https://gitee.com/OpenDocCN/towardsdatascience-blog-zh-2020/raw/master/docs/img/dd9e640fe2851e7d77a2850407637e6b.png)*

*For 循环 vs Dask*

*这种增长不是线性的,因为启动和管理不同的员工会产生管理费用。每个工人的计算量越大,这种开销的影响就越小。*

****Dask 仪表板上的进度可视化:****

*![](https://gitee.com/OpenDocCN/towardsdatascience-blog-zh-2020/raw/master/docs/img/857398f31a911bbe9a060c3515d03455.png)*

*工人利用率*

*![](https://gitee.com/OpenDocCN/towardsdatascience-blog-zh-2020/raw/master/docs/img/b88ed9f0681bc09a49c5536192eddbd9.png)*

*任务图*

*![](https://gitee.com/OpenDocCN/towardsdatascience-blog-zh-2020/raw/master/docs/img/47bc1be5846e077ad39038b45b54332f.png)*

*任务流*

# 数据科学家对冠状病毒爆发的看法

> 原文:<https://towardsdatascience.com/a-data-scientists-perspective-on-the-wuhan-coronavirus-4d1110446478?source=collection_archive---------4----------------------->

## 约翰·霍普斯金大学对冠状病毒数据集的 EDA。

![](https://gitee.com/OpenDocCN/towardsdatascience-blog-zh-2020/raw/master/docs/img/aaae8c8ac88004b9eaf5fdd6347c3f8c.png)

[疾控中心](https://unsplash.com/@cdc?utm_source=medium&utm_medium=referral)在 [Unsplash](https://unsplash.com?utm_source=medium&utm_medium=referral) 拍摄的照片

一种最初在中国武汉市报道的病毒,现在已经传播到世界上十几个国家,引发了前所未有的健康和经济危机。

世界卫生组织(世卫组织)宣布武汉冠状病毒*爆发为国际关注的突发公共卫生事件*。

在本文中,我们将简要了解当前的危机,然后深入研究 Kaggle 的“[小说电晕病毒 2019 数据集](https://www.kaggle.com/sudalairajkumar/novel-corona-virus-2019-dataset)”。我还创建了一个 [GitHub 知识库](https://github.com/kamahmad/EDA-Wuhan-Coronavirus-Dataset),供任何想要重新创建步骤并添加自己见解的人使用。

# 什么是冠状病毒?

据世卫组织报道,冠状病毒(CoV)是一个大的病毒家族,可导致从普通感冒到更严重疾病的疾病,如中东呼吸综合征(MERS-CoV)和严重急性呼吸综合征(SARS-CoV)。

[一种新型冠状病毒(nCoV)](https://www.who.int/emergencies/diseases/novel-coronavirus-2019) 是一种新的毒株,此前未在人类中发现。被确定为最近爆发的原因的病毒被称为 2019-nCoV 或武汉冠状病毒。

# **危机,截至今日**

根据《纽约时报》的最新报道,中国确诊感染人数上升至 37198 人,死亡人数上升至 811 人,超过了非典造成的死亡人数。

中国的 16 个城市,总人口超过 5000 万,处于封锁状态。全球各地的航空公司都取消了往返中国的航班。一些国家正在用特别航班疏散他们的公民,并进一步对他们进行严格的隔离。

更糟糕的是,中国股市暴跌,全球市场都感受到了影响。一些分析师预测,疫情对全球经济构成威胁,并有可能引发深远的地缘政治后果。

# 数据集简介

在 [Kaggle](https://www.kaggle.com/) 上发布的“[小说电晕病毒 2019 数据集](https://www.kaggle.com/sudalairajkumar/novel-corona-virus-2019-dataset),已被[约翰·霍普斯金大学](https://www.jhu.edu/)收藏。该小组从世卫组织、当地疾病预防控制中心和媒体等各种渠道收集了数据。他们还创建了一个实时仪表板来监控病毒的传播

**免责声明**:请注意,数据集没有更新,因此下面记录的观察结果可能不是当前场景的真实反映。

# 导入库和加载数据

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns*#reading data from the csv file*
data= pd.read_csv(“/kaggle/input/novel-corona-virus-2019-dataset/2019_nCoV_data.csv”)


# 了解数据集

让我们首先对数据集有一个基本的了解,并在必要时执行数据清理操作。

#checking the number of rows and columns
data.shape


输出:(770,8)。数据集中有 770 个观察值和 8 列。

#checking the top 5 rows
data.head()


![](https://gitee.com/OpenDocCN/towardsdatascience-blog-zh-2020/raw/master/docs/img/1b95718cf0a4c2b48f945b09c2e8d4da.png)

列的名称是不言自明的。第一列' *Sno* '看起来像一个行号,并没有给分析增加任何值。第五列'*上次更新*'显示与'*日期*'列相同的值,除了一些后来更新数字的情况。让我们在继续之前删除这两列。

#dropping the 1st and 5th column
data.drop(“Sno”, axis=1, inplace=True)
data.drop(“Last Update”, axis=1, inplace=True)#getting a summary of the columns
data.info()


![](https://gitee.com/OpenDocCN/towardsdatascience-blog-zh-2020/raw/master/docs/img/5ff2680c44118cb2ea5224ac3b41a571.png)

除了'*省/州*'之外,所有列都没有空值。进一步的分析显示,英国、法国和印度等国家缺少省份名称。在这种情况下,我们不能假设或填充任何主列表中的缺失值。让我们继续看数字列。

data.describe()


![](https://gitee.com/OpenDocCN/towardsdatascience-blog-zh-2020/raw/master/docs/img/51740a95b252b30aa46dbcada4aa52d7.png)

`describe()`方法返回数据帧中数字列的一般统计数据。

从输出中直接得出的结论是,数据是累积报告的,即任何特定一天报告的病例数包括以前报告的病例。死亡人数的“最大”值是 479 人,这与几天前媒体报道(该数据公布时)一致。

#checking for duplicate rows
duplicate_rows=data.duplicated([‘Country’,‘Province/State’,‘Date’])
data[duplicate_rows]


![](https://gitee.com/OpenDocCN/towardsdatascience-blog-zh-2020/raw/master/docs/img/edcf6dd2ed252937466e5978a08cd1b0.png)

`duplicated()`方法返回一个布尔序列,然后用作原始数据帧的掩码。输出显示没有两条记录具有相同的国家、州和日期。因此,我们可以得出结论,数据集中的所有观察值都是唯一的。

#listing all the countries where the virus has spread to
country_list=list(data[‘Country’].unique())
print(country_list)
print(len(country_list))


![](https://gitee.com/OpenDocCN/towardsdatascience-blog-zh-2020/raw/master/docs/img/6f515568fcb2b0bf8119cdbc1067d2b3.png)

数据显示,该病毒已经传播到亚洲、欧洲和美洲的 32 个国家。出于分析目的,我们可以合并“中国”和“Mainland China”的数据。

#merging China and Mainland China
data.loc[data[‘Country’]==‘Mainland China’,‘Country’]=‘China’


在继续之前,让我们检查一下“*日期*栏中的日期。

print(list(data[‘Date’].unique()))
print(len(list(data[‘Date’].unique())))


![](https://gitee.com/OpenDocCN/towardsdatascience-blog-zh-2020/raw/master/docs/img/4345d4e5dcf5b533a055cf040e94b29d.png)

看起来数据在每天不同的时间被更新。我们可以从时间戳中提取日期,并使用它们进行进一步的分析。这将有助于我们保持日期一致。

#converting ‘Date’ column to datetime object
data[‘Date’] = pd.to_datetime(data[‘Date’])#extracting dates from timestamps
data[‘Date_date’]=data[‘Date’].apply(lambda x:x.date())


让我们了解一下疫情对每个国家的影响。

#getting the total number of confirmed cases for each countrydf_country=data.groupby([‘Country’]).max().reset_index(drop=None)
print(df_country[[‘Country’,‘Confirmed’,‘Deaths’,‘Recovered’]])


![](https://gitee.com/OpenDocCN/towardsdatascience-blog-zh-2020/raw/master/docs/img/dd952a2ee4fc19bfb2c2c546394b1c53.png)

由于数据是累积的,我们需要将`max()` 函数与`groupby()` 一起使用,以便获得每个国家报告的最大病例数。如果我们使用`sum()`,我们会被重复计算。

该数据证实,中国是报告病例最多的国家,迄今为止几乎所有的 481 例死亡病例都发生在中国。从更积极的方面来看,中国也有 522 起复苏,其次是泰国,有 7 起。

#preparing data for a time-series analysisdf_by_date=data.groupby([‘Date_date’]).sum().reset_index(drop=None)df_by_date[‘daily_cases’]=df_by_date.Confirmed.diff()
df_by_date[‘daily_deaths’]=df_by_date.Deaths.diff()
df_by_date[‘daily_recoveries’]=df_by_date.Recovered.diff()
print(df_by_date)


![](https://gitee.com/OpenDocCN/towardsdatascience-blog-zh-2020/raw/master/docs/img/b733896b8be3d67cfc80d6a8aa50d66c.png)

我们已经完成了数据准备步骤,因此让我们继续将数据可视化,以寻找任何正在出现的趋势和模式。

# 绘制数据

对于数据可视化,我们将使用两个强大的 python 库——Matplotlib 和 Seaborn。Matplotlib 是大多数数据科学家使用的默认 2D 可视化库。Seaborn 构建在 matplotlib 之上,有助于构建更好看和更复杂的可视化,如热图。

让我们根据数据的不同方面创建五个可视化。

1.  *一段时间内确诊病例数*

#plotting a bar chart of confirmed cases over timesns.axes_style(“whitegrid”)sns.barplot(
x=“Date_date”,
y=“Confirmed”, data=data.groupby([‘Date_date’]).sum().reset_index(drop=None)
)plt.xticks(rotation=60)
plt.ylabel(‘Number of confirmed cases’,fontsize=15)
plt.xlabel(‘Dates’,fontsize=15)


![](https://gitee.com/OpenDocCN/towardsdatascience-blog-zh-2020/raw/master/docs/img/e4a6ab0723c2950f75ee143116c5e78a.png)

2.*死亡率与恢复率*

#plotting two line plots for deaths and recoveries respectivelyplt.plot(‘date_updated’, ‘Deaths’, data=data.groupby([‘date_updated’]).sum().reset_index(drop=None), color=‘red’)plt.plot(‘date_updated’, ‘Recovered’, data=data.groupby([‘date_updated’]).sum().reset_index(drop=None), color=‘green’)plt.xticks(rotation=60)
plt.ylabel(‘Number of cases’,fontsize=15)
plt.xlabel(‘Dates’,fontsize=15)
plt.legend()
plt.show()


![](https://gitee.com/OpenDocCN/towardsdatascience-blog-zh-2020/raw/master/docs/img/62d8f11a7f2b109e3f0f48a55440b468.png)

3.*除中国外的 10 个受影响最严重的国家*

#We know that China is the most affected country by a large margin, #so lets create a bar plot to compare countries other than China#increasing the figure size
plt.rcParams[‘figure.figsize’]=(15,7)sns.barplot(
x=“Country”,
y=“Confirmed”,
data=df_country[df_country.Country!=‘China’].nlargest(10,‘Confirmed’),
palette=sns.cubehelix_palette(15, reverse=True)
)plt.ylabel(‘Number of cases’,fontsize=15)
plt.xlabel(‘Countries’,fontsize=15)
plt.xticks(fontsize=13)
plt.yticks(fontsize=13)


![](https://gitee.com/OpenDocCN/towardsdatascience-blog-zh-2020/raw/master/docs/img/24c5b3e03fbb18c84d4bab4ebcd8ff87.png)

4.*一段时间内的死亡率*

#The mortality rate, at any point in time, can be roughly calculated #by dividing the number of deaths by the number of confirmed casesdf_by_date[‘mrate’]=df_by_date.apply(lambda x: x[‘Deaths’]*100/(x[‘Confirmed’]), axis=1)plt.plot(‘Date_date’,‘mrate’,data=df_by_date, color=‘red’)
plt.show()


![](https://gitee.com/OpenDocCN/towardsdatascience-blog-zh-2020/raw/master/docs/img/cd86ef864494c5eae22ff70434538380.png)

5.*深入了解中国 10 个受灾最严重的省份*

#creating a separate dataframe for provincesdf_province=data[data[‘Country’]==‘China’].groupby([‘Province/State’]).max().reset_index(drop=None)#selecting 10 most affected provinces
df_province=df_province.nlargest(10,‘Confirmed’)df_province=df_province[[‘Province/State’,‘Deaths’,‘Recovered’]]#for multi-bar plots in seaborn, we need to melt the dataframe so #that the the deaths and recovered values are in the same column
df_province= df_province.melt(id_vars=[‘Province/State’])

sns.barplot(
x=‘Province/State’,
y=‘value’,
hue=‘variable’,
data=df_province
)plt.xlabel(‘Provinces’,fontsize=15)
plt.ylabel(‘Number of cases’,fontsize=15)


![](https://gitee.com/OpenDocCN/towardsdatascience-blog-zh-2020/raw/master/docs/img/72e2d8e992a1b9033eebb7f5eae92188.png)

# 观察

1.  自 1 月 28 日以来,每天报告的病例数量增加了近 250%。2 月 4 日报告的病例数是 3915。这说明病毒传染性很强,传播速度很快。
2.  在第一周,死亡率高于康复率。自 1 月 31 日以来,恢复率迅速上升,并呈现积极趋势。2 月 4 日有 255 人康复,相比之下有 66 人死亡。随着越来越多的人了解症状并及时寻求药物治疗,治愈率将继续增加。
3.  在地理上靠近中国的国家,如泰国、日本和新加坡,比其他亚洲和欧洲国家报告了更多的病例。德国是一个例外,它是欧洲病例最多的国家。
4.  死亡率从未超过 3%,正在逐渐降低到 2%。未来几周更多的复苏可能会进一步减少这种情况。
5.  中国湖北省是疫情爆发的中心。该省报告的病例比所有其他省份加起来都多。有些省份没有出现死亡病例,所有受影响的患者都已康复。

# 结论

分析显示了武汉冠状病毒传播的惊人速度。至少有 811 人在当前的疫情中死亡,超过了七年前 SARS 爆发时报道的 774 人死亡。我祈祷并希望病毒尽快被控制住。

*编者按:*[*【towardsdatascience.com】*](https://slack-redir.net/link?url=http%3A%2F%2Ftowardsdatascience.com)*是一家以数据科学和机器学习研究为主的中型刊物。我们不是健康专家或流行病学家。想了解更多关于疫情冠状病毒的信息,可以点击* [*这里*](https://slack-redir.net/link?url=https%3A%2F%2Fwww.who.int%2Femergencies%2Fdiseases%2Fnovel-coronavirus-2019) *。*

# 在 6 分钟内学会如何使用 KMeans

> 原文:<https://towardsdatascience.com/a-data-scientists-practical-guide-to-using-kmeans-ff180878e13b?source=collection_archive---------51----------------------->

![](https://gitee.com/OpenDocCN/towardsdatascience-blog-zh-2020/raw/master/docs/img/8078d5e21e88b92b4d75a6a5fd18ddd9.png)

图片来自 [Pixabay](https://pixabay.com/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=2546)

# 介绍

聚类是一种属于无监督学习类别的机器学习技术。在不进入不同机器学习类别的大量细节的情况下,我将给出无监督学习的高级描述。

简而言之,我们不是预先决定我们希望我们的算法找到什么,而是提前给算法提供很少甚至没有指导。

换句话说,我们不是明确地告诉我们的算法我们想要预测或解释什么,而是踢回去,把接力棒交给算法来识别给定特征中的突出模式。

如果你想了解更多关于这个划分,你可以看看[这个帖子](/machine-learning-in-a-nut-shell-df251f480f77)。

聚类具有广泛的应用,是数据科学工具箱中非常有用的工具。

我们将讨论集群的一个非常具体的实现,Kmeans。也就是说,对集群的基本理解是实际应用的前提。我们不会在这里深入探讨,但是你可以通过[这篇文章](/what-every-data-scientist-needs-to-know-about-clustering-cf8f860a1883?source=your_stories_page---------------------------)从概念层面了解更多。

# Kmeans 入门

# 克曼语中的 K

k 代表您要识别的组或集群的数量。如果您正在执行聚类分析,而您已经知道有三个分组,您将使用该上下文通知算法您需要三个分组。你并不总是知道有多少自然分组,但是你可能知道你需要多少分组。在以下示例中,我们将使用 iris 数据集,它是与各种 Iris 物种相关的测量值的集合,但还有许多其他用例..基于用途、尺寸等的客户。或者基于购买可能性和可能的购买量等的前景。在商业、生物学和其他领域有广泛的应用。

# 了解质心

一旦我们确定了 k,算法将随机分配 k 个点;这些点将作为你的“质心”。你可能会问,什么是质心?质心指的是每个聚类的中心点。

一旦这些中心点或质心被随机分配…欧几里德距离被计算在每个点和每个质心之间。

一旦计算出距离,每个点被分配到最近的质心。

我们现在有了这些星团的第一个版本。但我们还没完。当我们到达第一个版本的聚类时,质心被移动到分配给每个质心的点组的绝对中心。发生欧几里德距离的重新计算,并且在给定点现在更接近备选质心的情况下,它被相应地分配。同样的过程发生,直到质心达到稳定,点不再被重新分配。分配给给定质心的点的组合构成了每个聚类。

# 让我们建立我们的第一个模型

# 开始一点探索

对于这个分析,我们将使用我前面提到的经典虹膜数据集。这个数据集被一次又一次地用来教授聚类的概念。埃德加·安德森收集了三种鸢尾的萼片和花瓣的长度/宽度数据。如果你对这方面的更多信息感兴趣,查看维基百科的解释([https://en.wikipedia.org/wiki/Iris_flower_data_set](https://en.wikipedia.org/wiki/Iris_flower_data_set))

# 快速 EDA

head(iris)


![](https://gitee.com/OpenDocCN/towardsdatascience-blog-zh-2020/raw/master/docs/img/94116e93df16b89ef05b32862686a79f.png)

glimpse(iris)


![](https://gitee.com/OpenDocCN/towardsdatascience-blog-zh-2020/raw/master/docs/img/85197b78e61eb1f5575f64bbd7a1ee6d.png)

我们将在散点图中显示花瓣的长度和宽度,并用颜色覆盖物种。

ggplot(iris, aes(x = Petal.Length, y = Petal.Width, color = factor(Species))) +
geom_point()


![](https://gitee.com/OpenDocCN/towardsdatascience-blog-zh-2020/raw/master/docs/img/f461de0e639e940b0a36fd3ea4f7c0f4.png)

为了好玩,我们再做几个不同的组合。

ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = factor(Species))) +
geom_point()


![](https://gitee.com/OpenDocCN/towardsdatascience-blog-zh-2020/raw/master/docs/img/8975064d0927ef0ff27438adec28ab4e.png)

ggplot(iris, aes(x = Sepal.Length, y = Petal.Length, color = factor(Species))) +
geom_point()


![](https://gitee.com/OpenDocCN/towardsdatascience-blog-zh-2020/raw/master/docs/img/d6f299b6778eecf80cfa8c469d68bca2.png)

为了简洁起见,我们可以对每一个变量组合详尽地进行同样的练习;我们会继续。

# 构建我们的第一个聚类模型

set.seed(3)
k_iris <- kmeans(iris[, 3:4], centers = 3)


当我们将种子设置为一个给定的数字时,我们确保可以重现我们的结果。

我们调用 kmeans 函数并传递相关的数据和列。在这种情况下,我们使用花瓣长度和宽度来构建我们的模型。我们宣布三个中心,因为我们知道有三个不同的物种。

如果你调用你的集群模型。您将得到类似如下的输出:

![](https://gitee.com/OpenDocCN/towardsdatascience-blog-zh-2020/raw/master/docs/img/b8cb8f6de7c727ce9178dcad2736af0c.png)

值得强调的几件事:

你会看到一些有用的信息:

*   簇的数量,先前由“中心”参数确定
*   跨自然确定的聚类的每个值的平均值。
*   “在聚类平方和内”-这表示每个点和聚类质心之间的绝对距离
*   可用组件——在这里,模型提供了一些其他的信息。我们将很快利用“集群”组件!

# 性能评价

在这里,我们允许一种无监督的机器学习方法来识别我们的数据中自然出现的群体,但我们也可以访问实际的物种;因此,让我们来评估算法的性能!

一个非常简单的方法是查看一个包含物种和指定集群的表格。在这里,您将看到我们将引用模型对象,并通过记录调用确定的集群。

table(k_iris c l u s t e r , i r i s cluster, iris cluster,irisSpecies)


![](https://gitee.com/OpenDocCN/towardsdatascience-blog-zh-2020/raw/master/docs/img/568ce4a6a07dd7417b67d4163c952540.png)

在这里我们可以看到所有的刚毛藻都被归为一类,没有其他的物种加入到同一个类中。对于 versicolor,我们可以看到 kmeans 准确地捕获了簇 3 中 48/50 的 veriscolor 和簇 1 中 46/50 的 virginica。

我们可以很容易地使用来自`dplyr`库的`mutate`函数将这个分类分配给我们的 iris 数据集

iris <- mutate(iris, cluster = k_iris$cluster)


现在让我们重新创建我们的第一个散点图,把物种换成集群

ggplot(iris, aes(x = Petal.Length, y = Petal.Width, color = factor(cluster))) +
geom_point()


![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fgitee.com%2FOpenDocCN%2Ftowardsdatascience-blog-zh-2020%2Fraw%2Fmaster%2Fdocs%2Fimg%2F47a9f54764e6db1f7bdbd7d9a185fc7c.png&pos_id=img-gVGE3Mvu-1728232027083)

上面我们可以看到这两个数据点基于其物种的自然分组的几乎相同的表示。

我们当然可以测试各种变量组合,以达到更好的近似每一种鸢尾,但现在你有基本的工具需要这样做!

# 结论

在短短的几分钟内,我们已经了解了 Kmeans 集群的工作原理以及如何实现它。

*   聚类是一种无监督的学习方法
*   Kmeans 是最流行的聚类技术之一
*   k 是簇的预定数量
*   该算法实际上是如何工作的
*   如何创建我们自己的集群模型

我希望这篇关于 Kmeans 实际应用的快速帖子对您应用该技术有所帮助。

祝数据科学快乐!

# 数据科学家的工具包

> 原文:<https://towardsdatascience.com/a-data-scientists-tool-kit-ecf9eda285ad?source=collection_archive---------10----------------------->

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fgitee.com%2FOpenDocCN%2Ftowardsdatascience-blog-zh-2020%2Fraw%2Fmaster%2Fdocs%2Fimg%2F3efce17972738fe59a2fcca019677a99.png&pos_id=img-9cFfiLv1-1728232027083)

由[谷仓图片](https://unsplash.com/@barnimages?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)在 [Unsplash](https://unsplash.com/s/photos/tools?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) 上拍摄

## 数据科学的基本工具

数据科学家的主要角色是将机器学习、统计方法和探索性分析应用于数据,以获取见解并帮助决策。编程和计算工具的使用对这一角色至关重要。事实上,许多人用这句名言来描述这个领域。

> 一个**数据科学家**是在统计**方面**比任何软件工程师**更好**并且在软件工程**方面**比任何统计学家**更好**的人****

如果您正在开始学习数据科学,或者想要提高现有技能,那么很好地了解有效履行这一职责所需的工具是至关重要的。

用于数据科学的 Python 在过去的十年中逐渐流行起来,现在是该领域从业者最流行的编程语言。在下面的文章中,我将概述数据科学家使用的核心工具,主要集中在基于 python 的工具上。

## **数字价格**

NumPy 是一个强大的库,用于使用 python 执行数学和科学计算。您会发现许多其他数据科学库需要它作为一个依赖项来运行,因为它是基础科学包之一。

该工具作为一个 **N 维数组**对象与数据交互。它提供了操纵数组、执行数组运算、基本统计和常见线性代数计算(如叉积和点积运算)的工具。

## 熊猫

熊猫库简化了 python 中数据的操作和分析。Pandas 使用两种基本的数据结构。分别是**系列**,一维标签数组,和**数据帧**,二维标签数据结构。Pandas 包有许多工具可以从各种来源读取数据,包括 CSV 文件和关系数据库。

一旦数据作为这些数据结构中的一种可用,pandas 就提供了一系列非常简单的功能来清理、转换和分析数据。其中包括处理缺失数据的内置工具、简单的绘图功能和类似 excel 的数据透视表。

## SciPy

SciPy 是另一个核心科学计算 python 库。这个库是为了与 NumPy 数组交互而构建的,并且依赖于 NumPy 提供的许多功能。然而,尽管要使用这个包,您需要安装并导入 NumPy,但是不需要直接导入功能,因为这是自动可用的。

Scipy 有效地建立在 NumPy 中可用的数学功能之上。NumPy 提供非常快速的数组操作,而 SciPy 处理这些数组并支持高级数学和科学计算的应用。

## sci kit-学习

[Scikit-learn](https://scikit-learn.org/stable/user_guide.html) 是一个用户友好的、全面的、功能强大的机器学习库。它包含将大多数机器学习技术应用于数据的功能,并且对每种功能都有一致的用户界面。

该库还提供了用于数据清理、数据预处理和模型验证的工具。它最强大的功能之一是机器学习管道的概念。这些流水线使得机器学习中的各种步骤,例如预处理、训练等等,能够被链接在一起成为一个对象。

## 克拉斯

[Keras](https://keras.io/) 是一个 python API,旨在为神经网络的工作提供一个简单的接口。Tensorflow 等流行的深度学习库因不太用户友好而臭名昭著。Keras 位于这些框架之上,提供了一种友好的交互方式。

Keras 支持卷积和递归网络,支持多后端,可以在 CPU 和 GPU 上运行。

## Matplotlib

Matplotlib 是 python 中的基本绘图库之一。许多其他流行的绘图库依赖于 matplotlib API,包括 pandas 绘图功能和 Seaborn。

Matplolib 是一个非常丰富的绘图库,包含创建各种图表和可视化的功能。此外,它还包含创建动画和交互式图表的功能。

## Jupyter 笔记本

Jupyter 笔记本是一个交互式 python 编程接口。在笔记本环境中编写 python 的好处在于,它允许你直接在程序中轻松地呈现可视化、数据集和数据摘要。

这些笔记本也是分享数据科学工作的理想选择,因为它们可以通过包含直接与代码和可视化一致的标记文本来进行高度注释。

## Python IDE

Jupyter 笔记本是为数据科学编写代码的有用地方。然而,在很多情况下,需要将代码编写到可重用的模块中。如果您正在编写代码以将机器学习模型投入生产,情况尤其如此。

在这些情况下,IDE(集成开发环境)是有用的,因为它们提供了许多有用的功能,如集成 python 风格指南、单元测试和版本控制。我个人使用 PyCharm,但也有很多其他可用的。

## 开源代码库

[Github](https://github.com/) 是一个非常流行的版本控制平台。数据科学的一个基本原则是,代码和结果应该可以在未来的某个时间点被自己或他人复制。版本控制提供了一种跟踪和记录在线工作更改的机制。

此外,Github 支持安全的项目协作形式。这是通过一个人克隆一个分支(实际上是您的项目的副本),在本地进行更改,然后在将它们集成到项目中之前将它们上传以供审查来实现的。关于 Github 的数据科学家入门指南,请参见我之前的文章[这里](/5-tools-for-reproducible-data-science-c099c6b881e5)。

本文简要介绍了数据科学工作的核心工具包。在我的下一篇文章中,我将介绍如何设置您的计算机以进行有效的数据科学工作,并将更详细地介绍这些工具和其他工具。

感谢阅读!

我每月都会发一份简讯,如果你想加入,请点击此链接注册。期待成为您学习旅程的一部分!

# 数据团队的产品是决策

> 原文:<https://towardsdatascience.com/a-data-teams-product-is-decisions-bbd7a6b4cfbe?source=collection_archive---------41----------------------->

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fgitee.com%2FOpenDocCN%2Ftowardsdatascience-blog-zh-2020%2Fraw%2Fmaster%2Fdocs%2Fimg%2Fd30d40084f01e6a7ce06e68c7f0e3dd9.png&pos_id=img-x5BKhl7Q-1728232027083)

弗兰基·查马基在 [Unsplash](https://unsplash.com?utm_source=medium&utm_medium=referral) 上拍摄的照片,经作者许可编辑

# 数据团队不是内置的

对于大多数不以数据为主要产品的公司来说,大多数数据团队都不是“内置”的。

通常会有一个团队负责销售和分销(销售、营销、增长、运营),一个团队负责产品采购或开发(产品、工程),以及一般行政管理(财务、领导、人力资源)。

当公司开始考虑数据团队的概念时,他们已经达到了一定的规模。

这并不意味着数据团队没有实际用途,只是意味着在初创公司或大公司中发现自己是数据第一人的人通常会遇到这样的问题,要么找到他们或他们的团队可以负责的领域,要么证明业务的相关性或附加值。

我发现非常有用的一件事是让你的数据团队的产品围绕**决策**。

# 数据团队的产品是决策

无论数据工作的类型在数据工程、分析、商业智能或建模之间的光谱中处于什么位置,数据团队的产品都不是上述内容,而是决策。

在 First Circle,我们团队的目标是确保**所有决策,无论是战略决策还是运营决策,都通过数据得到增强或自动化。**

# 决策的类型

有两种类型的决策通常是数据团队的目标:(a)定制的、奢侈的战略决策,以及(b)大规模生产的、可重复的、快速的运营决策。

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fgitee.com%2FOpenDocCN%2Ftowardsdatascience-blog-zh-2020%2Fraw%2Fmaster%2Fdocs%2Fimg%2F5826d0949d1997d3b056ea7e75e005c4.png&pos_id=img-oBbd1GDt-1728232027084)

作者照片

# 战略决策

战略决策是奢侈的、定制的和手工的决策;不常做出但影响很大的决策。有很大的不确定性,不太可能会有频繁的反馈循环。为了增强这些决策,人们将受益于商业思维、沟通技巧和从有限的数据中提取信息的能力(高度定制的线性模型,或贝叶斯技术)。

战略决策的例子包括产品/市场扩张、预算和人员规划、竞争分析、合并和收购。

# 运营决策

运营决策是大规模生产的、可重复的决策,一天要做成百上千次。它们单独来看可能没有那么大的影响力,但是庞大的数量也使得优化这类决策变得非常重要。为了节省成本,运营决策背后的决策系统通常是算法,需要机器学习、数据科学和强大的数据工程来生产系统。

运营决策的例子是任何每笔交易的决策,如银行的个人贷款授权算法、拼车公司的司机调度算法或电子商务公司的推荐算法。

进入数据科学领域的个人通常只考虑运营决策,但如果数据团队是唯一处理数据的团队,那么他们必须同时考虑这两种决策,这一点至关重要,因为成功运营企业需要两种决策都由数据驱动。

# 在数据团队的路线图中考虑这两种类型

在设计数据团队的路线图时,我发现意识到两种类型的“产品”之间的差异并确保组合适合业务非常重要。

在运营决策上花费太多可能意味着实现第一个价值需要漫长的努力,因为必须进行大量的数据收集和实验。

在战略决策上花费太多可能意味着你的公司实际上没有从数据中认识到真正的技术价值,然后你将像传统公司一样运营,只是对他们的信息稍微聪明一点。

更糟糕和更常见的是混淆两者;将战略决策视为运营决策,反之亦然。我见过很多这样的情况,人们使用随机森林变量重要性进行一次性决策(“洞察”),或者人类在流程中的角色只是按按钮,并不实际应用任何判断(很容易自动化)。

我的建议是把这些放在一块板上,并在两个桶中突出高优先级的项目。这个练习应该与你的团队的计划周期一起完成。

在未来的新闻稿中,我将讲述如何组建一个团队,以整体的方式解决这些问题,并避免与许多新数据团队采用的[“pin factory”模型](https://multithreaded.stitchfix.com/blog/2019/03/11/FullStackDS-Generalists/)相关的常见陷阱。

*最初发表于*[T5【https://tjpalanca.com】](https://tjpalanca.com/posts/2020-10-11-data-team-value/)*。*
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值