TowardsDataScience 博客中文翻译 2019(六)

原文:TowardsDataScience Blog

协议:CC BY-NC-SA 4.0

3 本机器学习书籍帮助我提高了水平

原文:https://towardsdatascience.com/3-machine-learning-books-that-helped-me-level-up-a95764c458e3?source=collection_archive---------16-----------------------

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

Source: Pixabay

There is a Japanese word, tsundoku (積ん読), which means buying and keeping a growing collection of books, even though you don’t really read them all.

我觉得我们开发者和数据科学家特别容易掉进这个陷阱。就我个人而言,我甚至收藏书签:我手机的 Chrome 浏览器有太多打开的标签,计数器被替换成了“😄”表情符号。

在我们大多数人经历的那种对阅读和学习的热情中,我们通常会以失去而告终,不知道下一本书该拿哪本。这就是为什么今天我会给你一个非常的短列表:就 3 本机器学习的书,这样你就不会把它标上书签就忘了。

在我作为一名数据科学家的职业生涯的不同阶段,每本书都给了我很大的帮助,尤其是在我担任机器学习工程师的时候。

书来了!

O’Reilly:使用 Python 从零开始研究数据科学

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

我对这本书有很深的个人感情,因为这本书让我找到了工作。没错!在拿起这本书之前,我对数据科学几乎一无所知,甚至不知道什么是数据科学。

我确实有很强的概率和统计背景,并且知道足够多的 Python 来保护自己。然而,我错过了它实用的一面。

这本书为我做了很多事情。它:

  • 向我展示了如何用 Python 高效而优雅地处理数据(遵循 Python 的良好实践**)。**
  • 教我如何从零开始实现最简单的机器学习算法
  • 向我展示了数据科学家的日常工作可能是什么样的。
  • 教我如何清晰地向他人传达我的结果

如果您是数据科学社区的新手,我衷心推荐您使用它。它将为您提供成为一名高效数据科学家所需的大多数主题的清晰概述。

它还将展示 Python 最常用的库,并向您展示大量的惯用代码,这总是一个优点。

下面是亚马逊上 数据科学从头开始 的链接。

斯普林格:统计学习导论

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

这本书是我目前为止找到的最全面的机器学习书籍。我从中学到了很多,从无监督学习算法,如 K 均值聚类,到监督学习算法,如提升树

如果你已经在这个领域工作了,第一章可能会感觉有点太入门了(至少我的经验是这样)。然而,他们也总结了许多你以前可能没有以如此有条理的方式学到的东西。

然而,后面的章节是我认为这本书真正闪光的地方。它对随机森林、提升树和支持向量机的解释非常准确。

以下是您可以从统计学习简介中学到的一些主题:

  • 回归监督学习算法:从线性回归SVM基于树的方法。
  • 无监督学习技术:尤其是聚类,包括 K-Means 算法。
  • 抽样方法和其他通用机器学习核心概念
  • 指标准确度、召回率、精确度等的含义、优缺点。

我认为这本书是我今年迄今为止最好的一本书,它使我成为一个更全面的数据科学家。如果你有更多的经验,但是想要打磨你的棱角,我推荐你。这也是一本非常好的参考书,放在你的书架上。

还展示了一切在 R 中的实现,我没发现特别有用,但也没什么坏处。您可能会从 SciKit learn 中导入大部分代码。

和以前一样,这里有一个亚马逊上的斯普林格统计学习介绍的链接。

Goodfellow,Bengio 等人的深度学习。

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

这本书每次打开都让我神魂颠倒。我会第一个承认我没有真正从头到尾读过它。还没有。
它在列表中垫底的唯一原因是因为它非常具体的范围:人工神经网络深度学习

然而,它的第一章,概述了深度学习的前身及其不同之处,然后解释了深度学习如何工作,非常精彩。

它甚至从解释你在学习深度学习之前需要知道的一切开始,整个章节都致力于线性代数**、概率信息论以及数值计算方法。**

接下来的几章,我只是读了一部分,当你需要更深入地研究一个特定的神经网络架构时,它们会成为一个很棒的参考。

它们包括对卷积神经网络和递归神经网络的深入解释,以及许多正则化或优化方法。

第三部分也是最后一部分,围绕着尖端技术,解释了生成模型自动编码器和许多其他有趣的算法。将它们添加到您自己的工具包中可能会给您带来很大的提升!

这本书的作者是目前机器学习领域的摇滚明星。他们中的一个人甚至最近获得了图灵奖,所以我想不出更好的人来教这个学科。

如果你对深度学习这本书感兴趣,这里有一个亚马逊链接。

结论

我从一个广泛的,介绍性的书到一个先进的,具体的书。

这些机器学习书籍中的每一本都对我的职业生涯产生了深远的影响,在某种程度上,也影响了我看待世界的方式。

我真的希望至少其中一些能对你的生活产生同样的积极影响!

如果你已经读过,或者正在读,请在评论中告诉我你对它们的看法!我很乐意进一步讨论它们中的任何一个,尤其是深度学习这本书。

如果你有兴趣,我们也可以在 Twitterdev.toMedium 上讨论。
想听听大家的意见!

(小免责声明:所有这些链接都是亚马逊附属链接,这意味着如果你买了这些书,我会得到一小笔佣金。然而,我只会回顾我真正读过的书,并且在现实生活中真诚地向人们推荐过的书)

原载于 2019 年 4 月 28 日https://striking loo . github . io

Spark 中的 3 种并行化方法

原文:https://towardsdatascience.com/3-methods-for-parallelization-in-spark-6a1a4333b473?source=collection_archive---------2-----------------------

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

Source: geralt on pixabay

提升数据科学任务的速度

Spark 非常适合扩展数据科学任务和工作负载!只要您使用 Spark 数据框架和操作这些数据结构的库,您就可以扩展到分布在集群中的大规模数据集。然而,在某些情况下,库可能无法用于处理 Spark 数据帧,因此需要其他方法来实现 Spark 的并行化。本文讨论了在 PySpark 中实现并行化的三种不同方式:

  1. 原生 Spark: 如果您使用 Spark 数据帧和库(例如 MLlib),那么您的代码将由 Spark 进行并行化和原生分发。
  2. 线程池:多处理库可以用来运行并发 Python 线程,甚至可以用 Spark 数据帧执行操作。
  3. **Pandas UDF:**Spark 中的一个新特性,支持在 Spark 环境中对 Pandas 数据帧进行并行处理。

我将使用 Boston housing 数据集作为样本数据集,提供在 PySpark 中实现并行性的每种不同方法的示例。

入门之前,it;在 Spark 中区分并行和分布是很重要的。当一个任务在 Spark 中被并行化时,这意味着并发任务可能在驱动节点或工作节点上运行。如何在集群中的这些不同节点之间分配任务取决于您使用的数据结构和库的类型。Spark 中有可能没有分布的并行,这意味着驱动程序节点可能执行所有的工作。这种情况发生在我下面讨论的 scikit-learn 线程池的例子中,如果可能的话应该避免。当一个任务分布在 Spark 中时,这意味着被操作的数据分散在集群中的不同节点上,并且任务是并发执行的。理想情况下,您希望创作并行和分布式的任务。

本教程中给出的例子的完整笔记本可在 GitHub 上获得,笔记本的渲染图可在这里获得。我使用 Databricks 社区版编写了这个笔记本,之前在我的 PySpark 介绍文章中也提到过使用这个环境。

单线程

在展示 Spark 中的并行处理之前,让我们从基本 Python 中的单节点示例开始。我使用波士顿住房数据集建立了一个回归模型,使用 13 种不同的特征来预测房价。下面的代码显示了如何加载数据集,并将数据集转换为 Pandas 数据框。

Loading the Boston housing data set

接下来,我们将数据集分成训练组和测试组,并将每个组的特征从标签中分离出来。然后,我们使用 LinearRegression 类来拟合训练数据集,并为测试数据集创建预测。下面代码片段的最后一部分显示了如何计算实际房价和预测房价之间的相关系数。

Building a regression model with scikit-learn

我们现在有一项任务需要并行处理。对于本教程,并行化任务的目标是同时尝试不同的超参数,但这只是使用 Spark 可以并行化的任务类型的一个例子。

天然火花

如果您使用 Spark 数据帧和库,那么 Spark 将本机并行化和分布您的任务。首先,我们需要将 Pandas 数据框转换为 Spark 数据框,然后将要素转换为 MLlib 所需的稀疏矢量表示。下面的代码片段显示了如何对住房数据集执行这项任务。

Converting the data frame from Pandas to Spark and creating the vector input for MLlib

一般来说,在将数据转换成 Spark 之前,最好避免将数据加载到 Pandas 表示中。而是使用 spark.read 等接口将数据源直接加载到 spark 数据框中。

既然我们已经准备了 Spark 格式的数据,我们可以使用 MLlib 来执行并行拟合和模型预测。下面的代码片段显示了如何实例化和训练一个线性回归模型,并计算估计房价的相关系数。

Building a regression model with MLlib

在 Databricks 环境中对 Spark 数据框进行操作时,您会注意到单元格下方显示了一个任务列表。该输出表明任务正在被分配给集群中的不同工作节点。在单线程示例中,所有代码都在驱动程序节点上执行。

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

Spark jobs distributed to worker nodes in the Cluster

我们现在有一个并行的模型拟合和预测任务。然而,如果我们还想同时尝试不同的超参数配置呢?您可以手动完成这项工作,如下两节所示,或者使用在 Spark 中本地执行这项操作的 CrossValidator 类。下面的代码显示了如何使用交叉验证来尝试不同的弹性网络参数,以选择性能最佳的模型。

Hyperparameter tuning using the CrossValidator class

如果 MLlib 拥有构建预测模型所需的库,那么通常可以直接并行化任务。但是,您可能希望使用不包含在 MLlib 中的算法,或者使用不直接处理 Spark 数据框的其他 Python 库。这就是线程池和熊猫 UDF 变得有用的地方。

线程池

不使用 Spark 数据帧而在 Spark 中实现并行的方法之一是使用多处理库。该库提供了一个线程抽象,您可以使用它来创建并发执行线程。但是,默认情况下,所有代码都将在驱动程序节点上运行。下面的代码片段显示了如何创建一组并行运行的线程,它们是随机森林的不同超参数的返回结果。

Using thread pools for parallelizing hyperparameter tuning

这种方法通过在线程池上使用 map 函数来工作。map 函数将 lambda 表达式和值的数组作为输入,并为数组中的每个值调用 lambda 表达式。一旦所有线程完成,输出显示每个线程的超参数值( n_estimators )和 R 平方结果。

[[10, 0.92121913976894299],  
 [20, 0.92413752558900675],  
 [50, 0.92705124846648523]]

以这种方式使用线程池是危险的,因为所有的线程都将在驱动程序节点上执行。如果可能的话,在使用线程池时最好使用 Spark 数据帧,因为这样操作将分布在集群中的工作节点上。使用线程池的 MLib 版本如下例所示,它将任务分配给工作节点。

Using thread pools with MLLib

熊猫 UDF

Spark 中支持并行处理的新特性之一是 Pandas UDFs。使用此功能,您可以将 Spark 数据框划分为较小的数据集,这些数据集被分发并转换为 Pandas 对象,在这些对象中应用您的函数,然后将结果合并回一个大的 Spark 数据框。本质上,Pandas UDFs 使数据科学家能够使用基本的 Python 库,同时获得并行化和分布的好处。我在我的 PySpark 介绍帖子中提供了这个功能的例子,我将在 2019 年 Spark 峰会上展示【Zynga 如何使用功能。

下面的代码显示了使用 scikit-learn 时如何执行并行化(和分布式)超参数调整。该脚本的第一部分获取波士顿数据集并执行交叉连接,从而创建输入数据集的多个副本,并向每个组附加一个树值( n_estimators )。接下来,我们定义一个 Pandas UDF,它将一个分区作为输入(这些副本中的一个),并作为结果转换一个 Pandas 数据帧,指定被测试的超参数值和结果( r 平方)。最后一步是执行并行计算的 groupby 和 apply 调用。

Parallelizing scikit-learn with Pandas UDFs

使用这种方法,结果类似于使用线程池的方法,但主要区别在于任务分布在工作节点上,而不是只在驱动程序上执行。示例输出如下:

[Row(trees=20, r_squared=0.8633562691646341), 
 Row(trees=50, r_squared=0.866335129308371), 
 Row(trees=11, r_squared=0.8257884742588874)]

结论

将 PySpark 用于数据科学时,有多种方法可以实现并行。如果可能,最好使用本地库,但是根据您的用例,可能没有可用的 Spark 库。在这种情况下,可以使用线程池或 Pandas UDFs 在 Spark 环境中并行化您的 Python 代码。只是要小心你如何并行化你的任务,如果可能的话,试着分配工作负载。

本·韦伯是 Zynga 的首席数据科学家。我们正在招聘

在数据科学面试中不应该犯的 3 个错误

原文:https://towardsdatascience.com/3-mistakes-you-should-not-make-in-a-data-science-interview-9dc37752c8d0?source=collection_archive---------3-----------------------

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

Pixabay

我作为面试官的经验教训

人们问我很多关于如何找到数据科学工作的问题?或者如何转行或者如何为工作面试而学习?

我的回答大多是做一些mooc,创建一些项目,参与 Kaggle,尝试进入一家初创公司,不要放弃。

但是,每个人都应该了解一些关于数据科学工作的事情。

数据科学工作涉及大量的来回沟通,并涉及许多人的处理技能。因此,即使你没有意识到,你也会在无意中被测试这些技能。

有时候你可能会觉得——我是一个程序员,让我平静地编码吧。或者我的行为有什么关系?关键是确实如此。

这篇文章解释了人们在数据科学面试中犯的一些最严重的错误,这样你就不会重复这些错误。

1.失去你的权利

这就是我在数据科学中常说的生存偏差

所以,你想成为一名摇滚明星数据科学家。也许在蓬勃发展的行业找份工作。HBR 确实说过将会出现数据科学家短缺的情况,而你觉得你正是这份工作的合适人选。

我现在确实接受了很多采访,我看到很多人遭受生存偏见。

就在不久前,我面试了一个已经在这个领域有一些经验的人。让我们叫他安迪。我问了安迪一个简单的数学问题。 这是一个数据科学的面试,所以我猜他应该早就料到了。对吗?

他的回答是——

我们有做所有这些的软件包。

我忽略了这点。让它一次性过去。

当被问到一个不同的问题时,他说为什么我要问数学问题?

这件事告诉我,安迪觉得自己有资格。仅仅因为安迪看到很多人进入数据科学,他认为他也应该进入。

安迪不明白的是,对于每一个成功的数据科学家来说,都有很多人没有成功。

安迪看到的都是幸存者。这是一个错误。

2.过度自信效应

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

所以,我最近也面试了 Chris 的数据科学职位。

我从询问他的项目和过去的工作开始。

他自信地解释了他的项目。我们在前 30 分钟谈论了他的各种项目,我非常确信他在团队中有一席之地。

到目前为止,我还没有问太多的技术问题,这就是我开始怀疑的地方。事情是这样的,克里斯会非常自信地解释我问的任何问题,尽管是错误的 。他会试着向我解释他不懂的概念。

我觉得他好像认为我可能不知道自己问题的答案。所以他说什么都行。

而这种情况在面试中出现了两三次。

现在不要误解我的意思,自信是好的。健康的饮食是必要的。但是 自信错了,你就拼了灾难。

我能信任克里斯处理业务吗?如果他对企业犯了错误,或者提出了崇高的主张,但后来没有实现,会发生什么?

过度自信被称为所有认知偏见中最“普遍且具有潜在灾难性”的,人类会成为这些偏见的受害者。它因诉讼、罢工、战争、股市泡沫和崩溃而备受指责。—维基百科

事实上,我更喜欢一个不自信和错误的人。至少那样我会知道去核实我的事实。

3.关键词填充

关键词填充是指在简历中过多地填入他们可能不知道的技能。

这样做的典型借口是— 很多人都这样做。HR 可能不会选我。系统只能这样运作。

你可以称之为不可避免的邪恶。我会称之为你给自己设置了一个失败。

当你这样做时,你可能会偶尔接到面试电话;你的胜算很小,因为我会在你的简历上拷问你。我希望你能很好地了解它。

如果马克把决策树放在他的简历里,马克应该会想到一个围绕它的问题。

或者如果马克说他已经从零开始实现了一个机器学习算法,我期待马克解释算法的本质细节也不会错。

关键是,如果你不知道所有的事情也没关系。从来没有人知道。但是在你的简历上撒谎,你让我的工作变得更容易,因为这种谎言很容易被识破。

结论

在写这篇文章之前我想了很多,因为在这篇文章中我可能听起来有点刺耳。但是我想让人们知道他们的错误是必要的。

在这里,有些人会不同意我如何从这样的小错误中判断一个人。

我想说,面试就是在有限的时间内对一个人做出判断。

此外,许多公司现在除了常规的数据科学轮次之外,还进行行为轮次,而有独创性、有资格或过于自信显然对你没有帮助。

所以,我想说的是,尊重和友善是一个长期的过程,你应该在生活中以此为目标,而不仅仅是在面试室。

这样,你也得到很多练习,你也成为一个更好的人。

PS:所有使用的名称只是占位符,这些是我个人的观点。

网飞、Spotify 和家得宝赢得了 2018 年 Tableau 大会

原文:https://towardsdatascience.com/3-must-see-recorded-sessions-on-data-analytics-75ae83ffe550?source=collection_archive---------20-----------------------

将 TC18 的三个最佳数据分析演示集中在一起。

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

Gary Killian Vectors; Shutterstock

经过 439 场会议的筛选,我找到了 Tableau Conference 2018 (TC18)中我最喜欢的三场演讲。网飞、Spotify 和家得宝是我的赢家!在这篇文章中,我将深入每个演示并提供关键要点。

Tableau 是领先的数据可视化商业智能工具,他们每年都举行会议庆祝一切数据。我认为大部分会议都属于两种情况之一。1)教你如何更好的做 Tableau。2)一家分享他们如何在数据分析领域取得惊人成就的公司。

在这篇文章中,我们将关注第二个方面——公司数据故事。我做了很多很多演示,为你提供最好的。所以你可以残酷地对待你的时间,不要把它浪费在尿壶演示上(见文章结尾)。

此外,为了提高帖子的强度,我会给各种公司颁发假奖。

网飞

主持人:布莱克·欧文 |科学经理&分析

最佳狂欢演讲奖

YouTube 浏览量:932 |时间:54 分钟(包括问答)

Binging on Data: Enabling Analytics at Netflix; TC18; YouTube

他们不仅用他们的原创杀死它,网飞倾向于可靠地上演一场伟大的会议。对于一家不愿分享高水平观众人数的公司来说,他们肯定喜欢在 TC 拉开帷幕。

要点 1: 网飞是大数据重量级冠军,但他们仍然对自己面临的挑战保持谦逊。

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

Binging on Data: Enabling Analytics at Netflix; TC18; YouTube

以我的经验来看,Tableau 在你能够提取数据的时候是最好的。人们不能简单地提取 300 的数据并开始构建仪表板。他们涵盖了许多处理大数据的方法,包括一个名为 druid 的开源产品和一个让员工运行 SQL 查询的内部解决方案,该查询将输出作为 Tableau 数据提取推送到服务器。

对大多数人来说,网飞拥有的数据量绝对是惊人的。有趣的测试——在书上做标记,25 年后给人们看这张幻灯片——可能会像软盘上的空间一样可笑。

尽管他们在大数据方面做得很好,但他们也承认遇到了瓶颈,仍然必须在速度和规模之间做出选择。

关键要点 2: 网飞生活在重数据的初创企业文化中。

测量和实验是这家公司的支柱。大约 10%的员工在专门的数据分析团队工作。大约 50%的员工(5,000 人中的 2,574 人)访问过 Tableau 仪表盘。这是他们的数据分析堆栈和分析生态系统:

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

Binging on Data: Enabling Analytics at Netflix; TC18; YouTube

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

Binging on Data: Enabling Analytics at Netflix; TC18; YouTube

Lumen 和大数据门户是内部解决方案。该演示在大数据门户中占有重要地位(将在下面详细讨论)。

我发现有趣的是,他们所有的数据都是从 AWS 开始的。

关键要点 3: 网飞暗地里是数据治理的忍者

在每一次 Tableau 会议上,都有 50 多个类似于的故事:“每个人都在使用 Excel,然后我们引入了 Tableau,现在公司变得更好了。”TC 的叙述已经变得如此乏味,我几乎决定忽略这些介绍。然而,今年我确实注意到了第二种说法,即“我们的公司是封闭的,每个人都在做自己的事情,到处都是数据和报告,却不知道该相信什么。”**

布莱克提到了用数据解放企业的双刃剑。结果是许多许多的报告和表格。它们像兔子一样繁殖。然而,通过他们的内部解决方案、大数据门户和其他各种努力,他们似乎在这个问题上遥遥领先。

大数据门户允许用户首先搜索公司中所有现有的项目和表格,以查看他们正在寻找的内容是否已经存在。如果没有,他们可以进入第二步,开始编写查询或构建项目。

Spotify

演讲者:斯凯勒·约翰逊 |数据可视化设计师

最佳数据故事奖

YouTube 浏览量:433 |时间:28 分钟

This is Not a Love Song | How Spotify uses Tableau Public; TC18; YouTube

要点 1: Spotify 正在做更多公司需要做的事情。与公众分享很酷的数据故事。

斯凯勒强调了 Spotify 分享的一些很酷的故事,比如当真正的月食经过时,人们会播放关于该地区月食高峰期的歌曲。

关键要点 2: 文本和语言处理需要始终考虑包括表情符号。它们现在是我们语言的一部分。

你知道哪些表情符号最常与你最喜欢的艺术家联系在一起吗?Spotify 将艺术家发布在他们平台上的表情符号转化为游戏。你能猜出这些十大表情横排的艺术家吗?

没有答案

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

Spotify Interests; Tableau Public

带答案

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

Spotify Interests; Tableau Public

是的,我是有争议的,包括 R·凯利。只是觉得表情符号太离谱了。

关键要点 3: 激情胜过多年经验。

对斯凯勒来说,做自己热爱的事情帮助他在 Spotify 找到了梦想中的工作。斯凯勒热爱音乐。斯凯勒在业余时间使用公开的 Spotify API 讲述了惊人的数据故事。最终,Spotify 把他招进了公司,让他成为一名员工。他在演讲开始时提到,他使用 Tableau 才三年。然而,他在 Tableau 公共平台上拥有一些最受欢迎的数据可视化。

家得宝

主讲人:大卫·贝利 |商业智能领袖& 蔡斯·齐曼 |分析和数据科学领袖

最佳规范分析和双关语同时使用奖

YouTube 浏览量:307 |时间:57 分钟(带问答)

Not Tooling Around; YouTube

要点 1: 加强业务关系或反馈回路的一个好方法是通过仪表板。

家得宝拥有一家名为Blinds.com的公司。Blinds.com 实际上并不生产百叶窗。他们的产品有很多供应商。为了建立更好的关系和反馈回路,他们向供应商提供了一个 Tableau 仪表板。

这里的一个要点是,他们提到他们的供应商并不总是最懂技术的。他们有意将 Tableau 仪表板设计成可以轻松地推送到静态 PDF 并像传统记分卡一样共享的东西。显然,能够与一个活动的仪表板进行交互是首选,但是,不能总是期望观众以这种方式与仪表板互动。

关键要点 2: 如果你有一个网站,你应该从你的点击流数据中建模。

Blinds.com 将这个数据集与他们已经知道的关于客户的一切联系起来。这些算法能够指出并发现网站、客户体验的改进机会,或者客户自己是否容易犯错误。

关键要点 3: 归根结底,判断一个模型不是看它的准确性,而是看它对公司的影响。

当该算法选择要审查的订单、预计会有问题的订单时,它会根据业务的预期成本对它们进行排序。

Chase 提到,你可以通过许多不同的 KPI 来判断一个模型,但该模型最重要的事情是降低成本,帮助公司做得更好——所以他们通过再订购概率乘以预期再订购成本来判断他们的模型。这为他们提供了一个业务可以利用的可行指标。

结论

这是我最喜欢和最值得花时间的三次会议。我想继续下去,并删除链接,所以如果你想,你可以探索剩下的 436 个会议。

Tableau 大会 2018 届库

另外,由于我看了很多这样的视频,我想分享一些其他公司的会议,这些会议被考虑但没有通过(但仍然值得一个假奖)

未入围奖项:

强生|最佳实施累奖,*《我们比 Excel 电子表格更好》*故事

Google-Nest |每个人都希望会议被记录下来,但却没有

脸书|在比赛中获得第一名“我来是为了留下深刻印象,但我却看到了小便池的幻灯片(他们是唯一一个参赛的)

波音|最美丽和最丑陋仪表板奖

阿尔伯塔健康|最积极使用停车灯配色方案奖

运行迪士尼|最佳深入挖掘平庸数据奖

波特兰开拓者队|将球队色彩融入每一个可能的场景的奖项

构建数据素养的三个必须

原文:https://towardsdatascience.com/3-musts-for-building-data-literacy-e8a9bb67bc9c?source=collection_archive---------26-----------------------

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

担任数据分析主管几个月后,Alan 和他的团队清楚地看到整个组织缺乏数据驱动的思维。他们向领导者提出发展团队的需求,这些领导者沉浸在数据中,却没有任何处理数据的技能。

但艾伦遇到了领导者和经理的抵制,他们不认为分析和数据驱动的技能是他们责任的一部分。他们认为,分析和见解应该只来自艾伦和他的团队,并认为领导的角色是见解的消费者。此外,实际上,该组织正在努力实现数字化转型目标,而领导者现在不愿意投入时间进行培训。艾伦和他的团队将不得不等待追求他们的愿景。

但是领导们同意给团队一个机会。Alan 会就使用数据分析解决业务问题的优势和基础知识进行短期培训。每个人都将参与其中,然后有机会确定他们将使用数据分析解决的问题。

培训结束后,一些员工有兴趣学习新的分析技能。但对大多数人来说,培训只是造成了领导者的期望与实现期望所需技能之间的不匹配。

员工们在谈论另一种“浪费时间的培训”。

那些在 L&D 的人知道“意识培训”经常被用来获得认同。但是,说实话,这通常只会让人们感到困惑,并对培训产生负面的看法。

发展组织能力或提高绩效没有捷径可走。构建您的数据分析能力也不例外。L&D 领导人需要用正确的方法来引导他们的组织。

以下是构建数据分析“人”能力的三个关键

# 1a学习战略与业务重点,找到大石块****

2017 年 Gartner 报告 显示,60%的数据分析项目失败,因为项目与业务战略不一致或缺乏合适的人才。

了解业务的发展方向,识别大石块,并调整学习结果。高管们希望看到收入、产品和服务以及员工生产率和保留率的提高。

与数据分析领导者合作,将高优先级业务问题分配给可以开始应用数据分析来解决它们的团队。在这些团队中,您会发现渴望学习的早期采用者。您可以与这些团队合作,确定培训需求和结果,并在完全投入某个策略或课程之前进行试验,看看什么最有效。

#2 设计能力本位学习

设计 学习:创造一种体验,让学习者有两个目标——展示表现和展示能力*。***

研究清楚地表明“成功的关键是有效利用能力*(Sanberg,2009) *个人属性和专业技能与技术数据分析技能一样重要,甚至更重要。(桑德伯格和帕蒂尔,2013 年)。随着您的培训计划的发展,为数据分析能力和趋势改进的早期培训队列设定基准。

间隔式学习:设计一种学习体验,让人们在接受培训的过程中使用他们所学的知识,并将其应用到实际问题中。间隔学习让人们在两次会议之间有时间体验使用新技术并获得反馈。它还创造了空间来强化经常被遗忘或误解的知识和概念。

成熟的框架:大部分解题方法都有框架。DMAIC 是流程改进的好例子。对于数据分析来说, BADIR 是一个优秀且经过验证的框架 。它为学习者提供了解决问题的路线图、通用语言和通用工具。它还需要有效的团队合作,这是数据分析中一项关键的个人属性能力。

#3 让它坚持下去:用自己的冲力持续下去

成功孕育成功。但是,每个组织都是不同的,有一些其他策略可以帮助推动和维持大型变更管理工作。

激励员工:徽章或证书形式的认可是很好的激励方式。但是职业发展的潜力才是人们真正想要的。如果“数据分析经验”被列为核心数据分析团队之外的更高级别职位的资格,员工将会注意到这一点,并更有可能在本质上受到激励来培养自己的能力。

衡量成功:度量计划应该从最重要的目标开始,并从那里迭代。培训完成率并不能说明问题。跟踪项目的绩效影响。按功能跟踪能力渗透率。始终讲述培训数据背后的故事,并鼓励组织中的人员贡献他们的故事。

如果您已经准备好开始,请不要错过我们在L&D 领导者的行动手册上的实时分析咖啡馆聊天,以推动内部数据分析能力

与陷阱避免……

不要把重点放在工具上:“有工具的傻子还是傻子”。教 Tableau 和给一个统计考试是好的。但是要看到结果,人们需要练习和重复。这只能通过解决现实世界中的问题来实现。

不要使用 Pinterest: 有一种快速行动的诱惑,比如策划一些免费的 MOOC 课程,或者让内部分析团队一起吃午餐和学习。它最终看起来像一个 Pinterest 板。它缺乏一种连贯的方法,在 48 小时内,人们会忘记 70%他们所听到的,并且从来没有付诸实践。

不要让内部专家负担过重:使用内部专家进行在职辅导,没有考虑到通过更严格的学习来形式化技能的必要性。此外,它不具有可伸缩性。我见过内部专家离开,因为他们花太多时间在失败的培训工作上,而没有足够的时间解决业务问题。

为了成功实现数字化转型,L&D/培训领导者需要推动以能力发展为核心的数据分析学习战略。与您的数据分析主管合作,在培训和业务战略之间建立一致性。设计一种引人入胜的基于能力的培训体验,激发能够自我成长和维持的变革。从小处着手,快速行动,看看什么有效,并使用您自己的数据分析来指明方向。

  • Sanberg,J. 2000,理解工作中的人的能力,管理学院杂志,2000,43.1:9–25
  • 帕蒂尔,T. H .,,达文波特,D. J. (2012)。数据科学家:21 世纪最性感的工作。哈佛商业评论

企业界关于数据科学的 3 个神话

原文:https://towardsdatascience.com/3-myths-about-data-science-in-the-corporate-world-1321c48c4a40?source=collection_archive---------27-----------------------

如何在没有成本、风险或痛苦的情况下将数据科学整合到您的项目中

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

虽然我们可能同意数据科学只是一个朗朗上口的术语,但其潜在的概念有着坚实的基础。数据科学包括用于处理、分析和从信息中提取有用知识的所有方法和技术,主要通过统计学、机器学习和人工智能的手段。虽然现在的重点是机器学习和人工智能,但实际上它作为一种统计分析工具的基本用法让普通用户感兴趣。

早在 50 年代计算机时代开始时,数据分析就已经存在(计算机的第一个非科学应用与人口普查分析和统计有关),并且在过去的 20 或 30 年中得到广泛应用。如果数据分析是商业和企业界的老玩家,为什么它现在如此重要?原因是,现在技术可用性、成本和工具的组合已经收敛到一个可以真正被每个人采用的点。

让我们举一个技术的例子。自 1981 年索尼推出索尼 Mavica 以来,数码相机就一直存在。但直到 90 年代末,数码相机的成本、可用性和可靠性才让大众可以使用它们。

这个转折点已经发生在数据科学上,因为现在这种技术可以以经济高效的方式应用。就工具的成本和可用性而言,当前的技术水平简化了开发和使用,直到采用它是有利可图的。

这些要点乍看起来可能并不明显,人们通常认为数据科学是为复杂和前沿的环境保留的。在你对这个领域有所了解之前,我可以列举三个最常见的误解。

误解一:我的项目/团队不需要数据科学

我们可以发现不同的部门和团队在极其不同的背景下处理和分析数据。不管是销售、营销、工程、运营还是物流。每个人都需要分析他们的数据,从中提取知识,分享和交流这些发现,以改善业务运营。

大多数情况下,使用简单的电子表格来分析数据(这绝对不是正确的工具,尤其是当您处理大量数据时)。拥有计算技能和资源的团队和部门有时可以使用更复杂的工具,如定制编程。

在与技术无关的纯业务部门,一些数据挖掘和商业智能工具一直应用于公司报告的数据。数据分析并不新鲜,它在商业和公司世界中被不断地应用。

数据科学改变了这种方法。现在有了像 Jupyter 笔记本电脑这样的技术,任何计算机技能有限的人都可以有效地处理大量数据。数据展示和图表也更容易生成,曾经为技术含量高、资金充足的部门保留的总成本已经下降到适合每个预算的程度。

焦点不再是报告,而是从数据中获取有用的知识,让团队提供价值而不是报告。

误解二:数据科学是我所在行业不需要的前沿技术

Python 和 Jupyter 笔记本带来的是数据分析的极大简化。Jupyter 笔记本减少了定制分析的所有痛苦,任何具有基本开发技能的人都可以使用更好的环境来分析数据。实际上,使用任何其他方法,包括 BI 工具,都要复杂和昂贵得多。

Jupyter 笔记本大大降低了与数据分析相关的复杂性和成本。在短短几年内,它们已经成为事实上的标准和数据科学的通用语言。

如果在您的团队或项目中,您经常使用电子表格来分析数据,那么很有可能存在整合数据科学的空间。这不仅仅是选择一个新工具的问题,它实际上可以帮助您提供比标准电子表格和商业智能工具更多的价值。

经常发现的一个障碍是,数据科学似乎是专家的专利。媒体充满了复杂的解释和算法,但对于一般的商业用户来说,将简单的统计数据纳入大型数据集并获得探索和操作数据的灵活性的可能性,比更复杂的人工智能算法具有更大的价值。

数据科学对新人来说可能是令人生畏的,尤其是在企业界,但在现实中,它只是一种处理和分析数据的更智能的方法,可以有效地克服所有电子表格在灵活性和性能方面的限制。数据可视化也得到了极大的改善,因为 Jupyter 笔记本在图形方面的灵活性令人震惊,这要归功于 Matplotlib 图形库。

确实,您的团队需要获得一些新技能,但是这些实际上并不比预先使用电子表格中使用的宏和脚本语言难太多。转型后的回报是巨大的。

误解三:我需要建立基础设施,实施和维护成本高昂

现实是,你不需要基础设施(实际上你应该避免它)。虽然您可以在员工电脑或公司服务器上部署本地 Jupyter 笔记本电脑,但这并不是开始数据科学项目的最佳方式。您正在创造一个需要实施、维护和支持的薄弱环境,所有这些都意味着成本。内部部署也无助于专注于核心业务。

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

SaturnCloud.io provides scalable cloud infrastructure for Python DataScience in one click

如上所述,本地部署会带来隐性成本,更糟糕的是,它们不会促进团队合作、协作和数据共享。不要犯错,数据分析是为了迭代,在团队中工作,探索不同的方法来分析和理解数据。这完全是关于协作和迭代。

协作和敏捷性是数据科学项目成功的关键。基础设施必须保持在最低水平。云解决方案非常适合。项目必须是小型的,并且有团队共享的具体目标。

集中部署肯定是可能的(所有涉及的技术都是开源的),但在实施和维护方面,这将带来更大的隐性成本。安全性和备份等问题也需要考虑。我在过去已经这样做了,虽然它是可行的,但它实际上变成了“另一种服务”来维护。

实施数据科学项目的一个更聪明的方法是利用现有的云服务,如 SaturnCloud.io 。我喜欢这项云服务的一点是,只需一次点击就可以部署基础设施,它从零开始促进协作,并允许扩大和缩小我们的项目,这是内部解决方案难以实现的。云服务还消除了处理软件和库依赖、更新、安全和备份的需要。

笔记本可以通过链接共享,甚至可以与第三方、合作者、客户甚至普通大众共享。如果您的项目增长,并且您想要使用您的私有云,您也可以这样做。

云再次让事情变得更简单、更便宜、更快速,因为您可以避免内部基础架构和服务部署的零附加值活动,同时提供一个易于维护的实时环境,这也有助于协作。我非常支持尽可能减少拥有的基础设施,因为经验表明,使用专业基础设施比拥有它更容易、更便宜。

摘要

让您的项目和团队具备数据科学能力比您想象的要容易得多。你不需要基础设施,也不会被互联网上许多文章的复杂性和理论性所吓倒。数据科学就是分析数据,只需使用简单的统计数据就能获得出色的结果。

考虑在你的团队中拥有合适的技能组合,并确保促进协作。Jupyter 笔记本促进迭代,在迭代中,数据被逐步分析,许多不同的线可以被探索和共享。使用云服务将降低隐性成本,确保可用性和灵活性,最重要的是,将从第一天起促进任何数据分析活动所需的协作环境。

尤达宝宝上的 3 次 Numpy 图像变换

原文:https://towardsdatascience.com/3-numpy-image-transformations-on-baby-yoda-c27c1409b411?source=collection_archive---------16-----------------------

互联网已经失去了对小尤达的集体意识,这是有充分理由的。我是说…看看他。

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

我最近在帮助我的一些学生准备他们的 Python 期末考试,并认为在流行的 Python 库 Numpy 中学习一些基本的图像处理会很有趣,使用 baby Yoda 作为我们的源材料。

使用 Numpy 读取图像

首先,我们如何使用 Numpy 读取图像?事实证明,这很简单!假设您的工作目录中有一个名为 baby_yoda.jpg 的文件,下面是您需要的代码。

Read and show an image in Python

我们应该看看我们的小尤达:

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

但是 Python 是如何表示图像的呢?

现在,为了真正理解我们将要做的五种图像转换,我们应该对图像如何在 Python 中表示有一个基本的概念。

一幅图像基本上是一个 大、像素为矩形网格的 。并且,每个像素完全由三个值定义:红色、绿色和蓝色(RGB)。这些值中的每一个都是 0 到 255 之间的整数。该值越高,图像中的颜色就越多。

在一个极端,我们有一个 RGB 值(0,0,0)的像素,这意味着该像素中绝对没有颜色,也就是黑色。在另一个极端,我们有一个具有最大 RGB 值(255,255,255)的像素,这意味着图像中有尽可能多的颜色,也就是白色。你能想象到的每一种颜色都介于两者之间。

如果您的图像大小为 100 像素乘 200 像素,Python 会将整个图像编码成一个三维 Numpy 数组,其尺寸为 100 乘 200 乘 3 。3 对应的是我们之前提到的三个颜色通道。通过发挥这个三维数字阵列的创造性,我们可以对我们的图像进行各种各样的酷的变换!

1.灰度

首先,我们将把小尤达的彩色图像转换成灰度图像。请注意,我们称之为“灰色”的所有颜色都是简单的 RGB 组合,其中红色、绿色和蓝色的值正好是相同的。例如,RGB (60,60,60)是一种灰色,而(200,200,200)是另一种灰色。

嗯……我们如何将一个 RGB 值为(60,100,200)的像素转换成一个灰色像素?一个基本的想法是取三个数字的平均值,然后选择三个数字都是这个平均值的灰色阴影。因此,对于像素(60,100,200),平均值为 120,因此我们将其映射到灰色像素(120,120,120)。

让我们看看如何用代码实现这个结果!

为了解释这里的一些微妙之处:

  • 对于三维数组,有多种方式来解释“取平均值”。例如,我们可能打算对数组中的每个数字取平均值,得到一个数字。我们可能指的是每行的平均值、每列的平均值或每个像素的平均值。因此,我们需要使用“axis”关键字来指定我们想要的平均值。在这种情况下,它是像素的平均值。
  • 一旦我们得到了平均值,我们就需要将这些平均值“堆叠”起来,以创建灰度图像。另一种思考方式是,我们希望将每个像素的红色、绿色和蓝色值设置为该像素的平均值。
  • 注意,任何像素的 RGB 值的平均值可能不是整数,但是 Numpy 希望图像中是整数,所以我们将简单地将灰度图像转换回整数。

而且…如果一切顺利,我们应该会得到仍然可爱的灰度豹宝宝尤达:

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

2。水平/垂直翻转

我们可能还想水平或垂直翻转我们的小尤达。后退一步,让我们看看如何反转一个普通的数字列表。

如果我有list _ of _ num,它们是[1,2,3,4,5],运行以下命令:

数字列表[::-1]

会产生相反的列表:[5,4,3,2,1]。

解释一下 [::-1] ,它是 [0:len(list_of_nums),-1]【T9]的简写,上面写着:

“遍历我的整个列表,步长为-1”,更简单的意思是“向后遍历我的列表”

我们也可以使用这种方便的符号来翻转整个图像。下面是垂直翻转的代码:

Vertically flip an image in Python

由于行是我们的图像(这是一个三维数组)的第一个轴,我们可以简单地对整个图像使用相同的 [::-1] 变换,我们将颠倒所有行的顺序。颠倒行的顺序与垂直翻转图像是一样的,会产生颠倒的婴儿尤达:

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

水平翻转我们的图像也很简单,使用下面的代码:

哇哦。混乱的语法是怎么回事: [:,::-1] 。这也是 [0:numRows,0:numCols:-1] 的简写,意思是“遍历我的所有行,并以相反的顺序遍历我的所有列”。这具有保持行原样的效果,但是翻转列,导致水平翻转:

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

3.模糊图像

最后,让我们来看看一个稍微复杂一点的变形,模糊。

对于图像来说,模糊是一个非常直观的概念。当你的相机没有对准焦点,或者有东西移动得太快,相机无法准确捕捉时,就会发生这种情况。事实证明,我们可以对我们的小尤达图像进行变换,以创造这种模糊效果。

首先,让我们看看数学上“模糊”一个像素是什么意思。在下图中,我们有一个红色的中心像素。我们在像素周围创建一个小方框,用蓝色标出。为了“模糊”中心像素,我们将取较大的蓝色框中所有像素的平均值,并将该平均值设置为等于中心像素的新值。

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

对婴儿尤达图像中的每个像素进行这种变换(除了边界上的像素,因为我们不能创建这些方框),我们使每个像素都包含了附近像素的信息。因此,像素不再是独立的**,而是彼此“模糊”在一起。**

让我们来看看实现这一点所需的代码。

看起来有点吓人!希望这些评论能有所帮助,但总体想法是:

  • 在我们制作的婴儿尤达的灰度版本上工作(为了简单起见)
  • 对于图像中的每个像素,在像素周围定义一个小方框
  • 取该框中所有像素的平均值,并将该值设置为新的像素值
  • 通过将三张模糊图像叠加在一起来重建图像

结果是:

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

有点模糊,但还是很可爱。如果你仔细看,你可以看到图像周围的小边界没有受到模糊的影响。

就是这样!希望你在 Numpy 中学到了一些关于图像处理的知识,并再次爱上了小尤达。

~祝你好运!

你应该更经常使用的 3 个熊猫功能

原文:https://towardsdatascience.com/3-pandas-functions-you-should-be-using-more-often-696b41e8d7ca?source=collection_archive---------3-----------------------

不可否认,熊猫是一个强大的图书馆。如果您是 Python 的日常用户,它可能是您最喜欢的用于数据分析和一些快速可视化的库。

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

Photo by Stan W. on Unsplash

也就是说,人们很容易习惯于熊猫的一些核心概念,而忽略了对其功能的进一步探索。我的意思是,**谁没有重复发明轮子的罪过?**虽然这不一定是一件坏事(因为你确切地知道你的代码应该做什么),但通常有更聪明的方法来达到同样的目的。

今天,我想和你们分享 3 个功能,到目前为止,我没有尽可能多地使用它们,我还想向你们展示我所说的“重新发明轮子”的确切含义。几周前,我写过一篇类似的文章,只与纯 Python 相关。如果你是一个经常重复发明轮子的人,请不要犹豫去看看:

[## 面向数据科学家的 3 个高级 Python 函数

不要重复发明轮子,让你的代码更干净,更易读。

towardsdatascience.com](/3-advanced-python-functions-for-data-scientists-f869016da63a)

好了,说够了,让我们开始研究熊猫吧。

使用的数据集

正如我的许多文章一样,我将使用著名的泰坦尼克号数据集。我相信您知道如何导入它,所以在继续之前,您应该准备好以下内容:

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

我们在同一页吗? 好,我们开始吧。

1.idxmin()和 idxmax()

简而言之,这些函数将返回所需条目的 ID ( 索引位置)。在泰坦尼克号的例子中,也许你想找到最年轻/最年长的人的索引位置。让我们更进一步,你只对那个人的名字感兴趣。

一个典型的程序员方法是重新发明轮子,因为你不知道 idxmin()idxmax() 的存在。这里有一种方法:

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

您基本上是为所需的属性设置子集并返回值。不是最干净的代码,但可能更糟。下面是如何利用前面提到的功能来实现这一点:

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

是的,很明显,结果是一样的,但是代码更短,更清晰。让我们进行下一个。

2.切割()

用最少的话来说,当你想把值装入离散区间时,你应该使用 cut() 。比如泰坦尼克号数据集有这个 年龄 属性,是连续的。在您的分析中,您可能希望计算某个年龄组的存活/死亡比率,而不是作为标量值的年龄。

我甚至不会尝试用这个函数来重新发明轮子,让我们直奔主题。其思路是将 bin列分成 5 个桶:

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

不喜欢那些股票标签? 不成问题:

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

或者你根本不在乎标签什么的,想要简单的整数表示:

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

无论您选择哪一个,您都可以将整个表达式分配给数据框架中的一个新列,并继续您的分析。

3.数据透视表()

数据透视表创建一个电子表格样式的数据透视表作为数据框架。如果你以前使用过 Excel ,我毫不怀疑你使用过它们。不用说,它们可以毫不费力地用 Python 实现。

假设你想知道第三类男性的平均存活率。您可以使用默认的 Pandas 及其过滤功能来获取这些信息:

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

但是如果你想找到男性和女性的平均存活率呢?在所有三种乘客级别中?数据透视表拯救世界。您可以简单地将索引设置为 性别 ,列设置为 Pclass (乘客类),值设置为 幸存 ,然后使用您想要的任何聚合函数,但是让我们坚持使用的含义*😗

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

嗯,那很简单。还有一点需要注意,您还可以为总计添加额外的一行:

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

在你走之前

这三个功能应该会让你走上正轨。最终的目标是花更多的时间去思考什么是最佳的做法,而不是花太多的时间在实现本身上。

每当你觉得你的代码比它应该的要长,使用谷歌来寻找是否有一个更短的方法。很可能已经有一个功能可以做你需要的事情,但是你没有意识到它的存在。

感谢阅读。欢迎在下面分享你的想法和评论。

喜欢这篇文章吗?成为 中等会员 继续无限制学习。如果你使用下面的链接,我会收到你的一部分会员费,不需要你额外付费。

* [## 通过我的推荐链接加入 Medium-Dario rade ci

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

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

数据科学家可以使用 3 种 Python 工具编写高质量的代码

原文:https://towardsdatascience.com/3-python-tools-data-scientists-can-use-for-production-quality-code-604a5e0acf9a?source=collection_archive---------9-----------------------

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

仅仅因为你是数据科学家,并不意味着你不应该写好代码

我对编码的第一次体验是作为一名本科统计学学生使用 S-Plus(R 的前身)。我们的讲师是一位有几十年经验的教授,他教我们如何通过在 S-Plus 控制台上一次一行地键入代码来拟合回归模型。

如果您希望能够在将来的某个时间点重新运行您的代码,您可以将其保存在一个文本文件中,然后剪切并粘贴到控制台中。

直到几年后,在我毕业后的第三份工作中,在完成统计学博士学位后,我才第一次发现编程脚本,以及好代码实际上是什么样子的。

回想起来,我对这种情况的发生感到震惊。然而,通过与我的数据科学家朋友交谈,特别是那些没有软件开发背景的朋友,我的情况似乎并不独特。

不幸的是,许多数据科学家不知道如何编写生产质量的代码。

生产质量代码是这样的代码:

  • 可读;
  • 没有错误;
  • 对异常具有鲁棒性;
  • 高效;
  • 有据可查;和
  • 可复制。

生产它不是火箭科学。

任何足够聪明,能够理解神经网络和支持向量机的人(即大多数数据科学家)肯定能够学习良好的编码实践。

问题是,大多数数据科学家甚至没有意识到,编写生产质量的代码是他们可以也应该学习的事情。

如何编写高质量的代码

在我的文章生产质量数据科学代码的 12 个步骤中,我详细描述了一个简单的过程,数据科学家可以遵循这个过程来准备他们的代码生产。

总之,这些步骤是:

  1. 确定你想要达到的目标;
  2. 构建最小可行产品;
  3. 利用干燥原理减少重复;
  4. 创建并运行单元测试;
  5. 处理异常情况;
  6. 最大化时间和空间效率;
  7. 使变量名和函数名有意义;
  8. 对照样式指南检查您的代码;
  9. 确保再现性;
  10. 添加注释和文档;
  11. 要求进行代码审查;和
  12. 展开。

对于其中的许多步骤,没有真正的捷径可走。例如,构建最小可行产品的唯一方法就是卷起袖子开始编码。然而,在少数情况下,工具的存在可以自动化繁琐的手动过程,使您的生活更加轻松。

在 Python 中,由于 unittest、flake8 和 sphinx 包,这就是步骤 4、8 和 10 的情况。

让我们一个接一个地看一下这些包。

用 unittest 自动化你的错误检查

单元测试用于确保在一系列不同的环境下,组成代码的函数正在做它们应该做的事情。

如果您的代码只包含少量相对简单的函数,那么您可能只需要少量的单元测试,您可以手动运行和检查这些测试。

然而,随着代码规模和复杂性的增加,为了确保广泛的覆盖范围,您需要的单元测试的数量也会增加,手动测试导致的人为错误的风险也会增加。这就是 unittest 包的用武之地。

unittest 包是专门为自动化单元测试而设计的。要通过 unittest 包运行单元测试,只需创建一个类,并将单元测试编写为位于该类中的方法(即函数)。

例如,考虑一个在给定半径的情况下计算圆面积的函数:

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

为了检查这个函数是否按预期工作,您可以创建单元测试来确保这个函数为两个不同的半径值(比如 2 和 0)产生正确的输出。

使用 unittest 包,您可以自动执行这些检查,如下所示:

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

在这个例子中,我把我的测试类称为“TestFunctions”,但是你可以把它称为任何东西,只要这个类有 unittest。TestCase 作为其父类。

在这个类中,我创建了两个单元测试,一个测试 circle_area()适用于半径 2 (test_circle_area1),另一个测试半径 0 (test_circle_area2)。这些函数的名称并不重要,除了它们必须以 test_ 开头并带有参数 self。

代码的最后一行运行测试。

假设所有的测试都通过了,输出看起来会像这样,每一个通过的测试在最上面一行都有一个点。

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

或者,如果您的一个测试失败了,那么输出的顶行将为每个失败的测试包含一个“F ”,并且将提供进一步的输出,给出失败的细节。

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

如果您使用 Python 脚本编写代码(即 py 文件),理想情况下,您应该将您的单元测试放在一个单独的测试文件中,将它们与您的主代码分开。然而,如果您使用的是 Jupyter 笔记本,您可以将单元测试放在笔记本的最后一个单元格中。

一旦你创建了单元测试并使它们工作,无论何时你对你的代码做了任何(显著的)改变,重新运行它们都是值得的。

检查 PEP8 是否符合 flake8

编码风格指南是一个文档,它列出了特定编程语言的所有编码约定和最佳实践。在 Python 中,转到样式指南是用于 Python 代码的 PEP 8 样式指南。

PEP 8 是一个 27 页的文档,所以确保你的代码符合每一项可能是一件苦差事。幸运的是,有一些工具可以帮助你做到这一点。

如果您将代码编写为 Python 脚本,flake8 包将检查是否符合 PEP 8。

安装此软件包后,只需导航到包含要检查的代码的文件夹(filename.py ),并在命令提示符下运行以下命令:

flake8 filename.py

输出将告诉您代码不符合的确切位置。

例如,此输出告诉我们 Python 脚本 2019 08 18 _ Production _ examples . py 包含 6 个不合规的实例。第一个实例在第 1 行第 1 列,其中包“math”已导入但未使用:

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

在 Jupyter 笔记本中,有几个扩展可以确保符合 PEP 8,包括 Jupyterlab-flake8jupyter-autopep8

使用 sphinx 创建专业外观的文档

有没有想过 Python 包的创造者,比如 NumPy 和 scikit-learn,是如何让他们的文档看起来这么好的?

答案是 sphinx,这是一个 Python 包,可以将文档字符串转换成各种格式的文档,包括 HTML、pdf 和 ePub。

它还与 GitHub 和 ReadtheDocs (一个文档托管平台)集成,这样每当您的代码更新被推送到 GitHub 时,您的文档就会自动重建,确保您的文档始终保持最新。

我在编写 Python 包 mlrose 时使用了 sphinx,下面是这个包中包含的一个函数的摘录。注意这个函数顶部的 docstring 被格式化的特殊方式。

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

对这段代码运行 sphinx 会生成以下格式良好的文档:

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

开始使用 sphinx 可能有点困难,但是可以在这里找到关于该主题的优秀教程。

大多数数据科学家不知道如何产生生产质量的代码,但如果你想脱颖而出,那么你就不应该像大多数数据科学家一样。

通过遵循一个简单的 12 步流程并将一些简单的工具集成到您的工作流程中,有可能对您正在生成的代码的质量做出巨大的改进。

您可能永远不会让您的代码达到没有人会抱怨的程度,但至少,您不会因为试图在 S-Plus 控制台中一次一行地拟合一个回归模型而让自己尴尬。

Genevieve Hayes 博士是数据科学家、教育家和人工智能及分析专家,拥有Genevieve Hayes Consulting。你可以在LinkedIn或者Twitter上关注她。她还是 价值驱动数据科学 的主持人,这是一个每月两次的播客,面向希望最大化其数据和数据团队价值的企业。

想要发掘企业数据的价值,但不知道从哪里开始?**下载免费的数据科学项目发现指南。

训练 ML 模型的 3 个快速技巧

原文:https://towardsdatascience.com/3-quick-tips-for-training-ml-models-2a7a95960dbf?source=collection_archive---------28-----------------------

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

Not good.

对于机器学习中每一个胜利的结果,都有数百个不收敛的错误模型。

暴涨的损失函数。异常验证损失。可疑的低培训损失。这些都说明出事了。

有一些漂亮的参考资料可以帮助彻底诊断问题,但这里有三个候选资料会立即浮现在脑海中并不断弹出。

*注意:*这尤其适用于面向图像的任务,但对于一般的 ML 任务仍然有很大的价值。

1.调整频道数量

特征映射是卷积层中的通道数,出现在各种应用中。这将改变单层中使用的内核数量。拥有太多的特征地图会导致过度拟合,因此找到正确的平衡是一件困难的事情。

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

A convolutional layer with two output channels (see here).

2.好好把握学习速度

最初的学习率为训练定下了基调。开始的时候太大,你会反复无常,永远不会安定下来。从小事做起,你将永远不会在第一时间找到任何东西。这当然取决于应用,但在许多情况下,初始学习率为 0.001 或 0.01 都很好。

2a。改变整个学习的速度

研究使用一个时间表来改变整个培训的学习速度。随着时间的推移降低学习速度通常是一个好主意。考虑振荡,指数衰减,三角形衰减。

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

Learning Rate over Training Iterations (source here).

3.看数据

这真的应该是第一条也是唯一一条建议,但这似乎只是常识。看数字和摆弄超参数只会做这么多;你得看数据。如果您正在生成输出,请查看输出。

即使您将图像的像素值打印到命令行,仍然会发现有问题。在规范化、裁剪、旋转和移动的各个阶段之间,很可能有些事情没有按预期进行。

求你了。看数据。每次都很痛苦但很值得。

我放弃 SSIS 转投 Python 的 3 个原因

原文:https://towardsdatascience.com/3-reasons-why-im-ditching-ssis-for-python-ee129fa127b5?source=collection_archive---------1-----------------------

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

Photo by Chris Ried on Unsplash

十多年来,我一直在使用微软的 SQL Server 技术堆栈,虽然我一直非常看好它,但最近我改变了对它的一个关键组件的看法,即SQL Server Integration Services,简称 SSIS。SSIS 是一个非常强大的工具,可以对数据执行提取、转换和加载(ETL)工作流,并且可以与几乎任何格式进行交互。虽然我主要是在将数据加载到 SQL Server 或从 SQL Server 中加载数据的上下文中看到它,但这肯定不是它的唯一用途。

这些年来,我已经编写了很多 SSIS 软件包,虽然我仍然觉得它是您的武库中的一个巨大的工具(在许多情况下,它可能是对技术使用有严格标准的大型企业中唯一可用的工具),但我现在已经决定,出于我将在下面概述的原因,我更喜欢使用 Python 来满足大多数(如果不是全部)ETL 需求。尤其是当 Python 与两个专门为大规模操作和分析数据而设计的模块结合时,即 DaskPandas

Python 是免费和开源的

Python 是一种完全开源的语言,由 Python 软件基金会维护。它和它的大量软件包都是完全免费的,如果你发现一个错误或者需要一个特性,你可以很容易地贡献出底层的源代码。例如,Dask 和 Pandas 在 GitHub 上总共有超过 25,000 次提交和 9,000 次分叉。两者都是非常活跃的项目,背后都有大型的、分布式的、活跃的社区。此外,Python 可以使用其他开源包与几乎任何数据源对话;从 CSV 文件,到卡夫卡,到抓取网站。Python 作为一个整体非常受欢迎并且不断增长,在 Stack Overflow 的 2019 开发者调查中从第七位跃升至第四位。

另一方面,SSIS 要求您许可任何运行它的机器,就像您许可任何其他运行 SQL Server 完整实例的机器一样。因此,如果您想遵循良好的实践,将 ETL 处理卸载到不同于 SQL Server 实例的机器上,那么您必须全额支付该机器的许可费用。假设您能够成功地完成 SQL Server 的复杂许可,请考虑一下:许多 ETL 工作负载都是批处理操作,这意味着它们往往在一天中的预定时间运行,否则就会闲置。你真的想为一天用一次或有时用得更少的东西支付(有时是一大笔)钱吗?虽然 SSIS 是可扩展的,但我还没有看到你在 Python 上看到的那种广泛的开源工具集。

使用像 Dask 这样的工具,Python 天生具有水平可伸缩性

Dask 是专门为处理数据集太大而无法在单个节点的内存中容纳的问题而设计的,并且可以在许多节点上扩展。因此,您可以使用您的组织可能已经使用的工具(如 Kubernetes )根据您的需求轻松扩展您的数据处理环境的规模,而无需编写复杂的代码来跨节点分发数据。我个人用它在我的笔记本电脑上处理了数十亿字节的数据,只使用了内置的本地分布式模型,并且我没有改变我编写数据处理代码的方式。

至少据我所知,SSIS 没有内在的方法在多台计算机上分配处理,至少没有复杂的解决方案,就像在这个 ServerFault 线程上提出的。虽然自 SQL Server 2017 起,SSIS 确实具有横向扩展功能,但这更多地是为了在任务级别分配工作(例如,以分布式方式运行包的各个部分),因此,如果这些单个任务中的任何一个处理大量数据,您仍然会受到限制。

Python 代码本质上是可测试的

正如我的好朋友 Nick Hodges 最近写的那样,对你的代码进行单元测试是很重要的。在处理 ETL 工作流时也是如此;在没有某种人工观察的情况下,您如何确保您的 ETL 过程在给定预期输入的情况下产生正确的输出(或者同样重要的是,当它获得意外数据时如何处理事情)?

Python 有很多有用的单元测试框架,比如 unittest 或者 PyTest 。通过将您的 ETL 过程分解成可消耗的代码单元,您可以轻松地确保预期的行为并进行更改,而不必担心无意中破坏了某些东西。

相比之下,SSIS 没有任何简单的方法来编写单元测试,最常被提及的两个框架要么是不活跃的,要么似乎已经很大程度上转变为专有产品。

底线是:在这个狂热的 SQL Server 粉丝看来,如果你正在开发新的 ETL 工作流,更好的选择是 Python 而不是 SSIS。请注意,SSIS 仍然非常强大,如果您有一个强大的现有团队支持它,并且在 SQL Server 许可方面投入了大量资金,那么当然没有理由对所有这些进行改造。正如我在开始所说的,在许多大型组织中,SSIS(或者 Informatica,举另一个非常流行的专有 ETL 工具的例子)是事实上的标准。尽管如此,鉴于 Python 的爆炸性增长,它显然应该获得一席之地。

作为一名(有抱负的)数据科学家,你应该写博客的 3 个理由

原文:https://towardsdatascience.com/3-reasons-why-you-should-be-blogging-as-an-aspiring-data-scientist-99741da62cbe?source=collection_archive---------27-----------------------

众所周知,博客和内容创作对你的职业生涯有益。在今天的帖子中,我想和你分享我开始写博客后发生了什么变化,以及为什么我在不久的将来不会回头看。

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

Photo by Art Lasovsky on Unsplash

尽管这只是我的观点,我不能说这些观点会因人而异——因为这些只是拥有博客的一些一般好处。

我渴望听到你的想法,所以请在下面分享你的想法和观点。事不宜迟,我们开门见山吧。

1.你会学得更快

一些数据科学主题可能很难理解。当你周围有一些学习资源,并花几天时间浏览这些材料时,你会形成一些基本的理解。如果这是一个与编码相关的主题,不用说,你应该在阅读理论资源的同时编写代码。

接下来发生的是,你跳到下一个感兴趣的话题,随着时间的推移,完全忘记你在第一个话题中学到了什么。 真扫兴。幸运的是,写博客是解决这个问题的好方法。

这个想法是,你给自己几天的时间让一切都完全消化。然后,拿起一张纸(或者笔记本电脑,如果你更喜欢),试着用一种非技术性的方式解释这个话题。有些时候不会完全可能,但尽量避免混淆‘大词’。

问自己以下问题: 如果 a 对这个话题一无所知,我希望别人如何向我解释?

这有两个直接的好处:

  1. 你在帮助你的社区 ( 这将在文章的第二部分讨论)。
  2. 你再给自己一次机会重温这个话题。

这是阿尔伯特·爱因斯坦的一句名言:

“如果你不能简单地解释,那就是你理解得不够好.”

这就是为什么你在写博客的时候应该避免使用大的技术词汇。即使你不理解,也很容易用专业术语来包装你的文章。这很诱人,你认为你会看起来很聪明,但是你的读者很可能会立即关闭他的网络浏览器。

2.伟大的声誉建立者

你知道在你把你的简历发送到一些公司后会发生什么吗?

他们会用谷歌搜索你。

由于周五晚上出了问题,在你躺在公园里不省人事的照片之前,确保有一些有价值的东西出现。好吧,也许我有点反应过度了,但你明白了。

当你写博客的时候,你立刻比拥有相同知识但不写博客的人更有价值。你增加了价值。另一个人没有。在大胆断言一种技术或一种方法比另一种更好的时候,要小心谨慎。它可以是一把双刃剑。

即使你对全职工作不感兴趣,写博客也能帮你获得更多的自由客户。这总是一个双赢的局面,除了在那些罕见的情况下,当你写的东西你一无所知。

3.兼职赚钱

这是一件大事。我不会告诉你我写博客赚了多少钱,因为这些信息与你无关。这取决于你住在哪里。 你会用美元赚取,问题是你会用哪种货币消费?

如果你住在美国,收入可能够支付一个月的房租,如果住在其他地方,可能是几个月的房租。还是新的笔记本电脑,由您决定!

最令人惊奇的事情不是有人愿意为你的观点付费——最令人惊奇的事情是在某种程度上,你被付费来学习你感兴趣的东西。你怎么能拒绝呢?

在你离开之前

我的观点是你应该从今天开始写博客。即使你不擅长,也没有比直接投入学习更好的地方了。如果过了一段时间,你觉得它不适合你,没关系,至少你尝试过了。

如果这篇文章的 10 个读者开始写博客,我绝对肯定至少有 7 或 8 个会在几个月后继续写下去。

如果你担心要花多少时间,我会说大约每周5-7 小时写 3 篇高质量的博客文章。这里不包括学习时间——你会学到与你是否写博客无关的东西,对吗?

给自己几天时间考虑你在这里读到的东西,让一切都沉淀下来。然后做出决定——我相信你会做出正确的决定。

喜欢这篇文章吗?成为 中等会员 继续无限制学习。如果你使用下面的链接,我会收到你的一部分会员费,不需要你额外付费。

[## 通过我的推荐链接加入 Medium-Dario rade ci

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

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

3 数据科学自学资源

原文:https://towardsdatascience.com/3-resources-for-data-science-self-study-b01e5ac983a1?source=collection_archive---------29-----------------------

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

Photo by freddie marriage on Unsplash.

数据科学是当今最热门的领域之一。数字革命创造了成吨成吨的数据。公司、行业、组织和政府每天都在产生大量的数据。对高技能数据科学家的需求只会继续增长。这是投入时间学习数据科学基础知识的最佳时机。

即使你对成为一名数据科学家不感兴趣,学习数据科学的基础知识也是你通过学习一项新技能来重塑自我的绝佳方式。谁知道获得数据科学技能后会有什么机会。要思考的问题是:当数据科学的机会来敲你的门时,你准备好了吗?将具备所需的技能。

对学习数据科学感兴趣的个人经常面临这样的问题:通过自学学习数据科学有哪些资源?

在本文中,我将讨论 3 个可以帮助您掌握数据科学基础的资源。我认为学习数据科学的推荐方式是从在线课程开始。然后,在建立一些背景知识之后,可以开始学习数据科学书籍,以获得更深入和精炼的知识。

本文将讨论的 3 种资源与我在成为数据科学家的过程中使用的资源相同。由于我使用这些资源获得的技能,今天我是出版物 走向 AI 的顶级数据科学作家。我还是一名数据科学教育工作者和顾问。

1。海量开放在线课程(mooc)

edX、Coursera、Udemy、DataCamp 等平台上有那么多数据科学 MOOCs。如果你打算参加这些课程中的一门,请记住,有些 MOOCs 是 100%免费的,而有些则需要你支付订阅费(每门课程可能从 50 美元到 200 美元不等,甚至更多,因平台而异)。请记住,获得任何学科的专业知识都需要大量的时间和精力。所以不要着急。确保如果你决定注册一门课程,你应该准备好完成整个课程,包括所有的作业和家庭作业。一些测验和家庭作业将会很有挑战性。然而,请记住,如果你不挑战自己,你将无法增长你的知识和技能。

我自己已经完成了这么多数据科学 MOOCs,下面是我最喜欢的 3 个数据科学专业。

(一)数据科学专业证书(HarvardX,通过 edX):【https://www.edx.org/professional…

包括以下课程,全部使用 R 教授(您可以免费旁听课程或购买认证证书):

  1. 数据科学:R 基础;
  2. 数据科学:可视化;
  3. 数据科学:概率;
  4. 数据科学:推理和建模;
  5. 数据科学:生产力工具;
  6. 数据科学:扯皮;
  7. 数据科学:线性回归;
  8. 数据科学:机器学习;
  9. 数据科学:顶点

(二)【https://www.edx.org/micromasters…】分析:基本工具和方法(Georgia TechX,通过 edX):

包括以下课程,全部使用 R、Python 和 SQL 讲授(您可以免费审计或购买经过验证的证书):

  1. 分析建模导论;
  2. 数据分析计算导论:
  3. 商业数据分析。

(三)应用数据科学与 Python 专业化(密歇根大学,通过 Coursera):https://www.coursera.org/special…

包括以下课程,全部使用 python 教授(您可以免费旁听大多数课程,有些课程需要购买认证证书):

  1. Python 中的数据科学导论;
  2. 应用 Python 绘图、制图和数据表示;
  3. Python 中的应用机器学习;
  4. Python 中文本挖掘的应用:
  5. Python 中的应用社会网络分析。

为什么我认为上述 3 个 MOOCs 专业是最好的

a. Python 和 R 被认为是大多数数据科学工作清单中提到的前 2 大技术技能(数据科学家最需要的技能)。上面讨论的 3 个专业使用 Python 和 r 教授数据科学。这为您提供了能够使用这两种语言学习和实现数据科学任务的机会。

b. 这些专业化涵盖了相当深度的、以职业为导向的课程,将帮助您发展所需的技能,使您能够应对现实世界的数据科学挑战。你会学到 Python、R、统计学&概率、数据处理、数据转换、数据工程、数据可视化、机器学习、模型建立、模型测试与评估、应用等方面的技能。

c. 这些专业由具有不同背景的数据科学领域的专家教授,如信息系统、生物统计学、计算科学与工程、系统与工业工程、计算机科学和商业分析。这为你提供了一个学习各种方法的好机会。比如 HarvardX 专业证书数据科学专业就是 P rof 教的。Rafael Irizarry 是哈佛大学的生物统计学教授,所以他的课程非常丰富。与此同时,乔治亚理工学院的系统和工业工程教授 Joel Sokol 教授正在讲授 Georgia TechXAnalytics:Essential Tools and Methods****,因此他深入研究了数据科学在航空、医疗保健、体育、能源部门、人力资源管理等领域的大量应用。

2。从教科书中学习

从教科书中学习提供了比你从在线课程中获得的更精炼和更深入的知识。这本书对数据科学和机器学习提供了很好的介绍,代码包括:“Python 机器学习”,作者 Sebastian Raschka 。作者以一种非常容易理解的方式解释了机器学习的基本概念。此外,代码也包括在内,因此您实际上可以使用提供的代码来练习和构建您自己的模型。我个人认为这本书在我作为数据科学家的旅程中非常有用。我会向任何数据科学爱好者推荐这本书。你所需要的是基本的线性代数和编程技能,以便能够理解这本书。还有许多其他优秀的数据科学教科书,如韦斯·麦金尼的《 Python for Data Analysis 》,库恩·约翰逊的《应用预测建模》,伊恩·h·威滕的《数据挖掘:实用的机器学习工具和技术》,艾贝·弗兰克&马克·a·霍尔的《数据挖掘:实用的机器学习工具和技术》等等。

3.中等

Medium 现在被认为是增长最快的数据科学学习平台之一。如果您有兴趣使用该平台进行数据科学自学,第一步将是创建一个中型帐户。您可以创建一个免费帐户或会员帐户。对于免费帐户,每月可以访问的会员文章数量是有限制的。会员账户需要 5 美元或 50 美元/年的月订阅费。从这里了解更多关于成为中等会员的信息:【https://medium.com/membership】。有了会员帐号,你将可以无限制地访问媒体文章和出版物。

媒体上排名前两位的数据科学出版物是面向数据科学的和面向人工智能的。每天都有新的文章发表在 medium 上,涵盖数据科学、机器学习、数据可视化、编程、人工智能等主题。使用 medium 网站上的搜索工具,您可以访问大量文章,这些文章涵盖了从基础到高级概念的各种数据科学主题。****

总之,我们已经讨论了数据科学自学的 3 个重要资源。根据个人背景的不同,学习数据科学基础知识的旅程可能会有所不同,但本文中讨论的 3 种资源将帮助数据科学领域的任何新手掌握基础知识。

以下是一些可能对您有用的附加资源:

从事数据科学职业前需要考虑的 10 个问题

机器学习必备的数学技能

数据科学 101 —包含 R 和 Python 代码的中型平台短期课程

人工智能研究即将遇到麻烦的 3 个迹象

原文:https://towardsdatascience.com/3-signs-that-ai-research-is-about-to-hit-trouble-cb3b29d63d40?source=collection_archive---------17-----------------------

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

Source: Florent Darrault

尽管取得了一些令人印象深刻的成就,以及对未来令人窒息的预测,但感觉人工智能的世界可能有些不对劲。不,这不是另一个关于“我们新的硅胶大师”的帖子。事实上,让我夜不能寐的恰恰相反:

如果你认为人工智能研究的功能是制造智能机器,那么你认为“智能”和“解决问题的能力”是一回事也是情有可原的。软的东西:善良、爱、同情、直觉;可以说是定义真正智力的东西,当然也是让我们保持诚实的东西,并没有得到太多的关注。至少目前,他们在“太难”的篮子里。

我一直认为语言理解领域可以为我们提供两个世界之间的桥梁:完整情感景观的一小部分,但具有有形的意义单元。看看他们遇到的麻烦就知道了。

1.一切都变得太大了

几年来,IBM 一直在享受“沃森”的成功,他们的问答超级计算机赢得了著名的“危险!”2011 年。令人印象深刻,是的,但是你有没有想过这个东西的大小?给你个提示:它放不进你的口袋。

当时,“沃森”实际上是一个由 90 台服务器组成的集群,每台服务器都有 8 个并行运行 4 个线程的内核和 16tb 的内存(是的,内存)。对于外行人来说,这大约是 360 台高规格笔记本电脑和大量额外内存的组合。它也没有运行 Android:专门的硬件必须为它的任务专门编程——在这种情况下,是一个智力竞赛节目。它也有一间卧室那么大。

的确,从那时起,IBM 已经做出了重大改进。沃森现在可以放在你冰箱的底部。但真正的问题是:经过这么多年的研究和数不清的数百万美元,它仍然只做一件事

Jameson Toole 的关于这一点的伟大媒体文章确实让我明白了:就语言理解而言,我们已经到达了收益递减曲线的平坦部分。诚然,正如他所说,改进和效率是可以实现的,但就你和我而言,这些仍然只是为你找到餐馆(如果你幸运的话)或解决简单理解难题(如“谁对谁做了什么”)的机器。

这和我们人类使用语言的方式之间的鸿沟是巨大的。我们真的想象增加更多内核、更多输入、更多层、更多数据和更多能力(让环境见鬼去吧!)就行了?即使我们能做到,如果这项技术被限制在谷歌或 IBM 的服务器机房里,我们怎么能让它变得有用呢?我们一定遗漏了什么。

2.不再有摩尔定律

你可能会认为解决尺寸问题的办法就是等一等,直到我们有了更大、更快的芯片。几年前,你可能是对的。摩尔定律表明,计算能力(以每个芯片上的晶体管数量来衡量)每两年就会翻一番,但是证据是它不再有效。低于一定的尺寸限制,在晶片上安装足够的晶体管变得非常困难,而且没有利润。

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

Moore’s Second Law — the cost to produce smaller transistors also increases exponentially Source: IBS

别忘了,要让人工智能系统赚钱,它们需要广泛可用。是的,GPU 和 TPUs、3D 堆叠等专业技术将允许大玩家继续发展一段时间,但从现在起几年后,这个问题[将开始向便携式设备市场渗透](http://impact of moores law slowing on portable device market),这是赚大钱的地方。

事实上,最大的影响可能是摩尔定律曾经对行业产生的那种“心跳”功能——在两年周期内监管软件、硬件、零售和设计行业的创新。如果开发人员不确定他们需要的硬件是否符合规格,他们可能不太愿意冒险。

3.我们不理解我们试图解决的问题

问自己一个问题:“为什么有些笑话很好笑?”。我也不知道。它有一些规则:时机等等,但真的,就像在晚上画风景一样,喜剧可能有点黑暗的艺术。

假设你想建立一个喜剧人工智能。在当前的范式中,你可能会通过建立几个神经网络来实现这一点,在一周左右的时间里,向它们投掷数十亿人类标记的有趣和不有趣的语句,然后将它们配对成一个“生成对抗网络”。在超级计算机上再训练一周左右,它甚至可能会工作(类似)。

问题是,即使它知道,它也只能从你给它的数据中学习。喂它巨蟒,它会跟你谈论灌木林死鹦鹉,给它看几集《宋飞正传》,你会得到虚无主义和存在主义焦虑。否则就完全不灵活了。如果你想让它适应一个新的环境、背景或受众,你就必须重新开始。

我们也不要忘记,幽默只是我们使用语言的一个方面。如果你想要一个“有同情心”的机器人,它也会面临类似的限制。一次两个?好吧,目前来看,这是疯狂的。

然而,作为人类,我们自然会这样做。我们似乎有一种在这种或那种情况下如何使用语言的本能,却不知道如何使用或为什么使用。我的猜测是,这不仅仅是我们以前见过的事情的重复,而是存在某种真正的自发创造,但深度神经网络的架构不允许这样做。

感觉很重要

在目前的形式下,人工智能对于各种事情来说都是一个非常强大的工具,但语言的使用——尤其是情感语言——不是其中之一。

情感,比如同情和善良,非常重要。他们是将我们凝聚在一起的粘合剂。随着强大的思维机器变得越来越常见,并且更经常地负责决策,我们真的希望它们没有感觉吗?

事实上,事情的现状,这是一个学术问题。我们拥有的最先进的技术还远远不够,而且已经遇到了问题。

我们可能会在这里呆一会儿。

3 个简单的 Python 效率技巧

原文:https://towardsdatascience.com/3-simple-python-efficiency-tips-f7c35b511503?source=collection_archive---------23-----------------------

在这篇文章中,我将分享 3 个 Python 技巧,它们可能会给你的代码带来性能提升。

我们开始吧!

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

source

1.在实体记录中搜索

考虑这样一个场景,我们有一个记录列表,我们需要将 id 的子集与这些寄存器匹配。例如:

records = [
  {"id": 1, "name": "John", "surname": "Doe", "country": "ES"},
  {"id": 2, "name": "Alice", "surname": "Bond", "country": "IT"},
  ...
  {"id": 1000, "name": "Foo", "surname": "Bar", "country": "IN"}
]ids = [1, 2, 50, 70, 87]

我们需要获得由特定 id 识别的不同人的信息。

解决这个问题的一个简单方法是使用嵌套循环:

for id in ids:
  for r in records:
    if id == r[’id’]:
      print(r)

考虑到“records”有 n 个元素,“ids”有 m 个元素,我们正在处理一个 O(m ^ n)时间复杂度的解决方案。此外,假设“ids”表示“记录”中可用的 IDs 的子集(即,m <= n),我们获得 O(n)的最坏情况时间复杂度。

使用以下方法,可以将该解决方案的时间复杂度大大提高到 O(n) + O(m) = O(n):

records = {r['id']: r for r in records}
for id in ids:
  print(records.get(id))

所提出的解决方案对记录列表进行一次迭代,以便创建一个字典,使我们能够在 O(1)时间内检索数据。

2.成员资格检查

当我们想要检查一个元素是否属于一个列表时,另一种常见的情况就会出现。例如,我们想检查 70 是否包含在“ids”中。在 Python 中解决这一问题的常用方法如下:

70 in ids

这种解决方案简洁美观,但效率不高。这个解决方案的时间复杂度是 O(n ),因为它在列表上进行线性搜索。通过将列表转换为集合,我们可以实现 O(1)时间复杂度的成员检查。

sids = set(ids)
70 in sids

请注意,将列表转换为集合需要 O(n)时间,因此如果您只需要执行一次成员资格检查,您可能不会从中受益。但是,如果您需要对多个元素执行这个操作,那么考虑到每个后续操作将花费 O(1)时间,您将获得立竿见影的效果。

3.改进计数器回路

我们通常会发现的第三种情况是需要计算记录列表中某个字段出现的次数。例如,我们可以获取第一个性能提示的记录列表,并尝试计算每个国家的人数。

最直观的方法如下所示:

c = {}
for r in records:
  if r['country'] not in c: c[r['country']] = 0
  c[r['country']] += 1

总而言之,我们将检查当前国家是否已经包含在计数字典中,如果没有,就包含它并用 0 初始化它。然后,我们总是将当前国家的计数器加 1。

但是,请注意,对于每个国家,if 语句只被评估为 True 一次。换句话说,这种情况会一直被评估,并且通常没有任何用处。因此,我们可以采用以下策略:

c = {}
for r in records:
  try:
    c[r['country']] += 1
  except KeyError:
    c[r['country']] = 1

在第二种方法中,我们试图将国家计数器直接加 1。但是,如果这是我们第一次发现这样的国家,就会产生一个 KeyError,因为它不在计数器字典中,执行 except 块的指令。在这种情况下,我们优先考虑最常见的情况,减少执行指令的总数。

用熊猫处理大量数据的 3 种简单方法

原文:https://towardsdatascience.com/3-simple-ways-to-handle-large-data-with-pandas-d9164a3c02c1?source=collection_archive---------4-----------------------

熊猫喜欢吃数据

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

Pandas love eating data

想获得灵感?快来加入我的 超级行情快讯 。😎

熊猫已经成为最受欢迎的数据科学图书馆之一。它易于使用,文档非常棒,功能非常强大。

然而,无论使用什么库,大型数据集总是带来额外的挑战,需要小心处理。

你开始遇到硬件障碍,因为你没有足够的内存来保存所有的数据。企业公司存储高达数百甚至数千 GB 的数据集。

即使你碰巧买了一台有足够内存来存储所有数据的机器,只是把它读入内存也是非常慢的。

但是熊猫图书馆将再次帮助我们。本文将讨论 3 种可以用来减少大型数据集的内存占用和读入时间的技术。我将这些技术用于大小超过 100GB 的数据集,将它们压缩到具有 64 GB(有时是 32GB)RAM 的机器上。

让我们检查一下!

(1)将你的数据分块

CSV 格式是一种非常方便的数据存储方式,既易于书写,又易于阅读。此外,还有一个很好的 pandas 函数read_csv()用于加载以 CSV 格式存储的数据。

但是当你的 CSV 大到内存不足的时候会发生什么呢?

有一个非常简单的熊猫技巧来解决这个问题!我们不会试图一次性处理所有数据,而是将数据分成几部分来处理。通常,这些块被称为

一个块只是我们数据集的一部分。我们可以随心所欲地将这一大块变大或变小。这取决于我们有多少内存。

然后,该过程如下进行:

  1. 整体阅读
  2. 处理大块
  3. 保存块的结果
  4. 重复步骤 1 到 3,直到我们得到所有的块结果
  5. 合并块结果

我们可以使用一个叫做 chunksizeread_csv()函数的便利变量来执行上述所有步骤。chunksize 指的是熊猫一次将读取多少 CSV 行。这当然取决于你有多少内存和每行有多大。

如果我们认为我们的数据有一个非常容易处理的分布,比如高斯分布,那么我们可以一次对一个数据块进行我们想要的处理和可视化,而不会损失太多的准确性。

如果我们的分布有点像泊松分布那样复杂,那么最好在行进之前过滤每个块并将所有的小块放在一起。大多数情况下,您最终会删除许多不相关的列或缺少值的行。我们可以对每个数据块都这样做,使它们变得更小,然后将它们放在一起,在最终的数据帧上执行我们的数据分析。

下面的代码执行所有这些步骤。

(2)丢弃数据

有时,我们会马上知道我们要分析数据集的哪些列。事实上,经常会出现这样的情况,有几个或几个我们并不关心的列,如姓名、账号等。

在读入数据之前直接跳过列可以节省大量内存。Pandas 允许我们指定想要阅读的栏目:

丢弃包含无用信息的列将是您最大的内存节省之一。

我们可以做的另一件事是过滤掉任何缺少值或 NA 值的行。使用dropna()功能最简单:

有几个真正有用的变量我们可以传递给dropna():

  • **如何:**这将允许您指定“any”(如果某一行的任何列是 NA,则删除该行)或“all”(仅当某一行的所有列都是 NA 时,才删除该行)
  • thresh: 设置一个阈值,确定一行需要删除多少 NA 值
  • subset: 选择检查 NA 值时要考虑的列的子集

您可以使用这些参数,尤其是 threshsubset 来具体确定哪些行将被删除。

Pandas 没有像对列那样在读取时实现这一点的方法,但是我们可以像上面那样在每个块上实现这一点。

(3)为每一列设置具体的数据类型

对于许多初学数据的科学家来说,数据类型并没有被考虑太多。但是一旦开始处理非常大的数据集,处理数据类型就变得至关重要。

标准的做法是读入数据帧,然后根据需要转换列的数据类型。但是对于一个大的数据集,我们真的需要注意内存空间。

在我们的 CSV 中可能会有一些列,比如浮点数,它们会占据比实际需要更多的空间。例如,如果我们下载了一个预测股票价格的数据集,我们的价格可能会保存为 32 位浮点!

但是我们真的需要 32 浮动吗?大多数时候,股票是以两位小数指定的价格买入的。即使我们想做到真正的精确,float16 已经足够了。

因此,我们不是用列的原始数据类型读入数据集,而是指定我们希望 pandas 在我们的列中使用的数据类型。这样,我们就不会用完超过实际需要的内存。

这很容易通过使用read_csv()函数中的 dtype 参数来完成。我们可以指定一个字典,其中每个键都是数据集中的一列,每个值都是我们希望使用该键的数据类型。

这里有一个熊猫的例子:

我们的教程到此结束!希望这三个建议能帮你节省很多时间和内存!

喜欢学习?

twitter 上关注我,我会在那里发布所有最新最棒的人工智能、技术和科学!也在 LinkedIn 上与我联系!

用简单的英语讲述人工智能项目的 3 个阶段

原文:https://towardsdatascience.com/3-stages-of-an-ai-project-in-plain-english-a4975c007cb5?source=collection_archive---------27-----------------------

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

本文讨论了人工智能项目的技术阶段。它展示了一个可行的过程来建立成功的团队,包括雇佣谁以及何时雇佣。它假设没有先验知识,并旨在尽可能用简单的英语编写。

在你开始第一步之前,你应该确保你的组织追求人工智能是值得的。听到你需要使用人工智能来保持相关性对于最初的动机来说是好的,但它永远不应该成为最终的理由。

相反,考虑定义用例,陈述它解决的问题,估计潜在的 ROI,并评估对人才和资源的访问。成功还取决于组织的认同创造合适的环境

如果你决定前进,有 3 个主要阶段。这些阶段按编号顺序出现,尽管实际上各阶段之间有重叠。你甚至可能需要回到之前完成的步骤来做得更好。

现在让我们想象一下,我们正在一起启动一个人工智能项目。

1.获得高质量的数据

我们从收集一种珍贵的资源开始:数据。

获得高质量的数据是我们整个项目中最重要的一步。而且往往是最被忽视的。

如果我们的组织还没有数据,我们开始收集一些。数据来源包括互联网、我们的用户和传感器。收集通常从一次性事件开始,随着时间的推移,它会定期完成。

一旦我们得到一些数据,很可能就是垃圾。关于人工智能的一个常见说法是“垃圾进来,垃圾出去。”我们的结果受到数据质量的限制。

来自现实世界的数据是杂乱的。它是不完整的。里面有错误。它经常被复制。在继续前进之前,我们必须处理好这些问题。我们首先要把垃圾数据清理成高质量的数据。

在这个阶段,你需要像数据分析师 T1 或数据科学家 T3 这样的人。如果您想定期收集数据,可以添加一名软件工程师和一名数据库管理员

2.进行实验

我们永远不知道什么会起作用,直到它起作用。

我们可以猜测特定类型的人工智能将为我们的数据工作,然后它未能提供我们想要的结果。我们可以猜测,不同的类型不会工作得很好,它的表现超出了我们最疯狂的梦想。

关键是理论和直觉只能到此为止。我们需要亲自动手看看实际上什么是有效的。幸运的是,很容易在几个小时到几天内尝试许多不同的类型。

当前 best 的表现确实有限。有时候目前的最好还不够好,无法前进。在开始第三步的繁重工作之前,最好先弄清楚这一点。将此阶段视为消除投资风险。

随着时间的推移,随着研究人员发明新类型的人工智能,结果自然会变得更好。一旦我们得到了很好的结果,我们就准备进入下一步。

在这个阶段,我们需要像机器学习工程师数据科学家这样的人。理想情况下,这应该是负责第一步的同一个人,因为在第一步和第二步之间有来回。通过进一步清理我们的数据,我们可能会获得更好的结果。

3.为现实世界而建

我们通过将有用的东西投入现实世界来创造价值。

到目前为止,我们的实验是一次性的。这种方法适用于快速测试,但不适用于多次重复。我们通常希望我们的人工智能定期重复一些任务。

解决方案是建立能够处理大碰撞、意外错误和恶意攻击的基础设施。这个过程是严肃的工作。我们现在肯定需要一个团队,而前两步可能由个人完成

首先要考虑的应该是防御攻击者。从 AI 中创造价值的组织通常拥有敏感数据。一次数据泄露可能毁掉一个较小的组织,或者永久损害其客户的信任。这是一场持续的战斗:随着攻击者学习更多的攻击方式,防御者也必须学习更多的防御方式。因此,防御措施必须由像安全工程师或安全分析师这样的人定期更新。

如果说网络安全构成了防御,那么管道就是基础设施的主干。它们像水管一样把数据从一个地方带到另一个地方。偶尔,管道可能会开始泄漏或堵塞。我们需要数据工程师来确保数据通过管道顺畅流动。

我们还需要一个地方来存储所有这些通过管道传输的数据。我们可能想要对旧数据进行新的实验,或者我们可能想要定期收集新数据。数据库提供了一种存储数据以备将来使用的可靠方法。数据库管理员确保所有的数据都被计算在内并被正确存储。

另一个主要部分是把人工智能放在可以使用的地方。这可能是把它放在一个云服务器上,可以通过像 Chrome 这样的互联网浏览器使用。或者它可能位于像 Microsoft Word 这样安装的软件应用程序中。这取决于用例。网络开发人员最适合前者,软件工程师最适合后者。

最后,我们需要一种方法来查看人工智能的结果。想象一下像网站、仪表板或应用程序这样的媒介。一个 UX 设计师确保产品让用户感到愉悦,不管是什么媒介。网站和仪表盘可以使用前端开发者。应用需要移动开发者

请记住,随着时间的推移,所有基础设施都需要维护。就像汽车随着时间的推移会坏掉而不修理一样,人工智能基础设施也是如此。前期维护投资可保持项目平稳运行,最大限度地减少中断。

我们可能会找到一个身兼数职的候选人,至少在构建基础设施的初期是这样。例如,软件工程师通常可以担任数据库管理员。随着项目的成熟,引入专门维护数据库的人可能是有意义的。

摘要

首先,确保你的组织值得追求人工智能。如果你准备向前迈进,请评估你目前所处的阶段:

  1. 尽可能多地收集高质量的数据
  2. 进行实验,看看什么样的有效,什么样的无效
  3. 通过基础设施将有用的东西投入现实世界

每个阶段需要不同的专业知识。根据你的组织目前所处的阶段进行适当的招聘。

准备好维护基础设施,就像维护一辆爱车一样。定期检查,投资维修,防止以后出现更昂贵的问题。

用熊猫清理数据集的 3 个步骤

原文:https://towardsdatascience.com/3-steps-to-a-clean-dataset-with-pandas-2b80ef0c81ae?source=collection_archive---------14-----------------------

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

想获得灵感?快来加入我的 超级行情快讯 。😎

数据科学不全是花哨的图表!这是一套工具,我们用它来清理、探索和模拟数据,以便提取现实世界中有意义的信息。获取真实世界的信息首先需要真实世界的数据——真实世界的数据是肮脏的。

想想大公司和小公司会如何收集他们的数据。这通常是由非专家完成的;有时是公司的某个人,但通常是公司产品用户的客户。他们将通过用户界面输入数据,其中许多字段是可选的。用户也可以用许多不同的风格和格式输入他们的数据。所有这些都会导致脏数据!

在我们可以通过机器学习模型运行我们的数据之前,我们需要稍微清理一下。以下是我们清理数据集需要采取的 3 个最关键的步骤。

(1)删除特征

当经历我们的数据清理过程时,最好以由粗到细的方式执行我们所有的清理。从最突出的问题开始,深入到本质细节。基于这种方法,我们要做的第一件事是删除任何无关或不相关的功能。

对数据集进行快速浏览,以确定哪些要素与您想要预测的输出不高度相关。您可以通过几种方式来实现这一点:

  • 对特征变量进行相关性分析
  • 检查每个特征变量缺少多少行。如果一个变量丢失了它的 90%的数据点,那么把它们一起丢掉可能是明智的
  • 考虑变量本身的性质。从实用的角度来看,使用这个特征变量真的有用吗?只有当你非常确定它不会有帮助时,才放弃它

以下是如何在熊猫身上做这些事情:

(2)处理缺失值

我们已经删除了丢失值百分比很高的特征变量。现在我们想处理那些我们确实需要但也有缺失值的特征变量。我们还有几个选择:

  • 用任意值填充缺失的行
  • 用从数据统计中计算出的值填充缺失的行
  • 忽略缺失的行

如果你知道一个好的缺省值应该是多少,那么第一种方法是可行的。但是如果你能从某种统计分析中计算出一个值,这通常是非常可取的,因为它至少有一些数据支持。如果我们有足够大的数据集,可以放弃一些行,那么可以选择最后一种方法。但是,在您这样做之前,请务必快速浏览一下数据,以确保这些数据点不是非常重要。

(3)格式化数据

收集数据集时,用户通常会以纯文本的形式输入数据。这可能导致数据格式复杂化。比如以加州的州名进入有很多种方式:CA,C.A,California,Cali 这些都需要标准化成一个统一的格式。此外,可能存在这样的情况,即数据是连续的,而我们希望它是离散的,反之亦然。

  • 标准化数据格式,包括缩写、大写和风格
  • 离散化连续数据,反之亦然

让我们在熊猫身上这样做:

喜欢学习?

在 twitter 上关注我,我会在这里发布所有最新最棒的人工智能、技术和科学!

构建数据科学产品组合的 3 个步骤

原文:https://towardsdatascience.com/3-steps-to-build-a-data-science-portfolio-1c5dc59854f?source=collection_archive---------10-----------------------

最终得到你梦想中的工作

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

几个月前,我写了一篇文章— 如何进入数据科学?回答大多数数据科学初学者面临的一些最常见的问题和挑战。

在文章中,我简要地谈到了 什么样的 投资组合可以帮助你在数据科学或机器学习领域获得第一份工作。但是我没有详细介绍 如何 首先构建数据科学投资组合。

快进到现在,在文章发表后,我开始收到许多有抱负的数据科学家的消息,他们都有共同的目标— 成为数据科学家(或至少进入数据科学相关领域),并带着同一个问题— 如何建立数据科学组合?

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

Messages received from LinkedIn

我曾经是一个没有工作的人,除了一张写着三个闪亮的字的纸什么都没有——科学学士。我曾经是一个漫无目的的千禧一代,对我的职业和生活毫无方向感,尽管外面有大量的机会,似乎在等待我去发现。

所以,我无法告诉你这些留言让我产生了多大的共鸣。我感受到了获得实习机会的艰难;我觉得让雇主注意到你的个人资料是一个挑战;我对构建您的数据科学投资组合感到沮丧,因为您不知道从哪里开始。

我们都知道,单凭简历不足以让你在数据科学领域找到工作。我们也知道建立数据科学组合非常重要,尤其是在我们的求职过程中。

现在的问题是:怎么做?如何建立数据科学投资组合?

这也正是为什么这篇文章将我之前在学习过程中的所有经验浓缩为 3 个最重要的步骤,为您构建数据科学组合。

—注释—

就数据科学而言,我们在这里对组合的定义是指你的数据科学技能的公开证明(由 DataCamp 首席数据科学家大卫·罗宾逊模式分析博客上定义)。

话虽如此,但本文不会谈论如何构建你的简历。我认为简历不是一个作品集,而是作品集的一部分。

在接下来的部分,我们将直接进入我个人使用的核心 3 个步骤(仍在进行中!)在尽可能短的时间内建立我的数据科学组合。这三个步骤是我曾经使用过的(并在此过程中进行了微调)对我有效的方法,我相信它们对你也有效。

在这篇文章的最后,我希望让你更好地理解如何建立你的数据科学投资组合,并指导你最终在数据科学领域找到理想的工作。

所以…让我们开始吧!

构建数据科学产品组合的 3 个步骤

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

(Source)

1。数据科学实习(或同等学历)

是的。数据科学相关的实习。

我们说的不仅仅是数据科学家实习,还包括数据分析师、数据工程师、商业智能或分析师、研究工程师等相关实习。

**重要的一点是:**只要实习要求你做某种形式的数据收集、分析、模型构建或可视化,学到的技能就可以高度转移到市场上的任何数据科学工作中。

因此,获得数据科学相关的实习是第一步。但是为什么呢?

因为雇主往往会寻找有一些数据科学工作经验的学生或应届毕业生。最重要的是,他们想雇佣一个只需很少的培训时间就能开始实际工作的人,因为在企业界,时间就是金钱。

此外,有一个数据科学实习是对你的投资组合和简历的一个很大的提升。不管你的学术背景如何,有这个实习机会表明你是 认真的 并且对此充满热情。这表明你不仅仅是另一个有抱负的数据科学家,他说,“我对数据科学非常有热情,并希望了解更多。”

不要光说不练。表现出来。

如果你读过我的第一篇文章——我从物理到数据科学的旅程,我谈到了我是如何开始数据科学实习的。在完成我的第一次研究实习后,我寻找了一份数据分析实习,并在试图应对我的学业的同时做了一份兼职实习生。

这一时期并不容易。我甚至更进一步,提前一个学期完成了学业,这样我就可以继续实习,成为全职数据科学家实习生。

我的朋友和家人完全糊涂了。他们不知道为什么我决定毕业后去实习而不是全职工作。因为我清楚地知道我想要什么,所以我的决定是不可动摇的。在我内心深处,我选择了这条不平凡的道路,因为我相信我的长期目标,而不是追逐短期的满足。

我为什么要和你分享这个故事?

在追求目标的过程中,你会面临许多质疑你的激情、能力和目标的内在和外在的怀疑和挑战。期待它,拥抱它,做任何你认为正确的事。

做正确的事总是正确的

——加里·维纳查克

2。项目

获得数据科学实习是第一步。但是,如果您刚刚起步,对数据科学工作一无所知,该怎么办?当你没有机会获得经验时,你是如何获得经验的?

答案是通过做项目。我认为有两种类型的项目——学校项目和个人项目。我肯定会推荐后者。

让我们对自己坦诚一会儿。想想目前竞争激烈的就业市场。在求职者的海洋中,我们只是另一个有共同目标但有不同经历的候选人。

问题归结为:在被选中参加面试之前,我们如何在众多候选人中脱颖而出?换句话说,我们怎么能成为雇主容易接收的信号而不是噪音呢?

为什么是个人项目——而不是学校项目

这就是个人项目的力量发挥作用的地方。

我不是说学校项目没用。学校项目只能在一定程度上展示你的能力,并不足以让雇主相信你有足够的激情和能力。

你看。学校项目通常在引导的环境中完成,并分配给学生进行团队合作。问题通常都有很好的框架,最后通常会给出解决方案。这绝对没有错。学生当然可以从这些项目中学到一些东西。

如果你在做别人都在做的事情,你就会得到别人都得到的东西

**这里的问题是:**学校项目无法展示您对数据科学的热情,因为您只是做了分配给您的事情。学校项目不能展示你的全部能力,因为雇主不能把你和同一个团队中的同龄人区分开来。

另一方面,个人项目在课程之外完成。有你的副业——完全由你完成的副业项目。

个人项目能够展示你在数据科学领域的激情和能力,以及在学校课程之外的经验。现在你与众不同了——你是一个言行一致的人;你是这样一个人,他会付出更多的努力,做你喜欢做的事,并且不惜一切代价。

你能做什么个人项目?

Kaggle & Hackathon

参加 Kaggle 比赛。这可以说是各种数据科学项目和竞赛最受欢迎的平台。Kaggle 上的社区充满活力,愿意互相帮助和学习。

如果你是数据科学的初学者, Kaggle Learn 可以指导你一些通用编程语言(Python & R)、数据分析和可视化工具以及机器学习。

你不仅会从 Kaggle 比赛中学到很多东西,你在比赛中的 Kaggle 个人资料和排名也可以展示你在数据分析和模型开发以及使用不同机器学习技术进行优化方面的熟练程度。同样的事情也适用于其他公司不时组织的黑客马拉松。

然而,这里有一个误解。光是 Kaggle 和黑客马拉松还不足以让你成为一名数据科学家。他们只能增加经验,扩大你的投资组合,以及补充其他项目。

现实世界的数据是一团乱麻。你在竞赛中表现出色只是整个数据科学工作流程的一部分。这就是为什么下一个个人项目很重要——找到并做你自己的项目。

找到并做自己的项目

找到你关心和热爱的事情。确定一个你想解决的问题。收集数据(开源、从不同来源自行收集的数据,或通过网络搜集)。将您的知识应用于数据,并在旅途中学习。

我最喜欢的一篇文章——冷启动问题:如何建立你的机器学习组合。在文章中,作者谈到了两个候选人如何从收集数据开始全力以赴(这花费了他们几天到几周的时间!),做数据清洗到构建一些很酷的机器学习模型来解决有趣的问题。看看这篇文章,你就会知道为什么我认为他们的方法是疯狂的,但对雇主来说非常特别和引人注目。不用说,其中一名候选人吸引了雇主的注意,其他候选人甚至在完成项目之前就被录用了。

志愿免费帮助非政府组织或公司

这只是我建立投资组合的方法之一。这里的主要目的是:建立你的投资组合,不管它是有偿还是无偿的。

有时候我们需要的只是一个机会。一个学习和帮助其他非政府组织和公司同时使用数据解决问题的机会。

好处是双重的——你可以学习和建立你的投资组合,同时增加你的价值来为组织解决问题。谁知道呢?项目完成后,你可能会被考虑成为全职员工。

3。社交媒体

想象一下,现在你有一个坚实的数据科学实习和参与各种项目的投资组合。

在经历了无数小时的实习和兼职项目后,你知道你已经准备好了知识和经验,这可能会让你在数据科学领域找到一份工作。但是除了一张纸——简历,你没有地方展示你的能力和投资组合。

我不想这么说,但现实是:一份简历只能让你在很少或根本没有社交活动的情况下走这么远。如今,申请工作的典型方式是通过在线求职门户网站(【求职街】玻璃门、 事实上等)。)——同样是通过社交媒体平台。

因此,拥有你的在线个人资料实际上是你的投资组合的一部分,可以引起招聘经理的注意。

现在你可能会有一个问题:如果每个人都在社交媒体上有自己的在线投资组合,那么是什么让你脱颖而出?我的回答——个人品牌

个人品牌不是仅仅为了打动招聘经理或雇主而伪造自己的品牌和经历。这不是个人品牌的意义所在。

个人品牌是关于做你自己——真实的自己,带着你的信念、你自己的故事和经验,在你的领域展示专业知识和权威。

换句话说,你需要知道自己热爱什么,找到自己的定位。你需要知道如何定位自己,如何利用社交媒体营销你的个人品牌,并让它为你说话。你需要为他人提供价值,同时创造和分享你所热爱的东西。

就我个人而言,我有三个在线平台来发展我的个人品牌和社交存在——Medium、LinkedIn 和 GitHub——这对我的数据科学职业生涯有很大帮助。再次,我分享我所做的和对我有用的,希望对你也一样。

你可能在 Instagram、Twitter 或 Pinterest 上很活跃,正在那里建立自己的社交关系。只要你以正确的方式使用社交媒体,这完全没问题。

中等

如果你一直在关注我的工作,我写了关于为什么我写数据科学。在最后一部分我提到了一个词——机遇

这与个人品牌密切相关。个人品牌带来机遇。就这么简单。

通过在媒体上写作,我已经能够通过分享我的经验和指导数据科学领域有抱负的数据科学家来接触许多人的生活。通过在媒体上写作,各种各样的出版物、杂志和公司找我为他们写作。通过在 Medium 上写作,我已经能够与众多数据科学和专业人士中的杰出人士建立联系,并向他们学习。

日复一日,周复一周,月复一月……我不断地写作,通过文字建立我的作品集。在某个时候,我几乎要放弃了,因为我觉得我没有什么可以分享的。但是我坚持不懈。我尽可能地坚持写作。

因为我相信我们每个人都有独特的声音可以分享,没有人比我们自己更了解我们的故事。所以,当你下次有疑问时,保持专注,知道你为什么要做你正在做的事情。重新获得动力和动力,并保持一致。

每当你不知道该写些什么的时候,就看看大卫·罗宾逊的建议

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

这里有一些你可以写的话题:

  1. 记录你的学习历程,分享你的错误和收获
  2. 用更简单的方式向他人解释技术概念
  3. 获取一些开源数据并进行分析。然后用吸引人的视觉效果和学习之旅传达您的结果
  4. 您是否面临过某些常见的挑战?分享挑战是什么,以及你是如何解决的。因为如果你遇到这些困难,其他初学者也可能面临同样的情况

写作是关于你的思考过程。它可以训练和提高你向他人解释的沟通技巧,这是在数据科学领域取得成功的最重要的技巧之一。

商务化人际关系网

如果我们看一下基于 2018 年 12 月数据的LinkedIn 职位统计,有 94%的招聘人员使用 LinkedIn 审查候选人,48%的招聘人员使用 LinkedIn 进行社交拓展。

那么这些数据告诉了我们什么呢?LinkedIn 上有 5 亿用户,这是巨大的。

LinkedIn 不再仅仅是一个求职平台。事实上,远不止如此。如果你走出去,在 LinkedIn 上建立自己的投资组合,机会是非常多的。分享您的知识,并从 LinkedIn 上紧密联系的数据科学社区中学习。

随着 LinkedIn 上招聘人员和猎头的增多,你的分享会越来越受欢迎,你的个人资料会在你不知不觉中被他们注意到。这就是为什么在社交媒体上建立投资组合如此重要,但它仍然是大多数求职者低估的渠道。

现在,我正在 LinkedIn 上推动共享学习环境的民主化,在世界各地有抱负的数据科学家、数据科学家和其他数据专业人士中发起各种数据科学话题的讨论。我真的相信教育就是分享你学到的东西,并通过有意义的讨论和对话向他人学习。

如果你没有 LinkedIn 个人资料,我强烈建议你创建一个。如果你已经有了 LinkedIn 个人资料,来 LinkedIn 上和我一起参与数据科学社区。相信我,你会被这个充满活力和乐于助人的社区所震撼。

GitHub

GitHub 简介是展示您作为数据科学家的能力的有力方式。

学习如何使用 Git,因为这是大多数(如果不是全部)开发人员和数据科学家在现实世界中合作进行项目的方式。理解 git 工作流程并学习正常的 git 命令(提交、推送和拉取请求等)。).

花些时间学习如何使用 README.md 在 GitHub 上记录你的项目。这使得你的代码对其他人来说更具可复制性和解释性,至少对招聘经理来说是这样。此外,一个在 GitHub 上有代码的记录良好的项目表明,你能够与公众交流结果,你能够与他人合作。

乍一看,这对你来说似乎微不足道。但是当你将来与他人合作或试图与其他利益相关者交流结果时,你会开始看到它的重要性。此外,通过阅读你在 GitHub 上的文档,招聘经理将能够了解你如何处理和解决问题的思维过程。

最后的想法

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

Biking with my friend Darshan in Interlaken, Switzerland

唷!这是继我第一篇最长的文章——如何进入数据科学之后的又一篇长文。

如果你一路走到这一步。感谢您的阅读。

我一直想写这篇文章,因为我觉得这对试图建立数据科学组合的其他人会有所帮助。我希望通过分享我的经验和我个人用来建立投资组合的步骤,能够帮助你建立自己的投资组合,并最终获得拥有大量机会的梦想工作。

请在下面留下您的评论,让我知道这篇文章是否对您有用。

一如既往,如果您有任何问题,请随时在下面留下您的反馈,或者您可以随时通过 LinkedIn 联系我。在那之前,下一篇文章再见!😄

关于作者

阿德蒙德·李 目前是东南亚排名第一的商业银行 API 平台 Staq 的联合创始人/首席技术官。

想要获得免费的每周数据科学和创业见解吗?

你可以在 LinkedInMediumTwitter脸书上和他联系。

**** [## 阿德蒙德·李

让每个人都能接触到数据科学。Admond 正在通过先进的社交分析和机器学习,利用可操作的见解帮助公司和数字营销机构实现营销投资回报。

www.admondlee.com](https://www.admondlee.com/)****

保证无经验数据科学工作的 3 个策略

原文:https://towardsdatascience.com/3-strategies-to-guarantee-a-data-science-job-with-no-experience-68d85b345f21?source=collection_archive---------3-----------------------

独家 TDS 采访

TDS 采访了 DoorDash 的 Jeff li,他分享了为没有计算机科学或数学学位的数据科学应用评分的重要资源。

面试官: Haebichan Jung ,数据科学家| TowardsDataScience.com 项目负责人。

受访者:door dash 的数据科学家(机器学习)Jeffrey Li

你是如何成为数据科学家的?

我并没有真正来自进入数据科学的传统背景。实际上,我大学毕业后的第一份工作就是从技术咨询开始我的职业生涯。虽然这是一份不错的第一份工作,但我不认为这是一份适合我的长期工作。所以在工作之外,我对快速学习很感兴趣,我尝试了很多不同的技能,我的一个更大的项目是试图通过玩扑克谋生。

我当时的目标是把扑克玩得足够好,以便能够维持我的生活方式。然而,有一次当我玩扑克的时候,我输掉了所有的钱。对我来说,如果我要在一项技能上投入大量金钱或情感能量,我还不如把它投入到一项能为他人创造价值的技能上,而不是像玩扑克那样从别人身上获取价值。所以我想继续走概率统计这条路。因此,我最终从那里进入了数据科学领域。三年后,我现在是 DoorDash 的一名数据科学家。

你是如何从扑克生涯过渡到 DoorDash 的数据科学领域的?

最初,我自学了不少。我自己写了很多代码。我在大学里上过几门统计学课,所以我对线性回归、决策树和随机森林有一些了解。我大概花了六到九个月的时间纯粹学习。

然后,我在一家名为 Dataquest 的初创公司找到了第一份工作,这是一家广告技术公司。我在为我们的营销团队设计课程和做分析。但我想真正发展我的机器学习技能,我认为,根据你进入的公司,将需要机器学习或实验分析。DoorDash 有一个特定的机器学习团队,我最终加入了这个团队。

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

Jeffrey’s tutorials on Dataquest.io

你在 DoorDash 接什么项目?

在 DoorDash,我们有三个与数据科学相关的不同团队。我们有分析数据科学家,他们专注于实验分析,也专注于构建仪表板和进行支持特定业务的分析。

然后,我们有机器学习工程师,他们正在建立更多的基础设施,进行大量的建模,以及模型的大量生产。我的团队是数据科学机器学习团队,我们位于这两个端点之间的中间。因此,我们正在构建许多专注于业务影响的模型。我们也帮助进行实验分析,也做一些数据工程和商业分析。

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

Three data science teams at DoorDash

特别是对我来说,我一直在从事一些项目,如推荐系统,增加新功能以向您显示最相关的餐厅,建立管道以将推荐信息纳入我们的电子邮件,以及营销归属和营销细分。我们还建立了一个预测销售的模型。

三个数据团队是否相互协作?

在很大程度上,这取决于你正在做的项目。当我的项目更侧重于工程时,比如建立管道以使事情变得更快,就不需要在业务方面加入一些人。这主要是我和工程团队作为一个工程为重点的项目。

然而,有一些项目,比如新特性的实验分析,我们需要了解它的影响。这将要求我们与工程部门进行更紧密的合作,因为他们将帮助执行实验,还要求我们与业务部门进行更紧密的合作,因为他们希望了解这一新功能将如何影响我们的业务。

所以看起来 DoorDash 的申请者应该非常清楚这些不同的角色,以及他们如何利用自己的优势。

我认为这是利用你认为自己擅长的东西和你拥有的经验的结合。我还是想说,如果你是在实验分析方面非常有经验的人,并且你想在建模方面做得更多,一定要记住这一点。我认为,一般来说,在科技公司,如果你能清楚地说出你想要什么,并利用你想要的创造价值,那么你就可以进入任何角色。

一个例子是,你非常擅长统计和分析实验,但你想做更多的机器学习。最好的方法是,你可以在公司内部找到商业问题,而机器学习是解决这个问题的最好方法。如果你能向你的经理证明这个解决方案将对业务产生重大影响,你的经理很可能会允许你这样做。

door dash 的申请流程一般是怎样的?

因此,与大多数科技公司相比,申请流程并没有太大不同。如果你去我们的职业网站,你可以看到具体的一步一步的过程。我们将与招聘人员进行初次通话。接下来,你会有一个带回家的作业,根据你建立机器学习模型并经历端到端过程的能力进行评分。如果看起来不错,我们会打一个回顾电话,我们会问你几个关于你的技术的问题,并了解你为什么做出某些决定的思维过程。如果看起来不错,你可以来现场,在那里我们会对你的业务、机器学习、编码和价值观进行测试。

在 DoorDash,你自己也有机会参与这个招聘过程吗?

是的,我做了大量的回顾,带回家和回顾电话。根据我在评分带回家的经验,我在市场上看到的大多数数据科学家的最大陷阱或最大弱点是能够将机器学习模型与商业影响联系起来。所以很多非常非常聪明的人建立了这个非常复杂的五层神经网络,它能做出很好的预测,得分很高。但是,当我们深入研究特定模型的业务影响时,他们通常很难回答这个问题。最终,我们需要机器学习对业务产生影响。这非常重要。

那么,当这些问题与业务影响相关时,应用程序应该如何准备呢?

我认为第一步应该是思考商业方面的行为。问问你自己:“所以我建立了这个模型。现在,这对业务有什么实际影响?”这会让你想到,“嗯,企业可能有某些度量标准来衡量企业的健康状况”。这可以是收入、盈利能力、成本等。如果你不太熟悉这些业务术语,我建议你阅读一下公司衡量的关键业务指标。

我还建议无论你面试的是什么,都要更深入一步。假设是营销分析职位。你会说,“好吧。什么是营销分析师?营销人员在日常工作中关心什么?嗯,营销关心获得更多用户,他们关心留住他们的用户,他们关心通过能够用更少的钱获得更多的用户来减少广告支出”。

所以你说,“好吧,我知道他们关心什么。所以,如果我建立这个模型,这实际上会对他们关心的事情产生什么影响?”如果很难想通这个差距,那么这可能是一个信号,需要更多地研究它如何对业务的这个特定方面更有价值,或者它可能没有价值。

最后,我通常会提醒数据科学家要同情业务方面的人,确保你从他们的角度理解事情,因为他们不知道集合、参数调整或 95%的 AUC 意味着什么。因此,尝试从他们的角度理解事情,能够将这种模式转换为他们关心的事情是非常有用的。

作为一名数据科学家,你成功进入 DoorDash 的策略是什么?

我使用三种主要策略,分别针对一般数据科学招聘的不同阶段。1)我给招聘人员和招聘经理发了一封冷冰冰的邮件。2)我使用了拉米特·塞西称之为公文包技术的东西。3)我利用我创建的数据分析来优化我应该如何为工作申请的不同部分分配时间。

要详细、细致地了解 Jeff 为其应用成功而创建和战略性部署的三个文档,请观看视频。下一节将只介绍这三份文件的重要性。

第一份文件:转换分析电子表格

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

Sample Conversion Analytics Spreadsheet Link: https://docs.google.com/spreadsheets/d/1TmveoOBwRWO7lsQ7z78wkGK4oMOUHWwC_uRaKFeBI84/edit?usp=sharing

这份文件有什么重要性?

举个例子,当我经历求职过程时,我遇到的最大挑战之一是:如何最好地利用我的时间(面试、申请、练习代码、回答问题等)。)?我不知道如何最好地利用我的时间。所以我想做的是使用分析/数据科学来解决这个问题,以便在数据科学领域找到工作。由于我已经经历了多次求职过程,我有足够的数据点来绘制地图,并能够得出一些见解。

这张电子表格是我整理出来的,用来绘制我的求职面试流程的漏斗图。前半部分描绘了面试过程的每个部分。最后一部分列出了我用来获得更多采访的不同类型的渠道。

在申请过程中利用这个分析电子表格有什么好处?

像很多数据科学问题一样,这也像一个优化问题;优化有限的资源,使我们的收益最大化。如果你对这个话题感兴趣,我建议你去看看线性编程。我没有使用任何机器学习模型,因为数据点非常小,而且你必须获得足够的数据来获得这些见解。

但我认为这非常有利于最大限度地提高你的时间效率。在数据科学中,你可以学习统计学、机器学习、编码,你可以花时间回家做功课,但问题是:我如何知道哪个对我最有价值?这个电子表格肯定解决了这个问题。

例如,假设我有三个小时为面试学习或为找工作做准备。我如何有效地分配时间,使我最大限度地获得工作机会?您可以通过电子表格来解决这个问题。

第二份文件:直接招聘人员电子邮件

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

Sample Direct Recruiter Email Link: https://docs.google.com/document/d/16RXFT71tZJ3BUFPuDTnEke4yNsm9fiRZQlHztVDkToA/edit

这封信背后的战略要点是什么?

这封信深入探讨了更多关于理解人类心理和理解一般写作的技巧,以将收件人钩入信中。

第一段:想法是首先真正尊重某人的时间,并提及这一点(即使在我这边,我也收到相当多的信息和电子邮件,要求我做些什么)。然后确定你是如何找到它们的,以及你为什么要发邮件给它们。

第二段:建立你的证书;为什么你很适合这个角色。突出你的技能中让你与众不同的部分。

第三段:展示工作之外的自己。这样,有人谁正在阅读这份文件,读者可以理解,申请人有技术技能和沟通技巧,并非常致力于成为一个更好的人。每个人都有与众不同的因素。对于那些想要使用这个模板的人,请深入思考是什么让你与众不同。

第四段:使用黄金线。使用黄金线实际上会让读者更快地回复你的邮件。这显示了对他们优先事项的考虑,你可以从他们的角度理解事情。

第三份文件:公文包文件

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

Sample Briefcase document link: https://docs.google.com/document/d/1HTmC-hu9upge8vnNDe65OnrX0a7hRoIcNX2YkkJYfzc/edit

什么是公文包文档,申请人如何才能最好地使用它?

这个想法是,当你经历面试过程并进行一次愉快的谈话时,你在面试结束时要做的是说,“等一下。我花了些时间思考你的一些问题。我为你准备了一些东西”。然后,你戏剧性地拿出你的公文包,向招聘经理展示你已经理解了他们的痛点,并给出了解决这些具体痛点的详细方案。

从招聘经理的角度来看,他们垂涎三尺,因为他们在想:“如果我雇用这个申请人,这个人会带着这些问题来,他们会解决我的问题”。

因此,公文包技术是一份概述公司痛点以及你提出的解决这些具体痛点的想法和项目的文件。这些项目非常详细,比如你将要使用的资源,你认为这将需要的时间,以及你认为你将要进行的项目的大纲。所以在细节层面上,很容易实现这些想法。

我应该提到的是,每当我在现场展示这份文件时,我每次都收到了工作邀请。

换个话题,你为 TowardsDataScience.com 写的火绒文章是什么?

[## M2M 第 90 天——我如何使用人工智能来自动化 Tinder

这篇文章是 Jeff 为期 12 个月的加速学习项目“掌握一个月”的一部分。对于三月,他是…

towardsdatascience.com](/m2m-day-89-how-i-used-artificial-intelligence-to-automate-tinder-ced91b947e53)

我想了解卷积神经网络和深度学习是如何工作的。我学习的方法是找到我想用我现有的技能解决的问题。

在这种情况下,我觉得约会应用程序占用了太多时间。我认为建立 CNN 更容易,它实际上会对我喜欢和不喜欢的个人资料进行分类。通过这个过程,我了解了神经网络是如何工作的,不同 dnn 之间的差异以及其他挑战,如调整。

这篇文章对招聘过程有影响吗?

影响更加间接。当我在那封邮件中向招聘人员推销时,这给了我一个很好的卖点。对于非技术性的招聘经理和招聘人员来说,理解我做了什么以及我构建这个项目的思维过程是非常重要的。

最后一个问题:你对 TDS 的观众在整个招聘过程中有什么建议吗?

当我玩扑克时,有一个概念,你可以在扑克中做出正确的举动,但你仍然可能会输钱。这个概念适用于生活中的一切。在我们的日常生活中,总是有随机的机会。有时我们可能做了正确的事情,但对我们来说可能不是积极的结果。这直接适用于招聘。在招聘中,有太多的变量,涉及太多的随机机会,很难控制这些事情。

因此,我想说的是,在招聘时,只需专注于你能做的、在你控制范围内的事情,并专注于做出正确的举动。他们可能每天发送 3 封冷冰冰的电子邮件。总是发一封感谢邮件。做这个公文包技术。这些都是你能控制的事情。但是请记住,有时会有很多随机的运气,事情可能不会如你所愿。

如果你还有任何问题,不要犹豫,看看我的网站:http://www.jefflichronicles.com/

如果你有兴趣申请 DoorDash,点击这里:https://www.doordash.com/careers/

[## Haebichan Jung - Medium

阅读容格在媒介上的作品。项目负责人@TDS |数据科学家@ Recurly…

medium.com](https://medium.com/@haebichan) 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

提高 Python 代码速度的 3 种技巧

原文:https://towardsdatascience.com/3-techniques-to-make-your-python-code-faster-193ffab5eb36?source=collection_archive---------6-----------------------

你甚至不会流汗

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

source

在这篇文章中,我将分享你在日常脚本中可能用到的 3 种 Python 效率技巧,以及如何衡量 2 种解决方案之间的性能提升。我们开始吧!

我们如何比较两个候选解决方案的性能?

性能可能指解决方案中的许多不同因素(例如,执行时间、CPU 使用率、内存使用率等)。).不过,在本文中,我们将重点关注执行时间。

新解决方案在执行时间上的改进可以像除法一样简单地计算出来。也就是说,我们将旧的(或未优化的)解决方案的执行时间除以新的(或优化的)解决方案:tell/Tnew。这个指标通常被称为加速。例如,如果我们的加速因子为 2,我们改进的解决方案将花费原始解决方案一半的时间。

为了比较我们函数的性能,我们将创建一个函数来接收这两个函数,计算它们的执行时间,并计算获得的加速比:

import timedef compute_speedup(slow_func, opt_func, func_name, tp=None):
  x = range(int(1e5))
  if tp: x = list(map(tp, x)) slow_start = time.time()
  slow_func(x)
  slow_end = time.time()
  slow_time = slow_end - slow_start opt_start = time.time()
  opt_func(x)
  opt_end = time.time()
  opt_time = opt_end - opt_start speedup = slow_time/opt_time
  print('{} speedup: {}'.format(func_name, speedup))

为了获得有意义的结果,我们将使用一个相对较大的数组(100.000 个元素),并将其作为参数传递给两个函数。然后,我们将使用时间模块计算执行时间,并最终交付获得的加速。

请注意,我们还传递了一个可选参数,允许我们更改列表元素的类型。

1.避免用+运算符连接字符串

您可能会发现的一种常见情况是必须用多个子部分组成一个字符串。Python 有一个方便的+运算符,允许我们以如下方式轻松地连接字符串:

def slow_join(x):
  s = ''
  for n in x:
    s += n

尽管对我们来说这是一个干净的方法,Python 的字符串是不可变的,因此不能被修改。这意味着每次我们使用+操作符时,Python 实际上是基于两个子字符串创建一个新字符串,并返回新字符串。考虑一下,在我们的例子中,这个操作将被执行 100.000 次。

这种方法显然是有代价的,我们可以使用 join() 找到一个更便宜的解决方案,如下例所示:

def opt_join(x):
  s = ''.join(x)

这个解决方案采用子字符串数组,并用空字符串分隔符将它们连接起来。让我们检查一下我们的性能改进:

compute_speedup(slow_join, opt_join, 'join', tp=str)

我得到了 7.25 倍的加速系数!考虑到实现这项技术所需的少量工作,我认为还不错。

2.使用地图功能

当我们需要对列表中的每个元素进行操作时,我们通常可以这样做:我们应用生成器理解并处理当前元素。然后,我们可以在必要时迭代它:

def slow_map(x):
  l = (str(n) for n in x)
  for n in l:
    pass

然而,在许多情况下,您可能更喜欢使用 Python 的内置映射函数,它对 iterable 中的每个元素应用相同的操作并产生结果。它可以简单地实现如下:

def opt_map(x):
  l = map(str, x)
  for n in l:
    pass

是时候检查一下我们在执行时间上提高了多少了!如下运行我们的 compute_speedup 函数:

compute_speedup(slow_map, opt_map, 'map')

我获得了 155 的加速。可能有人会说理解更易读,但是我会说,适应 map 的语法也不需要什么,至少在简单的场景中是这样(例如,不需要 iterable 上的任何条件)。

3.避免重新评估函数

每当您发现自己在循环块中的元素上重复使用相同的函数时,例如:

y = []
for n in x:
  y.append(n)
  y.append(n**2)
  y.append(n**3)

…或者只是在循环块中使用一次这样的函数,但是是在一个很大的列表上,例如下面的情况:

def slow_loop(x):
  y = []
  for n in x:
    y.append(n)

…您可以利用另一种优化技术。

如果您以前将函数作为变量保存,并在循环块中重用它,则可以节省重新计算函数的成本。以下片段显示了这种行为:

def opt_loop(x):
  y = []
  append = y.append
  for n in x:
    append(n)

注意,如果需要将当前元素添加到不同的列表中,就必须为每个列表的 append 函数创建一个新变量。

让我们使用 compute_speedup 来检查加速:

compute_speedup(slow_loop, opt_loop, 'loop')

在这种情况下,我获得了 2.07 的加速比!同样,我们不需要做任何重大的改变来获得这样的改进。

想要更多提高效率的技巧吗?看看这些文章吧!

3 个简单的 Python 效率技巧

在 Python 中寻找性能瓶颈

3 个建立纪律的绝妙策略

原文:https://towardsdatascience.com/3-terrific-tactics-to-build-discipline-215ad1bdb2c2?source=collection_archive---------25-----------------------

似乎从未达到您的 KPI?专注基础,成为一名优秀的工程师。

Video Version

我故意用“战术”这个词。著名的战争战术家和哲学家孙子经常引用的一句话是:

没有战术的战略是最慢的胜利之路。没有战略的战术是失败前的噪音。

但是这实际上是什么意思呢?你可以把战略看作是任何涉及全局的事情,并告知决策“我要去 b 点”。相比之下,战术是把你从 A 点带到 b 点的具体行动。

区分这一点很重要,因为下面是对一些策略的快速回顾,你可以将这些策略融入到你为自己设定的几乎任何任务、议程或策略中。下面的目标读者是软件工程师同事,但是这些基本策略可以适用于任何人。理论到此为止。让我们言简意赅,言简意赅。

说话之前一定要听

现在,我已经在这个地方,我甚至有时会感到内疚。但事实是:你并不知道一切。

你可能是一名软件工程师。电气工程师。计算机工程师、生物工程师或核工程师。所有工程形式的共同点是什么?嗯,对于所有不同风格的工程师来说,这些都包括与和其他人一起工作。与他人和团队合作的美妙之处在于,每个人都走到一起,为团队贡献自己独特的天赋。当这种情况发生时,你必须意识到你可能期望的并不是你需要构建的现实。

所以,在你开始说话之前,一定要确保你在听周围的人说话。而且如果你不懂,问问题也没关系。你听到了吗?

提问是可以的。

事实上,你问的问题越多,特别是如果你和一个团队一起工作,你作为一名工程师就会越好。

确保你真正理解为什么你要写代码。为什么你要做你正在做的事。根据您的角色,始终与您的项目经理、团队经理、技术主管或您自己保持同步。

提问是可以的。如果 act,你问的问题越多,特别是如果你和一个团队一起工作,作为一名工程师你会做得越好。

每天表演 30 分钟代码形

并在同一天回顾它

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

有时候,尤其是如果你在一家 500 强公司,你可能会开始忘记一些 CS 基础知识。我是说,上一次我必须检查二叉查找树中是否存在给定的子序列是什么时候?

别担心!你可以通过表演代码形来解决这个问题。这些有时间限制的编码练习被称为“形”,这个术语最初用于日本武术,甚至用于训练武士。它只是指训练基本的位置或姿势。在软件工程的上下文中,您通过完成时间封闭的编码练习并检查它们来执行形。通过这样做,你将完成作为一名工程师个人发展的三个步骤:

  • 更新您的知识基础
  • 在你的技能工具箱里磨一磨你可以用于工作项目的工具
  • 练习专注的艺术

如果你还不明白,可以去看看我今年早些时候写的代码。(https://towards data science . com/code-kata-robot-sensing-reduce-branching-and-cyclomatic-complexity-Fe 290 b 3050d 1)

吃你的青蛙

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

现在,我知道这听起来很奇怪,但是吃你的青蛙并不意味着真的吃你的青蛙。事实是,我们想探索解决你讨厌的问题或任务的概念。早上第一件事就是做这件事。要吃你的青蛙,只要遵循这一个指示。

在你一天工作的开始安排一个 90 分钟的窗口来完成你最难的任务。

通过这样做,你增强了将你希望的目标转化为你完成的习惯的能力。否则,如果你一直拖到最后一分钟,或者一天的最后一刻,那么你第二天就会不得不去做那项任务。美国在线前首席执行官斯蒂芬·凯斯说的话是有道理的:

没有执行的愿景是幻觉。

想想吧。

在最好的情况下,在这 90 分钟里,你将会完成这个你一直讨厌的任务。你将完成你需要做的所有事情。多棒啊。

在最坏的情况下,你可能会产生更多的问题,遇到更多的障碍。但是,如果你在一天中第一件事就做,特别是如果你和一个团队一起工作,那么你可以那些问题。这难道不深刻吗?是的,这听起来很简单。然而,我们中的许多人(包括我自己)都有懒惰和拖延的倾向。我也要吃我的青蛙。

嘿,还记得我之前提到过,当你留出 90 分钟的专用时间并吃掉你的青蛙时,你会增强你将你希望的目标转化为你完成的习惯的能力吗?好奇想知道这是怎么做到的细节吗?

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

最近的一份出版物披露,这是通过加强眶额叶皮质(OFC)与背侧纹状体之间的联系来实现的,这对于目标导向的行动控制是必要的。更多详情请查看:https://www . cell . com/neuron/full text/s 0896-6273% 2816% 2930157-X

你知道的越多。

你认为最重要的纪律习惯是什么?请在下面的评论中留下你的想法。

每个有抱负的数据科学家在第一份工作之前应该知道的 3 件事

原文:https://towardsdatascience.com/3-things-every-aspiring-data-scientist-should-know-before-their-first-job-4b1559d3162?source=collection_archive---------30-----------------------

指导你职业准备的知识

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

From Pexels

随着人工智能的普及和炒作,希望从事数据科学家工作的人数也在增加。这导致许多大学提供新的数据科学学位和在线平台,以增加更多与该主题相关的 MOOCs。不久前,我还是一名试图进入数据科学世界的学生。在我转型成为一名数据科学家后,我回头看,意识到我做了一些正确的事情,还有一些事情我完全不明白。在这些事情中,有三个对我来说最突出。

1.技术技能是容易的部分

在大学里,我花了很多时间想知道什么课程最能为我在数据科学领域的职业生涯做准备。现在回想起来,我对我认为最有价值的课程感到相当惊讶。大部分都不是教我 python 或者线性回归的课。我认识到,花一点时间学习和练习,技术技能似乎很容易获得。让我受益最大的课程是那些推动我独立学习和思考的课程,不管主题是什么。

一旦你离开学校,就不会再有课程教你工作所需的技能。在这一点上,学会如何学习变得非常重要。如果你能拿起一篇关于一项新技术的最新研究论文,理解它,并从中学习如何实现某些东西,你就为任何事情做好了准备。最重要的是,自学的自然动力对潜在雇主来说很有吸引力。

我还认为,在劳动力中,技术技能比解决问题能力强的人要多得多。如果你在进入职场之前有任何机会练习这些批判性思维技能,无论是通过课堂还是个人项目,这很可能比知道多一个模型如何工作更能让你受益。

2.作为一名数据科学家,需要大量数据和一点科学知识

在钻研数据科学之前,你还应该知道你将进入什么领域。数据科学家的日常工作不是构建人们称赞你名字的辉煌模型。它通常包括筛选数据、思考问题、将代码从 Jupyter 笔记本转移到可读性更强的地方,以及实现自动化。总的来说,机器学习是数据科学的工具,而不是一个人的工作。

我建议每个有抱负的数据科学家在准备开始找工作时问自己一个问题。“什么类型的行业对我来说足够有趣,以至于清理大量数据不会那么糟糕?”每个行业都在探索人工智能,选择一个你感兴趣的对你在数据科学领域的长期幸福很重要。没有一份工作总是充满乐趣,数据科学也不例外。因此,找到一个行业,你可以通过无聊的东西,使之成为可怕的是非常重要的。

3.AI 不能解决一切

第一次有人告诉我,我们可能无法用人工智能解决问题时,我震惊了。这似乎是对上帝的亵渎。人工智能应该解决公司的一切问题。

人工智能实际上受到工业中许多不同事物的限制。数据、计算能力或问题复杂性等因素都可能限制我们使用人工智能解决的问题。有时候你会构建一些不起作用的东西,这没什么。它通常说的不是你,而是人工智能的局限性。

理解人工智能的极限实际上是非常有价值的。它有助于了解什么项目值得追求,以及项目应该何时完成。它可以帮助设定现实的目标和对人工智能如何帮助公司前进的期望。

结论

为进入数据科学领域做好准备有很多事情要做。我只提到了三件学生在校期间通常不会想到的事情。虽然这些不是对你应该做什么的直接建议,但希望它们可以帮助指导你的一些决策。如果你想获得关于如何准备数据科学职业的更直接的建议,你可以查看我写的另一篇文章。

[## 如何在第一份数据科学工作之前获得数据科学经验

找机会和某人合作写一篇学术论文是获得以下经验的好机会

link.medium.com](https://link.medium.com/wlwq74rQW0)

我在第一次 Dev 会议中学到的 3 件事

原文:https://towardsdatascience.com/3-things-i-learnt-at-my-first-dev-conference-4947e73a8ac?source=collection_archive---------32-----------------------

以及为什么你也应该参加会议

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

This was the first thing you see when you arrive at the conference. The display on the left is made out of mobile phones — cool! Images from @seoyeon.leeeeee.

本周,我第一次以数据科学家的身份参加了开发者大会。这是一次很棒的经历,认识了很多人,接触了新的想法,增加了我继续学习的动力。我想分享我的经历以及我学到的一些东西。

我参加的大会是 LINE 开发者日 2019。它于 11 月 20 日和 21 日在东京举行。对于亚洲以外的人来说,LINE 是日本、泰国和台湾最大的信息平台。他们每月有 2 亿活跃用户。你可以对比一下 Whatsapp 的 15 亿。虽然它没有那么大,但肯定是在同样的规模上,并且有效地拥有他们的核心市场。

遇见人

首先,会议是结识志同道合者的好方法。抛开社交压力,接近人们并开始和他们谈论有趣的话题是很容易的。例如,我参加了各种关于推荐系统的讲座,之后我和我认识的人聊天。听听他们应用了什么技术以及他们经历了怎样的挣扎是很有趣的。与会者来自亚洲各地,因此你可以接触到在你的常规国内市场可能看不到的新想法。我不仅能感同身受,还发现了一些我从未想过的有趣问题。

例如,LINE 使用时间线帖子的推荐系统(类似于脸书或 Instagram),由于他们的数据非常稀疏(< 0.00001% !) they can’t apply regular embedding techniques like SVD or ALS, instead they use some interesting and innovating tricks to get there. In my daily job our sparsity is closer to 0.1% so I’m lucky enough to be able to apply the standard techniques but it’s great to see that you can break away from the norm.

I also did my best to get the contact details of anyone who was facing similar problems. I believe it’s great to keep in contact with fellows in the industry, as you would see in academia, so that you can continually bounce ideas of each other and grow together.

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

Speaking with Speakers

Aside from chatting with other attendees, I did my best to talk with the speakers. For some reason, at this conference the speakers were almost exclusively left unattended at the end of their talks. I took this opportunity to ask as many questions as I could (I stole 30 mins of one speaker!). There are all the benefits discussed above but a few more.

Talking with the speakers I found out that **),即使他们中的许多人没有发布结果,他们也确实在研究有趣和前沿的技术。**数据共享限制、市场竞争或单纯的业务等问题通常会阻止他们尽可能多地共享数据。这是意料之中的事,但这也指出了参加这样的演示来了解这些技术的价值。

接下来,另一个很大的好处是能够发现论文背后更多的东西。数据科学研究受到重复性问题的困扰,这意味着很难将某人在论文中发表的工作应用到你自己的工作中。通过参加会议和直接与出版商交谈,你可以补充一些你不理解的、原始论文中遗漏的细节,或者询问他们如何得到论文中的结果。

例如,其中一位演示者向我们介绍了图像识别深度学习网络的 CutMix 技术。演示结束后,可以问他们各种细粒度的问题,比如他们是如何得出论文中的结果的,他们尝试了哪些技术,但失败了。

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

Image from @LINE.

查找员工

这个会议不会便宜的。成千上万的人,一个提供午餐和晚餐的豪华酒店,他们肯定花了很多钱。但我认为这是值得的。如果你考虑到招聘人员平均收取员工起薪的 30%左右,那么你看到的是每个员工 3 万英镑。虽然像这样的会议将花费几十万美元,但如果他们能从会议中雇用 10 名新员工,或大约 0.5%的与会者,这笔成本将很容易收回。

当然,像 LINE 这样的公司对员工(有经验的和应届毕业生一样)已经有了很强的吸引力,他们有一个内部招聘部门,这意味着招聘的实际成本更低,但经济效益可能仍然很好。

因此,对于组织者来说,这是一个巨大的招聘潜力,但作为一名与会者,你可以利用这一点。如上所述,在结识不同的人的同时,你也可以寻找下一个最优秀的同事或员工。这是一个舒适的环境,很容易投入到技术讨论中,没有面试的压力。

玩得开心

最后,会议只是娱乐,我们都需要偶尔来点娱乐。我相信参加会议有助于点燃我学习数据科学的热情。那是因为想法令人兴奋。与处理同样问题的人交谈会给你强烈的肯定,你正在做的工作是好的。

当然,津贴也不错。住在一家豪华酒店里,设施很棒,食物也很美味!他们甚至在会后派对上将定制标签印在啤酒上——哇!

还有其他赠品,包括标准的会议 t 恤、笔记本电脑贴纸(或者编码员认为的徽章)和一些小奖品。

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

Lots of bounties to be had at the conference. Note the LINE branded beers in the bottom right! Photos from @line_creative and @tweety.

下次

总之,这对我来说是一次宝贵的经历。我遇到了很多聪明人,能够向从事前沿技术的人提问,增加了我成为数据科学家的热情和动力。

如果你曾经怀疑过参加会议的价值,要知道如果你愿意付出一点努力,就会有丰厚的回报。进行调查,询问你的老板你是否能参加你所在地区的下一次会议!

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

You can find out more about the LINE Developer Day from the website at https://linedevday.linecorp.com/jp/2019/ or with #linedevday.

训练前你需要知道的 3 件事——试分裂

原文:https://towardsdatascience.com/3-things-you-need-to-know-before-you-train-test-split-869dfabb7e50?source=collection_archive---------0-----------------------

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

Photo Illustration. Photo by Lucca Lazzarini on Unsplash

你做的一切都是对的。从选择一个很酷的预处理步骤到一个全新的损失和一个整洁的准确性度量。但是嘣!您的验证或测试结果比您预期的要差得多。那么是拟合过度,还是你的模型错了,还是亏损了?

有时,我们会忽略一些简单的事情,比如将数据集分成训练集和测试集。除非数据集带有预定义的验证集,否则您肯定至少已经这样做过一次。这很可能是你在网上任何数据科学教程中遇到的第一件事。很有可能你做错了。

分层

假设您正在进行多类分类,并且有一个包含 5 个不同类的不平衡数据集。你做了一个简单的训练测试分割,这是一个随机分割,完全不考虑类别的分布或比例。在这个场景中发生的事情是,您最终得到一个具有完全不同的数据分布的训练和测试集。在与测试集完全不同的数据分布上训练的模型将在验证时表现不佳。现在我们来看看,好吗?

我们从这场 Kaggle 竞赛中获取烹饪数据集。数据集有 20 个类(烹饪类型),非常不平衡。我们选择了三个班级(意大利,韩国和印度)进行我们的小实验。

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

现在让我们试试 scikit-learn 所有著名的 train_test_split 函数。首先,我们做一个普通的分割。让我们检查结果。

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

我们可以看到分布的变化。虽然这里很小,但对于更小和更不对称的数据集来说,它很容易就足够大了。这个问题的解决方案是所谓的分层,它将锁定训练和测试集中类的分布。让我们再次进入 train_test_split 函数的文档页面。

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

在这里。最后一个参数。为了获得相似的分布,我们需要根据类值对数据集进行分层。因此,我们将我们的类标签部分数据传递给这个参数,并检查发生了什么。

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

瞧啊。你有相同的分布。因此,你的模型不会面临对不平衡测试集进行验证的问题,也不会让你对它的实际性能产生错误的感觉。下一个!

按索引拆分

对于一个定义明确的数据集,我们手头并不总是有一个简单明了的问题。作为数据科学家,现实往往相反。可能会发生这样的情况,您需要将 3 个数据集分成训练集和测试集,当然,拆分应该是相似的。你可能面临的另一种情况是,你手头有一个复杂的数据集,也许是一个 4D 数数组,你需要在第三个轴上拆分它。

这两个问题都有一个很好的解决方案。我们只需要按照数据集的索引进行拆分,这样我们就可以分别获得训练集和测试集的索引。这样做其实很容易。让我们再次使用以前的美食数据集。

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

注意:在多个数据集之间进行类似拆分的任务也可以通过在 train_test_split 的参数中固定随机种子来完成。但是下面只能这么做了。

我们采用 4D numpy 阵列,并且我们打算通过在它的第三维上分裂来将它分裂成训练和测试阵列。最简单的解决方法是利用我们刚刚学到的知识。

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

正如你所看到的,训练和测试阵列的形状与我们想要的一模一样。

预处理

好吧,这和数据集的分割无关。但这很重要。这一点的基本要点是:

您不应该使用适用于整个数据集的预处理方法来转换测试或定型数据。

如果您这样做,您就无意中把信息从训练集带到了测试集。让我们在 cuisines 数据集上使用 Tf-Idf 矢量器作为预处理器来对配料列进行矢量化,以检验这一点。

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

这里发生的事情是,我们在整个数据集上安装矢量器,并用它来转换训练集和测试集。会有一些词只存在于训练集中,一些只存在于测试集中。但是因为我们在矢量化之后进行了拆分,所以所有的单词都被矢量化,并包含在上图所示的 1921 tf-idf 特征中。

纠正这种情况的方法是在向量化之前进行训练测试分割,矢量器或这方面的任何预处理器应该只适合训练数据。下面是正确的做法:

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

可以预料,tf-idf 的特征数量比以前少了,因为有一些独特的词只存在于测试集中。因此,这些词在矢量器中不被考虑,这确保了测试集的真实的 、不可见的 性质。

所以下一次你分割或拆分数据集时,你可能会暂停一秒钟,以确保你做得是否正确。

顺便说一句,如果你也对深度学习感兴趣,这里有我的两个帖子:

[## 2020 年成为计算机视觉专家的 4 步指南

我在过去 2-3 年的旅程中学到了什么

towardsdatascience.com](/the-4-step-guide-to-becoming-a-computer-vision-expert-in-2020-8e821514e2a7)

在这篇文章中,我将讨论一个新手如何进入计算机视觉领域,以及如何成长为一名专家。

[## 梯度积累:克服深度学习中的记忆限制

它是什么,如何实现

towardsdatascience.com](/gradient-accumulation-overcoming-memory-constraints-in-deep-learning-36d411252d01)

在本文中,我将讨论如何利用梯度累积技术在较小的 GPU 上运行较大的批处理。

干杯!

创建更有效运营报告的 3 个技巧

原文:https://towardsdatascience.com/3-tips-for-effective-operational-reports-5a0c5123bfde?source=collection_archive---------34-----------------------

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

Photo by Austin Distel on Unsplash

使用这些技巧来提高你的报道技巧

报表对业务来说并不陌生,它们是一项基本需求。报告帮助用户回答问题非常重要,这样他们才能成功。

如果做得好,报告可以回答问题,并迅速将公司推向数据驱动的方向。当管理层理解数据的价值时,他们会更快地走向分析的成熟。

这里有一些关于如何改进你的报道的建议。

报告目的是什么?

在开始使用任何数据之前,您必须确定需要回答什么问题以及为什么要问这个问题。通常,业务问题可能不是一个实际的问题,而是一个难题。

通常,业务用户不会谈论统计术语;他们只陈述自己的工作目标。倾听那些表明他们需要知道什么或他们需要什么来推动业务的话语。

这些问题中有许多可以归结为“我的团队工作出色吗?”

你的工作是将企业的问题和顾虑转化成有用的格式

例如,一位客户服务经理表示,客户抱怨响应速度慢。你怎么知道顾客说的是不是真的?

你可以在每个阶段测量门票的年龄。如果公司承诺在七天内关闭故障票证,报告将显示超过六天的未结票证。如果结果显示 100 张票中只有 95 张符合标准,你可以认为它们符合要求。

然而,如果反过来,公司需要测试是否有足够的资源来管理这项工作,或者目标是否无法实现。事实证明客户是正确的!

有效运营报告的技巧

我们经常讨论创建数据故事或仪表板,您必须了解您的目标受众。在这里,目标是经理。

一份有用的报告的关键是揭示企业是如何追踪目标的。报告的最佳实践包括以下特征:自动生成,在一个中心位置可用,并具有标准格式。

技巧 1:使用自动化批处理来保持一致性

大多数报告都是从数据库生成的。我们通过称为批处理的自动化流程来创建报告。

批处理是在非工作时间运行的一系列程序。在批处理过程中,我们从源中提取数据,将其转换为有用的信息,然后将其放入报告中。

即使使用实时数据,仍然需要清理过程。数据很少能以原始状态显示。这使得实时报告如此具有挑战性。业务或计数规则必须在显示数据的同时尽快应用。

技巧 2:向下钻取路径应该有一个快速的结尾

设计摘要报告时,要考虑如何访问详细信息。用户从汇总数据到详细信息的途径称为信息路径。

您的用户从条形图开始。用户单击单个条来显示该行中记录的数量。那么用户应该在路径的最后一步,即单独的数据行。最佳做法是将点击限制在详细数据。

在三次点击之内,用户应该得到可操作的信息。

研究你的信息路径,确保用户不会无休止地点击!你的工作是带领他们找到他们想要的答案。

提示 3:提供计数规则的链接

用户必须了解哪些数据支持一个报告,这样他们才能了解报告显示的是什么信息。现代报告有数字格式。请确保您添加了计数规则的链接,这些规则解释了数据收集方法、数据过滤器、公式以及使值呈红色或绿色的原因(以显示负趋势或正趋势)。

用户并不总是了解数据库中的哪些信息为报告提供了素材。

有些人不知道他们的工作习惯会如何影响过程结果。例如,如果报告衡量更新的及时性,员工必须根据需要更新记录。如果员工没有这样做,他们的详细报告上的红色列可能会令人震惊。

计数规则还有第二个用途。他们为新工人提供培训。他们能够理解企业想要实现的目标。

额外提示:使用交通信号灯来集中用户的注意力

交通信号灯通常用于显示流程何时失控。这个概念是基于标准的交通信号。红色代表停止!(或对麻烦的警告),而绿色意味着去或好。近年来,这种方法受到了批评。许多使用这种方法的报表构建者用所有的颜色创建了一个马戏团的外观。

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

最新的方法是使用性能信号。在这种方法中,如果表格单元格符合要求,则用灰色突出显示。越界度量显示为红色边框。

这个方法在不隐藏数据的情况下吸引用户的注意力,如下例所示。

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

报告是你的第一步

报告是分析成熟的开始。虽然有些人认为这项任务很简单,但它对企业的最终成功至关重要。

最初出版于 https://www.zencos.com。

改善数据科学工作流程的 3 个技巧

原文:https://towardsdatascience.com/3-tips-to-improving-your-data-science-workflow-71a6fb8e6f19?source=collection_archive---------13-----------------------

这些简单的技巧是根据我自己的学习经验设计的,应该可以帮助你提高数据科学工作、项目管理以及与他人分享时的成果。

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

1.笔记本和降价

近年来,用于编写代码的笔记本变得越来越流行,尽管许多人仍然喜欢在更传统的 IDE 环境中编写代码。重要的区别在于你什么时候想分享你的作品;当把你的作品发给同事或同学时,利用代码单元与减价交织的笔记本格式是非常宝贵的。

我使用任何笔记本的目的都是让人们在没有任何项目知识的情况下拿起它,并完全理解分析、决策和最终结果的含义。

为此,我通常遵循以下规则:

  • 标题和介绍应该清楚地定义分析的目的
  • 各部分之间应该有所区别
  • 任何使用的方法都应该在一个标格中介绍、解释或引用,用 LaTeX 格式正确书写数学
  • 输出图表应正确标注清晰的标题、轴标签和图例标签
  • 代码单元应该有明确定义名称的变量和注释,用于根据需要解释更小的步骤

例如:

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

2.跟踪代码的进度

你刚刚编写了处理数据的代码,你按下运行按钮,坐在那里等待你的代码块旁边的星号变成一个数字,等待…等待…

这听起来熟悉吗?当我刚开始学习编码时,这种事情发生得太频繁了。有几个解决方案,但我发现最简单的是在循环中使用打印函数来跟踪代码完成了多远。

下图中的代码准确地显示了如何跟踪 iPython 笔记本中任何循环的当前进度。更详细的写上去可以在这里找到

这意味着我现在知道我是否有时间去喝杯茶,或者需要让代码通宵运行,同时专注于另一项任务。它也有助于在需要完成工作所需的时间范围内更新同事,因为我可以估计在更大范围内应用时所需的时间。

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

3.高效优化参数

当我第一次开始学习应用机器学习时,我会逐个手动更改参数输入,并记录下最终输出的结果。虽然这有助于我对参数的理解,但这很费时间,而且效率很低。

随着时间的推移,我凭直觉开发了三种方法(尽管我不认为我是第一个提出这些方法的人),它们极大地改进了我的参数调整:

  1. 利用循环自动测试参数输入
  2. 在循环内部迭代构建输出表,为图表或发布做好准备
  3. 用互动动画演示参数的影响

第一种方法似乎有些显而易见,使用一个简单的循环来增加每个间隔的参数,并输出该增量的值或图形,而不是手动逐个更改输入。这甚至可以用于网格搜索参数测试,我们基本上是在多个输入的可能参数范围内进行强力检查,如下所示。

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

为了进一步改进这一点,一个好的方法是形成一个数据框,在应用每个增量时添加其输出,而不是简单地打印输出。

做到这一点的一种方法是通过以下方式:

  • 引入一个空的熊猫数据框
  • 测试循环内的参数输入
  • 应用 append 函数向引入的数据帧添加一行,其中包含每次循环迭代的输出

下面的完整代码显示了这一点,其中每一行都被整齐地格式化为一个数据帧,以添加到前面的输出中。这也使得创建任何摘要图变得容易,并且可以很容易地用作准备发布的普通表格。

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

最后,虽然大多数项目可能不需要,但是使用交互式动画来显示参数变化的输出。我在这里写了一份关于如何做这件事的完整指南,并在本笔记本中使用,以更好地说明改变参数对输出稳定性的影响。

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

我希望这些对你有用,并能帮助你提高数据科学的成就。

谢谢

哲学(philosophy 的缩写)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值