TowardsDataScience 博客中文翻译 2019(四百四十二)

原文:TowardsDataScience Blog

协议:CC BY-NC-SA 4.0

集合论——基本符号

原文:https://towardsdatascience.com/set-theory-basic-notation-da93c3d48090?source=collection_archive---------10-----------------------

第二部分——简单看一下操作、符号和文氏图

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

Originally Published: https://www.setzeus.com/

如前一篇文章所述,学习集合论的一个核心好处不是源于任何特定的理论,而是建立的语言。这就是为什么这篇后续文章的大部分内容广泛涵盖了集合论符号、运算&可视化表示的基础知识。让我们从介绍表示集合&的两个最基本的符号开始。下表包含一个示例集, A ,包含三个元素:

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

Originally Published: https://www.setzeus.com/

第一行显示了具有三个不同元素的集合A(A = { 1,2,3 });第二行展示了正确的方式来表示某个元素 *1、*属于集合 A 。到目前为止相当直接——但是一旦我们通过普通操作开始第二次集合&之旅,集合理论就变得有趣多了。

对于下表,我们来介绍两个次级集合 B & C ,它们分别包含以下元素: B = {3,A,B,C,D,E}C = {1,2} 。尽管我们总共介绍了三个集合(A、B、& C),但下面的示例操作一次只涉及两个集合,因此请密切注意最左侧列中标注的集合。下表包含五个最常用的集合操作数:

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

Originally Published: https://www.setzeus.com/

这就是集合论中最常见的五种运算。它们在纯数学之外的领域也很受欢迎。事实上,您很可能在过去见过或处理过这些类型的操作,只是没有确切的术语。举个例子,让任何一个小学生描述两个相交组的维恩图&他们会直观地得出正确的结果。

再看看最后一行,相对补语——这不是很奇怪的措辞吗?相对于什么?如果 A — B 的相对补码定义为 *A 而不是 B,*那么我们如何 表示不是 B 的一切

万能集和空集

事实证明,如果我们想要得到一个有意义的答案,我们首先必须提供一些背景知识。通常在问题开始时明确说明,当一个集合的可容许元素被限制在一些固定的对象类时,存在一个 泛集 即包含该特定问题的所有元素的大集合。例如,如果我们想要处理严格的英文字母集合,那么我们的通用集合由字母表中的 26 个字母组成。**

对于 U 的任意子集 A ,将 A补集(用 AU*—A表示)定义为 AU 的所有元素的集合。参考上面提出的问题,B 的*补是指泛集内不是 B 的一切,包括 A 。**

在我们继续之前,还有一个概念集合对基本理解非常重要:** 集合。注意这里选择的语法是经过深思熟虑的。这是一次旅行,但只有一个单个的空集,因此它是"空集,"永远不是"空集。"虽然等价性超出了本文的范围,但这里的基本理论是,如果两个集合有相同的元素,它们就是相等的;因此,只能有一个没有元素的集合。因此只有一个空集。**

维恩图&超越

维恩图,在 1880 年由一个叫约翰·维恩的人正式发明,正是你所想象的,尽管学术定义是这样的:

维恩图是显示不同数学集合之间所有可能的逻辑关系的示意图。

下面是六种最常见的维恩图,几乎都显示了我们最近讨论过的操作数:

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

Originally Published: https://www.setzeus.com/

从集合的最基本的符号&它的元素开始,我们现在已经讨论了基本的操作数,以便产生上面的可视化指南。除了左下方的对称差之外,其他操作都涵盖了。为了不留下任何知识上的空白,对称差,也称为析取并,仅仅是在任一集合&中不相交的元素的集合。****

我们将通过引入基数的概念来总结这一点。由绝对值符号表示,集合的基数就是包含在指定集合中的唯一元素的数量。在上面的例子中,我们三个集合的基数是:|A| = 3,|B| =6,& |C| = 2。在进入下一部分之前,需要思考一些问题——基数&可能子集的数量之间有什么关系?**

集合论——基数和幂集

原文:https://towardsdatascience.com/set-theory-cardinality-power-sets-bced69d8f248?source=collection_archive---------11-----------------------

第三部分——负责分配决策的直觉

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

Originally Published On https://www.setzeus.com/

在本系列文章第一篇 & 第二篇中,基本的符号和运算已经清楚,我们现在已经建立了对集合论的基本理解。第三篇文章通过对任何给定集合中最重要的属性进行分区,进一步丰富了这一知识:它包含的独特元素的总数。

也称为 基数 ,集合中不同元素的数量为给定集合的进一步、更丰富的分析提供了基础出发点。首先,基数是我们看到的第一个独特的属性,它允许我们客观地比较不同类型的集合——检查从一个集合到另一个集合是否存在双射(带有轻微限定符 ) 的*函数的花哨术语。另一种形式的应用,也是本文剩余部分的主题,基数提供了一个窗口,可以查看给定集合中存在的所有可能的子集。*从字面上理解就是日常的决策分配问题,比如预算一次购物旅行或者平衡一个投资组合。

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

Originally Published On https://www.setzeus.com/

左边的例子(上面的 mobile)描述了五个独立的集合,它们各自的基数在右边。正如所见,集合的基数符号类似于绝对值符号——夹在两条垂直线之间的变量。这些例子很清楚,除了最后一行,它强调了这样一个事实:只有集合中的惟一元素对基数有贡献。

还记得上一篇文章中的子集吗?原来,某个集合的基数AA&AA的可能子集的数量有一种令人着迷的关系。如下所述,可以从某个子集构建的子集的数量随着基数的增加而增加,增加量是可预测的:

# C 中的可能子集= |C|

我们将在下面演示一个例子。然而,让我们先花点时间反思一下上面公式的直觉。把基数想象成一个集合所代表的“槽”的总数。当构建某个子集时,对每个可能的“槽”做出一个*布尔(是/否)*决策这意味着添加到集合中的每个唯一元素(也就是基数增加 1)都会使可能的子集数量增加两倍。作为一名程序员或计算机科学家,一旦你意识到一个给定集合的所有子集都可以用一个纯二进制数的表来计算,你可能会更加欣赏这个逻辑。

发电机组

在我们为上面的示例集 C 导出所有子集之前,我想介绍最后一个术语——幂集 用大写字母 S 表示,后跟一个包含原集合 S © 的括号,幂集是 C 的所有子集的集合,包括空/空集&集合 C 本身。下表展示了幂集 ,集合 C 的所有可能子集的不同排列都包含在一个大集合中。

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

For formatting reasons I excluded commas between sets***

动力装置有什么用处?好吧,你可能已经在不知不觉中多次使用了力量集合背后的直觉。任何时候你从一个更大的集合中选择一个物品子集,你都是在选择一个能力集合中的一个物品。例如,一个小孩拿着 5 美元逛糖果店——她会选择所有糖果中的哪个元素?或者对于更技术性的问题,作为软件工程师,您可能希望查询所有可能的数据库用户*,这些用户也具有属性 X & Y —* 另一个例子是从所有可能的子集中选择一个子集。

论等价和双射函数

我们现在理解了集合的基数,为什么它很重要,以及它与幂集的关系。所以让我们暂时回顾一下我们在这篇文章开始时忽略的东西:在集合论中到底是如何定义等价的?

可以说,具有相同基数的两个集合共享一些共同的属性,但是相似之处仅限于此——如果其中一个集合的某个元素重复多次会怎么样?如果两个集合共享相同的基数 & 个元素会怎么样?不可否认,它们在某种程度上是“相等”的,但即使在这种情况下,仍然有区分的空间,因为每个集合可能有不同的元素重复相同的次数。这里的要点是集合论中等价的概念相对于数学的其他分支来说有点陌生。在这个世界中建立等价关系需要它自己的介绍语言。本系列的最后一篇文章介绍了等价的概念,以及它的基本性质,如单射、双射、&满射函数。

原载于

https://www.setzeus.com/

集合论—函数

原文:https://towardsdatascience.com/set-theory-functions-4548c1b106f9?source=collection_archive---------11-----------------------

用双射、满射和内射描述行为

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

Originally Published On https://www.setzeus.com/

今天我们将在集合论的世界里展开 函数 。与前面介绍的概念相似,集合内标准函数的命名法与其他数学分支略有不同,&因此需要复习。有相当多的术语要介绍,所以让我们直接开始吧!下面的第一个函数术语表反映了标准函数的域、范围、&输出的概念:

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

Originally Published On https://www.setzeus.com/

集合论世界中的一个函数简单来说就是集合 A 中的一些(或全部)元素到集合 b 中的一些(或全部)元素的映射,在上面的例子中,A 中所有可能元素的集合被称为 *;而 A 中作为输入的元素被专门命名为 arguments 。在右边,所有可能输出的集合(在其他分支中也称为“范围”),称为;而从 A 映射到 B 中的实际输出元素的集合被称为 图像。*

到目前为止没什么太复杂的,只是用一种新的方式定义函数的参数。接下来,我们将介绍如何用常见的函数类型来描述这些映射函数的行为。

注射、满射和双射

*在集合论中,常用三个术语对集合映射进行分类:内射、**满射&双射。*不幸的是,这些术语有几个不同的名称,这加剧了混淆——因此,我们将首先回顾每个定义,然后,浏览一些直观的示例。这三个术语都描述了参数&图像的映射方式:

  • 一个函数是 内射的 ( 又名“一对一”),如果共域的每个元素至多被映射到域的一个元素。
  • 一个功能是一个一个一个 ( 一个)。 k.a “到”)如果共域的每个元素被映射到域的至少一个元素。(即函数的像和共域相等。)
  • 如果密码子的每个元素被结构域的一个元素精确地映射到上,则函数是 双射 ( 又名“一对一的&到”、“一对一的对应关系”)。

在这里,复杂命名法之上的众所周知的“樱桃”延伸到了“注射的”、“满射的”和“双射的”这些词的可能含义用于描述一个函数(映射)时,前者的含义是正确的;然而,纯粹通过这些特征来识别函数(映射)也是正确的。所以有注射行为的函数叫做注射*,有注射行为的函数叫做注射,&最后,有双注射行为的函数叫做双注射。*

重新阅读上面的要点。双射只是一个满足先前要求的函数——也就是说,该函数是双射&射。&射函数不一定是射的。接下来是一个直观的例子,这三个分类导致了以下四种可能的注射&射特征组合的集合函数,总结如下:

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

Originally Published On https://www.setzeus.com/

我们走吧!我们现在对集合世界中常见的映射类型有了初步的了解。然而,这绝不是旅程的结束,因为我们一直在回顾高级别介绍——与此相反,这只是开始。

集合论的基础是解开数学高等分支中的理解的关键。为了继续我们在许多分支中的提升,我们接下来将利用我们的集合论知识来消化所有数学史上绝对最具开创性的理论之一:策梅洛-弗兰克尔集合论。

原为发表于

https://www.setzeus.com/

集合论——历史与概述

原文:https://towardsdatascience.com/set-theory-history-overview-c98bac98f99c?source=collection_archive---------5-----------------------

第一部分——什么是集合论&为什么它与今天相关?

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

Originally Published: https://www.setzeus.com/

无穷大的概念在意识形态上与普通的数学术语相去甚远——在数学圈之外,没有任何其他主题可以从实用的分析工具转化为神话般的现象。与宗教和哲学等文化话题相结合,无限的概念拥有一种特殊的神性光环。

曾几何时,在所有的学科中,存在一个单一的无限,这是一个基本假设。

然后,在 1874 年,一位相对默默无闻的数学家发布了一组突破性的观察&针对这一世俗的、根深蒂固的信仰的革命性问题。一个叫乔治·康托(Georg Cantor)的人,在他现在已成为传奇的出版物 中,关于所有实代数数 的集合的一个性质,证明了实数的集合比实代数数的集合“更多”。这第一次表明,存在不同大小的无限集合(不要担心,我们将很快详细回顾他的论文以澄清)。

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

A Set Is Many That Allows Itself To Be Though Of As One — Georg Cantor

在 1874 年和 1897 年之间,康托尔不顾一切地出版了一份又一份出版物——把他的抽象集合理论扩展成一门欣欣向荣的学科。然而,他遇到了持续的抵制和批评;事实上,许多训导者认为他的理论侵犯了哲学家的领域&违反了宗教原则。

然而,一旦分析的应用开始被发现,人们的态度就改变了。他的想法和结果逐渐被接受。到了 1900 年代,他的观察、理论出版物最终导致了对现代集合论(T21)的认可,这是一个全新的、完全不同的数学分支:

集合论 是关于称为集合的明确集合的数学理论,这些集合由称为集合的成员或元素的不同对象组成。

0 和 1 之间有多少个数字?

在简洁的四页半,康托尔的原始出版物设置为紧凑的辉煌展示酒吧。它被分成两种不同的证明,它们一起得出结论,承认至少两种独特类型的无限。

理论的第一部分考察了实数、代数 &的集合,确定它是一个可数无穷集合*。这里不要迷路,“可数”不一定是严格按整数计数;在集合论的上下文中,可数意味着一个集合,甚至是无限元素中的一个,可以用一个可重复的序列来描述*,比如一个有序的多项式函数*。康托尔把这个可以与一个序列一一对应的无穷多个数的集合的性质称为 一一对应。*

简而言之,所有实数、代数数的集合或集合可以使用一些具有不同次数系数的多项式的理论序列&来导出;因此,所有实数、代数数的集合是一个可数无穷集合。

康托尔论文的第二部分分析了实数的作用,复数数字,又称 先验数字 。超越数,最好的例子是 pi & e,有一个奇特的性质,在数学上不可能用多项式函数来推导它们——它们是而不是代数的。无论高度、部分数量、次数或系数如何,没有一个序列在它的可数无穷集合中计算圆周率。**

康托尔接着指出,在任何实数的闭区间[ ab ]中,至少存在一个超越数,它永远不会被计数到一个可数无穷集合中。因为存在一个这样的数,所以假设在实数家族中存在无限个超越数。**

因此,第一次证明了一组连续的、流动的不可数数字之间的非常明显的区别&一组可数的、可排序的数字,例如所有的实代数数。

论符号与运算

康托尔的第一份出版物就停留在对至少两种不同的无限的惊人确认上。从这个原始出版物开始,出现了一系列附录,缓慢但稳定地为现代集合论铺平了道路。

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

Originally Published: https://www.setzeus.com/

这里值得注意的一个有趣的观察是,大多数在实践中使用集合论的人并不看重某个特定的定理,而是更看重它所建立的的广义语言。由于它的抽象性质,集合论的影响存在于许多其他数学分支的幕后。在需要微分&积分的分析中,对极限&函数连续性的理解最终基于集合论。在布尔代数中,“与”、“或”、“非”的逻辑运算与交集、并集、 & 差的集合论运算相对应。最后但同样重要的是,集合论提供了拓扑学的基础,研究几何性质&的空间关系**

现在对集合的历史有了基本的了解&快速预览它的影响深度,是时候熟悉基本的集合论符号了。在下一篇文章中,我们将介绍集合维恩图的常见符号、操作以及许多配置。

来源

集合论:第一门课程
集合论的一本书

在谷歌云平台上设置深度学习服务器

原文:https://towardsdatascience.com/set-up-a-deep-learning-server-on-google-cloud-platform-b4d6823d6cd8?source=collection_archive---------22-----------------------

使用 TensorFlow、Keras、Python 和 Jupyter Notebook 配置和设置深度学习服务器的非常简单的方法

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

Photo by Thuan Nguyen (The Butchart Gardens, Victoria, British Columbia, 10/2019)

诸如机器学习和深度学习的人工智能(AI)领域正在快速发展,并且由于深度学习在试图训练大量数据(即,大数据)的准确性方面的优势,深度学习最近变得更加流行。近年来,人工智能深度学习在包括工程、医学和制造业在内的不同领域取得了令人惊叹的成就。为了促进和加快建立、训练和测试神经网络的任务,研究人员和从业人员可以使用各种人工智能框架,其中由谷歌开发的开源库 TensorFlow 是目前最受欢迎的一个。手动安装包括工具在内的所有必需的软件应用程序,并使它们在深度学习服务器中平稳可靠地工作,并不是一件容易的事情。使用深度学习映像在谷歌云平台(GCP)上建立远程服务器会容易得多,这些映像可以与所有必要的软件应用程序和开发工具一起使用。它甚至更好的信用$300.00,可用于服务器。

1.在 GCP 创建项目

1.1 创建一个 Google 帐户或 Google Gmail 帐户

使用谷歌云平台需要谷歌账号或 Gmail 账号。如果用户没有,他/她需要创建一个

1.2 获得 GCP 价值 300 美元的 12 个月免费试用

访问链接:

https://cloud.google.com/free/

使用上述 Google 帐户/Gmail 获得此信用点数。

2.访问 GCP 控制台

—)打开 Chrome 浏览器

—)输入:谷歌云控制台进入网址搜索框

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

3.使用 GCP 深度学习图像创建深度学习服务器

在 https://cloud.google.com/deep-learning-vm/访问云深度学习虚拟机镜像链接

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

点击转到控制台

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

单击顶部菜单栏上的箭头选择项目,例如,选择名为“EXAMPLE_PROJECT”的项目(备注 : 新的深度学习服务器将在这个项目下创建为 GCP 计算引擎实例。)

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

单击计算机引擎上的启动

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

输入实例的名称,例如“tf1-keras-ann”(注释 : 用户可以根据自己的需要命名实例。)

选择区域:“us-east1-c”或此链接上可用的任何其他区域:https://cloud.google.com/compute/docs/regions-zones/

选择机器类型:点击箭头打开下拉菜单并选择机器类型:n1-standard-8 对于一个正常的深度学习项目来说是一个不错的选择。

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

选择 GPU 的数量

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

若要降低使用服务的费用,请选择“无”但是,如果用户需要,请选择要部署的 GPU 数量。

选择 AI 框架的版本:选择 TensorFlow 1.xx 或 TensorFlow 2.0。

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

选择启动盘类型和大小

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

选择标准永久磁盘或 SSD 永久磁盘
,输入以 GB 为单位的引导磁盘大小:64 GB 或更大

单击部署

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

…等待深度学习服务器的部署被部署………

点击产品和服务图标(左上角的三个水平条)打开菜单

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

选择计算引擎

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

完成了!

深度学习服务器已经成功搭建在谷歌云平台(GCP)上。

重要提示:

—)用户在不使用虚拟机时必须将其停止,以避免不必要的费用。

用 Playground.jl 在 Julia 中设置虚拟环境

原文:https://towardsdatascience.com/set-up-virtual-environment-in-julia-with-playground-jl-7ab02a0df751?source=collection_archive---------36-----------------------

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

在任何语言的项目中,有超过十亿个理由让你想要使用虚拟环境,这种情绪在 Julia 中也不例外。当与一个没有虚拟环境的团队一起工作时,开发 web 应用可能是灾难性的。幸运的是,Julia 有一个相当于 virtual/pipenv 的包虚拟化工具,叫做 Playground.jl

搭建游乐场

在我们可以使用操场之前,我们当然需要设置它。如果您还没有添加软件包,您可以使用:

julia> using Pkg
julia> Pkg.add("Playground")

有趣的是,这对我不起作用,所以我最终切换到 Pkg REPL,只需按下],然后通过 URL 添加它,就像这样:

julia> ]
pkg> add [https://github.com/rofinn/Playground.jl](https://github.com/rofinn/Playground.jl)
   Cloning git-repo `[https://github.com/rofinn/Playground.jl`](https://github.com/rofinn/Playground.jl`)
  Updating git-repo `[https://github.com/rofinn/Playground.jl`](https://github.com/rofinn/Playground.jl`)
[ Info: Assigning UUID f8d4ef19-13c9-5673-8ace-5f74ae9cf246 to Playground
 Resolving package versions...
 Installed Syslogs ─ v0.3.0
 Installed Memento ─ v0.12.1
  Updating `~/.julia/environments/v1.0/Project.toml`
  [f8d4ef19] + Playground v0.0.0 #master ([https://github.com/rofinn/Playground.jl](https://github.com/rofinn/Playground.jl))
  Updating `~/.julia/environments/v1.0/Manifest.toml`
  [f28f55f0] + Memento v0.12.1
  [f8d4ef19] + Playground v0.0.0 #master ([https://github.com/rofinn/Playground.jl](https://github.com/rofinn/Playground.jl))
  [cea106d9] + Syslogs v0.3.0
  Building Playground → `~/.julia/packages/Playground/AhsNg/deps/build.log`

酷!

为我建造操场也通过一个错误,一个 Stacktrace: Pkg 未定义的错误。为了解决这个问题,我必须首先运行:

ENV["PLAYGROUND_INSTALL"] = true

然后我不得不用朱莉娅·REPL 的 Pkg 来建造它…我不确定这是为什么,但我想这与操场依赖有关。

虽然这不是必需的,但我也在我的。bashrc 文件,因为有时需要它:

echo "PATH=~/.playground/bin/:$PATH" >> ~/.bashrc

使用

用法相对简单,但是需要注意的是,您可能需要关闭并重新打开终端,以便 bashrc 文件回显新命令。为了创造我们的环境,我们使用操场创建:

playground create --name example

您还可以根据需求创建环境:

playground create --requirements /path

如果使用声明文件,你应该确保已经安装了DeclarativePackages.jl。我们可以像这样激活我们的操场环境:

playground activate /path/to/your/playground

另外,playground 保存了我们环境的名称,所以我们可以在终端中使用名称 bash 标签。

playground activate --name example

为了移除我们的环境,我们将使用 rm。

playground rm [playground-name|julia-version] --dir /path

此外,我们有操场名单和操场清洁。

playground list
playground clean

就是这样!

这就是概要!这就是全部内容,playground 很容易使用,也不太深入。因此,希望在缺乏操场文档资源的情况下,这是相对有价值的,并且您现在知道如何在 Julia 中创建和管理虚拟环境了!

使用此扩展设置您的 Jupyter 笔记本

原文:https://towardsdatascience.com/set-your-jupyter-notebook-up-right-with-this-extension-24921838a332?source=collection_archive---------2-----------------------

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

(Source)

一个方便的 Jupyter 笔记本扩展,帮助您创建更有效的笔记本

在精彩的演讲“我不喜欢笔记本”(视频幻灯片)中,Joel Grus 对 Jupyter 笔记本提出了无数批评,这可能是最受欢迎的数据科学环境。我发现这个演讲很有教育意义——当每个人都认为某件事很棒时,你需要那些愿意批评它的人,这样我们才不会变得自满。然而,我认为问题不在于笔记本本身,而在于它是如何被使用的:像任何其他工具一样,Jupyter 笔记本可能(也确实)经常被滥用。

因此,我想修改 Grus 的标题并声明“我不喜欢凌乱的、没有标题的、没有解释或评论的无序笔记本Jupyter 笔记本是为文字编程而设计的——将代码、文本、结果、图表和解释混合在一个无缝文档中。据我所见,这种观念经常被完全忽视,导致 GitHub 上可怕的笔记本充斥着资源库:

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

Don’t let notebooks like this get onto GitHub.

问题很明显:

  • 没有标题
  • 没有解释代码应该做什么或如何工作
  • 电池运行不正常
  • 单元输出错误

Jupyter 笔记本可以成为学习、教学、探索和交流的非常有用的工具(这里是一个很好的例子)。然而,如上所述的笔记本在所有这些方面都失败了,当这些问题出现时,几乎不可能调试其他人的工作,甚至不可能弄清楚他们在试图做什么。至少,任何人都应该能够为笔记本命名一些有帮助的东西,写一个简短的介绍,解释和结论,按顺序运行单元格,并确保在将笔记本发布到 GitHub 之前没有错误。

解决方案:安装 Jupyter 笔记本扩展

我决定看看 Jupyter 笔记本扩展能做些什么,而不是仅仅抱怨这个问题。结果是在自动打开新笔记本时的扩展:

  • 创建一个模板来鼓励文档
  • 插入常用的库导入和设置
  • 反复提示您将笔记本名称从“无标题”更改为

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

The extension running when a new notebook is opened

这个扩展的好处是它改变了默认值。默认情况下,Jupyter 笔记本没有降价单元格,没有命名,也没有导入。我们知道人类是出了名的不擅长改变默认设置,那么为什么不让默认设置鼓励更好的实践呢?把安装扩展想象成一个轻推——一个轻轻地推动你写更好的笔记本的东西。

要使用此扩展:

  1. 安装 Jupyter 笔记本扩展(无论如何你都应该使用)
  2. G o 到 GitHub,下载 [setup](https://github.com/WillKoehrsen/Data-Analysis/tree/master/setup) 文件夹(有 3 个文件)
  3. 运行pip show jupyter_contrib_nbextensions找到笔记本扩展的安装位置。在我的 Windows 机器上(带有 anaconda ),它们位于

C:\users\willk\anaconda3\lib\site-packages\jupyter_contrib_nbextensions

在我的 mac 上(没有 anaconda ),它们位于:

/usr/local/lib/python3.6/site-packages/jupyter_contrib_nbextensions

4.将setup文件夹放在上述路径下的nbextensions/中:

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

5.运行jupyter contrib nbextensions install安装新的扩展

6.运行 Jupyter 笔记本并启用nbextensions选项卡上的Setup(如果您没有看到此选项卡,请打开笔记本并转到edit > nbextensions config)

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

Enable the Setup extension on the nbextensions tab

现在打开一个新的笔记本,你就可以开始了!你可以在main.js中改变默认模板(参见我的关于编写 Jupyter 笔记本扩展的文章,了解更多关于如何编写你自己的模板的细节)。默认模板和导入相对简单,但是您可以根据需要定制它们。

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

Default template and imports

如果你打开一个旧的笔记本,你不会得到默认的模板,但每次运行一个单元格,你会被提示从Untitled开始更改名称:

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

The Setup extension will continue prompting until the notebook name is changed from Untitled.

有时候,你需要一点点坚持来改变你的方式。

离别的思绪

从现在开始,让我们努力创造更好的笔记本。这不需要太多额外的努力,而且回报很大,因为其他人(和你未来的自己)将能够从你的笔记本上学习,或者使用结果来做出更好的决定。这里有一些简单的规则来写有效的笔记本:

  • 给你的笔记本命名。当你有几十个文件时,简单但有用。
  • 添加清晰而简明的解释,说明您的代码做了什么,如何工作,最重要的结果是什么,以及得出了什么结论。我使用笔记本的标准模板来鼓励这个习惯。
  • 在共享笔记本之前,请按顺序运行所有单元格,并确保没有错误。

安装扩展不会解决所有与笔记本相关的问题,但希望这些小小的推动会鼓励你养成更好的习惯。建立最佳实践需要一段时间,但是,一旦你把它们记下来,它们往往会坚持下来。通过一点点额外的努力,我们可以确保下一次有人谈论笔记本时会说:“我喜欢高效的 Jupyter 笔记本。”

一如既往,我欢迎反馈和建设性的批评。可以通过 Twitter @koehrsen_will 联系到我。

使用 Windows Subsystem for Linux (WSL)和 Jupyter 建立数据科学环境

原文:https://towardsdatascience.com/setting-up-a-data-science-environment-using-windows-subsystem-for-linux-wsl-c4b390803dd?source=collection_archive---------4-----------------------

您将从本文中学到什么:在 Linux 系统中使用 WSL 在 Windows 中使用完全可定制的 Jupyter 笔记本建立一个完整的 Python 环境!

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

我们要做的是:

  • 设置 WSL (可选 ZSH哎呀呀
  • 设置蟒蛇
  • 设置可定制的 Jupyter 笔记本环境。

如果你喜欢这篇文章并想看更多,请务必关注我的简介。

设置 WSL

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

Windows Subsystem for Linux (WSL) is a compatibility layer for running Linux binary executables natively on Windows 10! It also has the added benefit of you getting full admin rights to the subsystem once installed.

首先,我们必须做一些初步的设置来让 WSL 工作:

1 —打开开发者模式

首先进入 Windows 10 设置菜单中的开发者设置:

设置➡更新&安全➡开发者➡开发者模式

或者简单地搜索“开发人员,然后点击“开发人员设置

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

在这里,您可能需要登录管理员帐户或获得临时访问权限来打开开发人员模式:

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

一旦启用,我们需要打开 Linux 的 Windows 子系统功能。

2 —为 Linux 打开 Windows 子系统

该菜单可通过以下方式访问:

控制面板➡程序➡打开和关闭 Windows 功能

或者通过搜索“ windows 功能并选择“打开或关闭 windows 功能

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

接下来,确保勾选了特性“Windows Subsystem for Linux”:

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

3 —重启电脑

我认为这不需要任何解释。

4 —安装 Ubuntu

前往微软商店,搜索 Ubuntu ,选择应用(唉…)您喜欢并安装它:

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

I’m personally using the default “Ubuntu” version.

当第一次启动时,你会被提示输入一个 UNIX 用户名密码,选择你认为合适的。

祝贺您,您现在拥有了一个全功能的 Linux 子系统,并拥有完全的管理员权限!

5 —设置 ZSH 和 Oh-my-zsh(可选)

就我个人而言,我不太喜欢默认终端的外观,所以我建议按照这个安装 ZSH我的天啊,如果你喜欢的话:

[## 用 zsh + oh-my-zsh + ConEmu 为 Linux 设置 Windows 子系统

的时代。NET 开发者被限制只能使用 Windows 作为平台的时代已经一去不复返了。(至少对于 ASP 来说是这样。网)。那个…

blog.joaograssi.com](https://blog.joaograssi.com/windows-subsystem-for-linux-with-oh-my-zsh-conemu/)

设置 Anaconda

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

Anaconda is one of the most widely used solutions for package management for R and Python, it comes with 1.500+ popular packages out of the box which is more than enough for 99% of all Data Science related tasks!

1 —下载 Anaconda 启动新配置的 WSL 并下载 Anaconda:

wget [https://repo.anaconda.com/archive/Anaconda3-2019.03-Linux-x86_64.sh](https://repo.anaconda.com/archive/Anaconda3-2019.03-Linux-x86_64.sh)

2 —安装 Anaconda 接下来,执行下载的文件来安装 Anaconda:

Anaconda3-2019.03-Linux-x86_64.sh

NB :如果使用 ZSH 遇到问题,使用“bash anaconda 3–2019.03-Linux-x86 _ 64 . sh”。

按照屏幕上的说明安装 Anaconda 之后,只需删除安装文件:

rm Anaconda3-2019.03-Linux-x86_64.sh

3 —更新 Anaconda 现在您应该能够启动您的 Anaconda 环境了:

source ~anaconda3/bin/activate

*" ~ anaconda 3/bin/activate "*是 Anaconda 将自己安装的默认位置,但是如果您选择了其他位置,只需指向该目录。

激活后,启动完全更新:

conda update --all

4 —完成 一旦更新,向后靠,凝视你的创作,看到它是好的…

您已经成功地用 Anaconda 3 为 Linux 设置了一个 Windows 子系统!

设置 Jupyter 笔记本电脑环境

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

Jupyter is one of the go-to IDE for interactive cell-based code execution with Python and R. Really well suited for data exploration and analysis!

这非常简单,因为 Jupyter 是 Anaconda 自带的,所以如果您对默认的 Jupyter 笔记本界面/环境满意,那么您已经完成了!激活 Anaconda 环境后,只需使用以下命令启动笔记本:

jupyter notebook

WSL 实例应该自动启动一个连接到笔记本的窗口,但如果不是这样,只需在 WSL 终端中找到主机地址,如下所示:**" http://localhost:8888/tree?token = somepletylongtokenhere "**并将其复制到您选择的浏览器中。

定制 Jupyter 笔记本电脑

我将介绍两种定制 Jupyter 笔记本体验的主要方式,分别是 NbextensionsThemes ,跳转到任何与您相关的部分。

1-设置扩展

值得庆幸的是,这也很简单,只需运行以下命令来设置 nbextensions 包并重启您的笔记本:

pip install jupyter_contrib_nbextensions && jupyter contrib nbextension install

接下来,当您启动名为“Nbextensions”的笔记本时,会出现一个新的选项卡

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

现在你可以简单地挑选你想要/需要的插件,并根据你的心意定制。该界面还为您提供了每个扩展的截图和描述,因此您可以判断是否要启用它。

我特别推荐以下几点:

  • 腹地 —便于自动校正。
  • 目录(2) —用于根据您的减价标题和副标题自动生成目录。
  • 切换所有行号——便于调试。
  • 变量检查器 —对于一个类似 R 的变量概览,真的很有用!
  • ExecuteTime —用于为单元执行计时。
  • Autopep8 —用于自动将您的代码格式化为 pep8 标准。
  • 可折叠标题 —便于隐藏笔记本的各个部分。

就是这样!如果您觉得这还不足以打消您对扩展的兴趣,我可以强烈推荐以下关于同一主题的文章:

[## Jupyter 笔记本扩展

如何充分利用笔记本电脑环境

towardsdatascience.com](/jupyter-notebook-extensions-517fa69d2231)

2 —设置主题

我个人使用的是 GitHub 上 dunovank 的这个包:

要安装此软件包,只需运行以下命令:

pip install jupyterthemes

接下来开始你选择的主题;亮** (请参考GitHub*链接了解更多定制选项)只需在您的 WSL 终端中运行以下命令之一:*

# DARK
**jt -t onedork -fs 95 -altp -tfs 11 -nfs 115 -cellw 88% -T**# LIGHT
**jt -t grade3 -fs 95 -altp -tfs 11 -nfs 115 -cellw 88% -T**

我更喜欢深色主题,它让你的笔记本看起来像这样:

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

就是这样!你完了。享受你的新环境!

感谢阅读

我希望它对你有用。如果你觉得我遗漏了一些重要的东西,或者你只是想给我留下一些反馈,请留下你的评论!

如果你想看和了解更多,一定要关注我的 媒体 🔍和 碎碎念 🐦

** [## 彼得·尼斯特鲁普-中等

阅读彼得·尼斯特拉普在媒介上的作品。数据科学、统计和人工智能…推特:@PeterNistrup,LinkedIn…

medium.com](https://medium.com/@peter.nistrup)**

为初学者设置 AWS EC2 实例

原文:https://towardsdatascience.com/setting-up-aws-ec2-instance-for-beginners-e34fa71a4758?source=collection_archive---------19-----------------------

如果你正在从事一个大数据机器学习项目,你很可能需要亚马逊网络服务(AWS)、谷歌云服务或微软 Azure 的服务。我第一次接触云计算是在 AWS,所以这是我最熟悉的平台。我希望使用正确的操作系统和软件包设置虚拟环境的过程像单击一个选项一样简单,但是出于安全原因和提供广泛的选项,情况并非如此。

以下是步骤:

  1. 选择 EC2 AMI 和实例
  2. 改变你的。pem 密钥权限
  3. 通过 SSH 访问您的 EC2 实例
  4. 通过 SCP 或 Git 管理您的数据

**T3 选择一个 EC2 AMI &实例 **

点击这个 链接 。登录您的 AWS 帐户,如果您还没有,请创建一个。您将花费大部分时间管理 AWS 实例的地方是 AWS 管理控制台

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

选择 EC2 服务。

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

点击启动实例

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

现在,您需要选择您喜欢的 AMI (Amazon 机器映像)。AMI 因其操作系统和预安装的软件包而异。根据我的经验,大多数 AMI 都提供 Linux 或 Ubuntu 的变体。我给初学者推荐这个 Ubuntu 深度学习 AMI

接下来,选择您的首选实例。实例因存储容量以及 CPU 和 GPU 能力而异。亚马逊在这里详细介绍了他们的选项

注意:如果你选择了一个相对强大的实例,那么 AWS 会要求你提交一份使用意图的说明。他们通常会在几天内回复。

改变自己。pem 密钥权限

选择实例后,会要求您创建一个新的或选择一个现有的密钥对,如下所示。

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

您的密钥将作为下载到您的计算机上。pem* 文件。最佳做法是仔细存放和整理您的钥匙。如果您失去了它们,那么您就完全没有希望再次访问您的 EC2 实例。请把前面的句子读 10 遍。启动您的实例。*

我通常将我的密钥存储在标有的隐藏文件夹中。MacOS 上的 ssh* 。假设您的密钥已下载到“下载”文件夹,请打开一个终端窗口,并使用您合适的密钥名称键入以下命令:*

*cd downloadsmv ~/downloads/yourkey.pem ~/.ssh*

默认情况下,您的密钥带有权限限制,这将阻止您访问实例或在实例上使用其他命令。为避免这一问题,假设您位于密钥所在的目录中,请键入以下内容:

*chmod 700 yourkey.pem*

通过 SSH 访问您的 EC2 实例

EC2 实例,检查;。pem 键,检查。在继续之前,您需要找到以绿色突出显示的公共 DNS。单击您新创建的实例,应该会出现如下所示的描述框。

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

您使用 ssh(安全 shell)命令来访问您的实例。打开一个终端窗口,键入以下内容,显然是替换您自己的密钥名和公共 DNS。

*ssh -i ~/.ssh/yourkey.pem [ubuntu@ec2-xx-xx-xxx-xxx.us-west-2.compute.amazonaws.com](mailto:ubuntu@ec2-xx-xx-xxx-xxx.us-west-2.compute.amazonaws.com)*

终端窗口应该显示一个提示,欢迎您进入实例的虚拟环境。从这个窗口,你可以传输你的文件和工作,你真棒项目!

注意:根据您的 AMI 的操作系统,您将在上面的 ssh 命令中的“@your_public_DNS”之前键入“ec2-user”(通常用于基本 Linux)、“ubuntu”或您合适的操作系统名称。

重要提示:您的公共 DNS 可能会因您的位置而异。因此,如果您在访问您的实例时遇到问题,那么很可能您的公共 DNS 已经更改,在这种情况下,请再次确认您的公共 DNS 是否正确。

通过 SCP 或 Git 管理您的数据

要在您的计算机和实例之间传输文件,您可以使用 scp(安全协议)命令。打开一个 n ew 终端窗口,其当前目录位于您的计算机上,而不在实例环境中,并键入以下内容,显然是替换您自己的键名和公共 DNS。

从计算机上传文件到实例

*scp ~/.ssh/yourkey.pem ~/path/to/file [ec2-user@ec2-xx-xx-xxx-xxx.compute-1.amazonaws.com](mailto:ec2-user@ec2-xx-xx-xxx-xxx.compute-1.amazonaws.com):path/to/file*

将文件从实例下载到计算机

*scp ~/.ssh/yourkey.pem [ec2-user@ec2-xx-xx-xxx-xxx.compute-1.amazonaws.com](mailto:ec2-user@ec2-xx-xx-xxx-xxx.compute-1.amazonaws.com):path/to/file ~/path/on/local/machine*

令人惊讶的是,在访问 EC2 实例的终端窗口中,您可以使用 Git 命令在实例环境和 Github 之间拉和推文件,就像在本地机器上一样。显然,实例上的所有数据都存储在 AWS 的服务器上。

真正重要的注意:

AWS 根据您选择的实例规范向您收取及时费用。无论你做的是轻活还是重活,如果你的实例开启,AWS 都会向你收费。

我和我的几个同事,由于不理解上述协议的无知和疏忽,犯了这个菜鸟错误,导致我们累积了几百美元的账单。幸运的是,亚马逊感同身受,取消了收费。但是,您不应该让这种情况发生。

因此,每当你完成一个工作会话,1 分钟或 1 小时,总是停止你的实例。然后当你恢复工作时,简单地启动它。终止会删除你的整个实例,所以你必须从头创建一个新的。

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

就这样结束了!当我开始建立 AWS 的时候,我有一个痛苦的经历,但是希望这个指南可以成为你的小抄。

有时,我们学习的材料并不困难,但我们的学习方法和资源有助于应对挑战。

使用 Python 和 Gmail 帐户为您的刮板设置电子邮件更新

原文:https://towardsdatascience.com/setting-up-email-updates-for-your-scraper-using-python-and-a-gmail-account-4e678be99ed5?source=collection_archive---------13-----------------------

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

Photo by Jamie Street on Unsplash

通常,当构建 web 抓取器来收集数据时,您会遇到以下情况之一:

  • 您想将程序的结果发送给其他人
  • 您正在远程服务器上运行该脚本,并且希望获得自动、实时的结果报告(例如,来自在线零售商的价格信息更新,表明竞争公司对其职位空缺网站进行了更改的更新)

一个简单而有效的解决方案是让你的网络抓取脚本自动将结果通过电子邮件发送给你(或者其他感兴趣的人)。

事实证明这在 Python 中非常容易做到。你只需要一个 Gmail 账户,就可以搭载谷歌的简单邮件传输协议(SMTP)服务器。我发现这个技巧真的很有用,特别是对来说,我最近创建了一个项目,通过一个程序给我和我的家人发送每月财务更新,这个程序对我们的 Mint 账户数据进行一些定制计算。

第一步是导入内置的 Python 包,它将为我们完成大部分工作:

import smtplib
from email.mime.text import MIMEText

smtplib是内置的 Python SMTP 协议客户端,允许我们连接到我们的电子邮件帐户并通过 SMTP 发送邮件。

MIMEText类用于定义电子邮件的内容。MIME(多用途互联网邮件扩展)是一种标准,用于格式化要通过互联网发送的文件,以便可以在浏览器或电子邮件应用程序中查看。它已经存在很久了,它基本上允许你通过电子邮件发送除 ASCII 文本之外的东西,比如音频、视频、图像和其他好东西。以下示例用于发送包含 HTML 的电子邮件。

以下是构建 MIME 电子邮件的示例代码:

sender = ‘your_email@email.com’
receivers = [‘recipient1@recipient.com’, ‘recipient2@recipient.com’]
body_of_email = ‘String of html to display in the email’
msg = MIMEText(body_of_email, ‘html’)
msg[‘Subject’] = ‘Subject line goes here’
msg[‘From’] = sender
msg[‘To’] = ‘,’.join(receivers)

MIMEText对象将电子邮件消息作为一个字符串接收,并指定该消息有一个 html“子类型”。参见本网站获取 MIME 媒体类型和相应子类型的有用列表。查看 Python email.mime docs 中可用于发送其他类型 mime 消息的其他类(例如 MIMEAudio、MIMEImage)。

接下来,我们使用主机‘smtp.gmail.com’和端口 465 连接到 Gmail SMTP 服务器,使用您的 Gmail 帐户凭据登录,然后发送:

s = smtplib.SMTP_SSL(host = ‘smtp.gmail.com’, port = 465)
s.login(user = ‘your_username’, password = ‘your_password’)
s.sendmail(sender, receivers, msg.as_string())
s.quit()

*注意:*注意,电子邮件收件人的列表需要在msg[‘From’]的赋值中表示为一个字符串(每封电子邮件用逗号分隔),在smtplib对象s.sendmail(sender, receivers, msg.as_string()中指定时表示为一个 Python 列表。(在相当长的一段时间里,我都在用头撞墙,试图找出为什么消息只发送给第一个收件人,或者根本没有发送,这就是错误的根源。终于碰到这个 StackExchange 帖子解决了问题。)

作为最后一步,你需要更改你的 Gmail 帐户设置,以允许访问“不太安全的应用程序”,这样你的 Python 脚本就可以访问你的帐户并从它发送电子邮件(参见此处的说明)。在您的计算机或其他机器上运行的 scraper 被认为是“不太安全的”,因为您的应用程序被视为第三方,它会将您的凭据直接发送到 Gmail 以获得访问权限。相反,第三方应用程序应该使用像 OAuth 这样的授权机制来访问你的账户(见这里的讨论)。

当然,您不必担心您自己的应用程序访问您的帐户,因为您知道它不是恶意的。然而,如果其他不受信任的应用程序可以做到这一点,他们可能会在不告诉您或做其他讨厌的事情的情况下存储您的登录凭据。因此,允许不太安全的应用程序访问会使您的 Gmail 帐户不太安全。

如果你不愿意在你的个人 Gmail 帐户上打开对不太安全的应用程序的访问,一个选择是创建第二个 Gmail 帐户,专门用于从你的应用程序发送电子邮件。这样,如果由于开启了不太安全的应用程序访问,该帐户由于某种原因而受到威胁,攻击者将只能看到来自 scraper 的已发送邮件。

最初发表于【www.marknagelberg.com】。你可以在推特上关注我 这里 。要访问我共享的 Anki deck 和 Roam Research notes 知识库,以及关于间隔重复和提高学习效率的技巧和想法的定期更新, 加入“下载马克的大脑”。

用 Docker 和 Golang 设置 GitHub 包注册表

原文:https://towardsdatascience.com/setting-up-github-package-registry-with-docker-and-golang-7a75a2533139?source=collection_archive---------15-----------------------

注:此文最初发布于martinheinz . dev

通常,对于任何编程语言,要运行您的应用程序,您都需要创建某种包(npm表示 JavaScriptNuGet表示 C# ,…)然后存放在某个地方。在 Docker 的情况下,人们通常只是将他们的图像扔进 Docker Hub 中,但是我们现在有了新的选择…

另一个选择是GitHub Package Registry——它已经测试了一段时间,似乎越来越多的人开始使用它,所以感觉是时候探索它的功能了,这里专门针对 DockerGo 项目。

这篇文章是系列文章*“你的下一个 Golang 项目所需要的一切”*的一部分,如果这听起来很有趣,请点击这里查看上一部分

注意:本文适用于任何使用 docker 图像的项目,而不仅仅是 Golang。

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

为什么使用 GitHub 注册表

首先,你为什么要考虑从,比方说, Docker Hub 或任何其他注册表,切换到 GitHub 包注册表:

  • 如果你已经在使用 GitHub 作为你的 SCM,那么使用 GitHub Package Registry 是有意义的,因为它允许你把所有东西放在一个地方,而不是把你的包推到别处。
  • GitHub动作还有另一个闪亮的新( beta )特性,你可以结合 GitHub 包注册表来利用它(在另一个帖子中有更多关于这个的内容……)。
  • 即使我认为 Docker 图像优于例如npm包,如果你更喜欢非 Docker 工件,你也可以将它们推送到 GitHub 包注册表

我们开始吧!

那么,现在,让我们来看看如何使用它。让我们从构建和标记您的图像开始:

注意:如果你正在使用 Go,那么你可能想在这里查看 我的库 ,这里所有的 GitHub 包注册表功能都已经绑定到 Makefile 目标中。

为了能够将图像推送到 GitHub 包注册表,您需要使用上面显示的格式来命名它——这实际上只是带有您的 GitHub 用户名和存储库名称的注册表的 URL。

接下来,我们如何访问它?

首先,为了能够用 GitHub 包注册表认证我们自己,我们需要创建个人访问令牌。这个访问令牌必须有read:packageswrite:packages作用域,此外,如果您有一个私有存储库,您还必须包括repo作用域。

GitHub 帮助网站上已经有非常好的关于如何创建个人令牌的指南,所以我不打算在这里复制和粘贴步骤。你可以在这里阅读

现在,我们有了个人令牌,让我们登录:

最后,是时候推广我们的形象了:

很明显,你也可以把图像拉出来:

在 CI/CD 渠道中使用它

对于 GitHub 包注册表,我们最不想做的事情就是将它与 CI/CD 工具集成在一起。我们来看看如何用 Travis 来完成( *.travis.yml* 可在我的资源库 这里 ):

正如你在上面看到的,你可以像在你的机器上一样运行buildpush,唯一的区别是docker login。这里,我们使用在 Travis UI 中指定的环境变量。用户名通过-u参数传递给登录命令,密码使用echo传递给stdin,这是必需的,这样我们就不会在 Travis 日志中打印出我们个人的 GitHub 令牌。

那么,我们如何设置这些环境变量呢?这些是步骤:

如果你没有使用 Travis 并且想要使用 GitHub Webhook 来触发构建,那么你可以使用[RegistryPackageEvent](https://developer.github.com/v3/activity/events/types/#registrypackageevent)。如果您正在使用 JenkinsOpenShiftKubernetes ,并且希望每次在 GitHub Package Registry 中发布或更新您的包时触发部署,这可能会很有用。

告诫的话

使用 GitHub 包注册表时,你要记住的一件事是,你不能删除你推送到注册表的包。这样你就不会破坏依赖于你的包的项目。你可以从 GitHub Support 请求删除包,但是你不应该指望他们真的删除任何东西。

结论

希望看完这个你给 GitHub 包注册表打个预防针。如果你还没有 beta 权限,可以在这里注册。如果你有任何问题,不要犹豫,联系我,或者你也可以看看我的,在那里你可以找到 GitHub 包注册表用法的例子。

资源

为 Python 中的数据可视化设置 Jupyter 笔记本

原文:https://towardsdatascience.com/setting-up-jupyter-notebooks-for-data-visualisation-e287e2688af6?source=collection_archive---------16-----------------------

Jupyter 笔记本是在交互式环境中探索数据和创建可视化效果的一种非常好且相当简单的方式。

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

Here’s a simple example plot from Pandas in a notebook:

Jupyter,Python 和 Anaconda

我们将看到如何使用 Anaconda 设置 Jupyter 笔记本环境,如何创建笔记本,然后绘制第一个图形。

虽然用于创建情节的语言是 Python,但您并不需要真正了解编程,因为只需要非常有限的一套语言。你将需要学习 Pandas 和/或 Seaborn 中绘图命令的特定语法,而不是其他。在上面的例子中,大部分代码都是样板文件,这是完成工作的最后一行。

通过在程序员编辑器中编写 Python 程序并运行该程序,可以使用 Pandas 或 Seaborn。但我认为,在互动环境中制作精美图表的最简单方法是使用 Jupyter 笔记本。

因此,首先我们要设置 Jupyter 笔记本环境。

本指南不是针对经验丰富的程序员的,所以我将假设你的计算机上没有安装 Python,而是敦促你在你的计算机上安装 Anaconda

蟒蛇

Anaconda 是一个包,其中包含 Python 的实现以及一整套数据科学库。

下载和安装非常简单,一旦安装,你将从一个图形界面获得大量的数据科学和人工智能工具。这些工具包括 Python、Pandas 和 Jupyter,以及支持它们所需的所有库。

Anaconda 非常大——几千兆字节——但是由于大多数计算机都有几百千兆字节的存储空间,所以这对大多数人来说可能不是什么大事。对于那些空间不足的人(比如当我在 Windows 平板电脑上安装它时),有一个更小的替代方案,Miniconda,但这需要更多的工作——我将单独介绍这一点,但现在我们将考虑完整版本。

Anaconda 可用于 Windows、MacOS 和 Linux,有 32 或 64 位版本。它还有包含 Python 2.7 Python 3.x 的版本,我建议您选择适合您机器的最新 Python 3 版本。

首先,进入 Anaconda 下载页面,大约在中间你会看到你的操作系统,Windows,MacOS 或者 Linux 的链接。点击正确的选项,下载安装程序。

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

下载安装程序后,您可以在相应的安装页面上找到如何安装的详细说明。为了方便起见,我在这里列出了它们。

然而,安装很简单。对于 Windows 和 Mac 用户,只需从网站下载合适的版本,然后像安装其他程序一样安装即可;不需要管理员权限。

对于 Linux 用户来说,正如你所料,你需要而不是使用 apt-get 来安装。下载安装程序,打开一个终端窗口,导航到下载位置,然后运行命令:

bash ./whatever-your-file-is-called.sh

在安装过程中,如果有选择的话,最好接受默认选项。一旦它开始运行,安装就可以留给它自己的设备了——这可能需要一段时间,取决于你的互联网连接和你的电脑的速度。

安装快结束时,会询问你是否要安装微软的 Visual Studio 代码。这是一个非常好的程序员编辑器,但是如果你决定不在这个阶段安装它,你可以在以后安装它。

一旦安装在 Windows 电脑或 Mac 电脑上,你应该会在开始菜单中发现各种新项目。其中一个将是 Anaconda Navigator(如上所示)。您还可以找到 Jupyter 笔记本和 Anaconda 提示符的条目。

在 Linux 上,您可能没有将这些条目添加到您的菜单中。如果是这种情况,只需打开一个终端窗口并键入命令:

anaconda-navigator

通过这种方式,您将获得 Anaconda GUI,从中可以启动 Jupyter 笔记本。

仅此而已。安装了 Anaconda 之后,您就可以开始使用 Jupyter 来制作出色的数据可视化了。

下一篇文章将是关于实际使用一个笔记本,并用熊猫制作第一个可视化。当它准备好了,我会在这里放一个链接。

巨蟒领航员

我将从 Anaconda Navigator GUI 开始,因为无论您使用的是 Windows、MacOS 还是 Linux,从这里启动笔记本都是一样的。

这是导航器屏幕:

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

如你所见,主窗口左上角的面板是为 Jupyter 笔记本设计的,只需点击启动按钮即可。(您的布局可能与我的不同,但 Jupyter 笔记本面板会在某个地方,如果安装了的话。)

但是在你这么做之前,你应该知道 Jupyter 运行在你的浏览器中。启动 Jupyter 将在您的默认浏览器中创建一个新的选项卡,其页面如下所示:

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

当然,由于这是我的 Windows 平板电脑上的主文件夹,你的屏幕看起来不会完全一样。但它可能会包含一些文件夹,你不希望与笔记本散落在一起。因此,您可能要做的第一件事就是为您的工作创建一个新目录。

所以,点击新建下拉菜单,选择文件夹

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

你现在将有一个名为的新文件夹,无标题文件夹。向下滚动找到它,点击它旁边的复选框使它被选中,然后从屏幕顶部选择重命名并给它一个新名字。

这里有一个窍门。每次打开 Jupyter 时,您可能都想使用这个目录。如果像我一样,你有一大堆文件夹要向下滚动,你可能想选择一个名字,把它放在最上面。我把我的文件夹命名为“_ 笔记本”。下划线将它带到列表中的第二项,这样很容易看到和点击。

现在双击你的新文件夹,你会看到如下内容:

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

现在我们准备创建我们的第一个笔记本。再次点击新建,但这次选择 Python3。这将在您的浏览器中打开一个新选项卡,这是您的新笔记本,看起来像这样:

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

需要注意的导入点是左边有彩色条的字段。这是一个单元格。在单元格中,您可以编写文本或代码。默认值是 code,我们将在单元格中编写以下代码(我建议您从下面的文本中剪切并粘贴它):

import numpy as np, pandas as pd, matplotlib.pyplot as plt 

这一行代码导入了必要的库,这些库将允许我们对数据进行基本的可视化。我们正在导入三个库, numpy ,它为大型多维数组提供数值支持, pandas ,它提供更多的数据结构和数据分析工具, matplotlib ,它提供一个 2D 绘图库,pandas 使用它来生成各种格式的图表。

现在,单击+图标创建另一个单元格,并将以下内容写入其中(同样,我建议您剪切并粘贴该文本):

data = pd.Series([0,1,2,3,4,5,6,7,8,9])
data.plot() 

您应该会得到这样的结果:

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

现在,如果你是一名程序员,你会知道什么是变量,并且会识别出数据是变量。如果你不是程序员,那么你只需要明白一个变量基本上是一个可以容纳一个值的东西。例如,我们可以有一个名为 x 的变量,并赋予它值 5;然后,我们可以在各种操作中使用名称 x ,它将表示值 5。您可以将其视为使用该值的捷径。

在我称之为数据的变量的例子中,它的值比一个单一的数字要复杂得多;它实际上是一系列数字(我们使用 pandas 库来创建包含该系列的数据结构)。使用 pandas,我们可以创建各种数据结构,本质上是各种形式的数据表,在这种情况下,我们的一系列数字就像表中的一行数字。

因此,我们第二个单元格的第一行将值 0,1,2,3,4,5,6,7,8,9 赋予变量数据

现在我们可以调用熊猫图书馆的魔力了。

该单元格的第二行基于数据中的一系列数字生成一个图。

让我们试一试。

首先选择第一个单元格,然后单击看起来像“播放”按钮的图标。这将执行该单元格中的代码。不会发生什么事情,尽管您应该注意到星号已经变成了一个数字。(星号表示尚未执行的单元格)。然而,执行这个单元已经导入了我们需要的库。

现在选择第二个单元格,并单击播放图标。这一次,更令人兴奋的事情发生了。

您将在单元格中看到此图像。

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

当然,这是一个简单的数据折线图,正如我们所料,结果是一个直线图。

我们已经看到了如何安装 Anaconda 和 Jupyter 笔记本,以及如何创建第一个数据可视化。当然,还有更多的东西有待发现:如何导入数据集,以及如何创建不同类型的可视化,不仅仅是折线图,还有散点图、条形图和饼状图等。

你可以在这里看到一篇关于用 Python 和 Pandas 绘制各种图形的文章:

[## 用熊猫绘图:数据可视化导论

如果您是一名初露头角的数据科学家或数据记者,能够可视化您的数据会让您有能力…

towardsdatascience.com](/plotting-with-pandas-an-introduction-to-data-visualization-8bd7c0831650)

和其他文章:

[## 阿兰·琼斯

如今,Python 无疑是一门值得学习的语言。如果你是编程新手,想要一个快速指南…

alanjones.pythonanywhere.com](http://alanjones.pythonanywhere.com/)

在基于 Debian 的 Linux 中设置 PostgreSQL

原文:https://towardsdatascience.com/setting-up-postgresql-in-debian-based-linux-e4985b0b766f?source=collection_archive---------26-----------------------

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

Linux Mint, PostgreSQL, Ubuntu

在尝试在我的 Linux 机器上安装 PostgreSQL 服务器来练习 SQL 命令的过程中,我遇到了一些困难,所以我决定为我未来的自己编写这个教程,以防我需要再次安装。在安装了基本系统之后,我还能够从一个小的测试数据库中获得一个转储,以供练习之用…所以我还包含了我用来加载这个数据库文件的命令。

注:这个过程是在 2019 年 11 月左右在 Linux Mint 19 Tara 和 Ubuntu 18.04 上测试的。

下面的许多步骤都是从这篇不错的 Wixel 帖子中获得的:https://wixelhq . com/blog/how-to-install-PostgreSQL-on-Ubuntu-remote-access

准备和安装

Ubuntu 和 Mint(以及其他)的默认库有 Postgres 包,所以我们可以使用 apt 来安装。

$ sudo apt update$ sudo apt install postgresql postgresql-contrib

角色设置

postgres 的安装会创建一个用户 postgres,该用户可以访问默认的 Postgres 数据库。通过首先切换到 postgres 用户并运行psql来访问它。

$ sudo -i -u postgrespostgres@server:~$ psql

您现在可以直接访问默认的 postgres 数据库。注意“\q”允许您退出 Postgres 提示符。

postgres=# \q

现在您已经确认了 Postgres 的功能,是时候设置角色了。仍然在 postgres 帐户中,执行以下命令。

postgres@server:~$ createuser --interactive

这将引导您完成设置新用户的过程。关于其他标志的更多细节可以在createuser手册页中找到。

注意:首先创建一个与您的用户帐户同名的角色作为超级用户可能会很有用。

现在运行psql(作为与您刚刚创建的角色同名的用户名)将导致一个错误。虽然您已经创建了一个角色,但是每个角色的默认数据库都是与该角色同名的数据库。因此,有必要提供您希望连接的数据库的名称,或者创建一个相应的数据库,这将在下面的部分中讨论。

访问特定数据库

假设您的角色(您的用户名)已经被授权访问一个数据库{dbname},您可以简单地从您的命令提示符下运行以下命令。

$ psql {dbname}

您也可以指定一个角色{role}而不是您的用户名,如下所示。

$ psql -U {role} {dbname}

创建新数据库

作为 postgres 用户,执行以下命令。注意:将{dbname}替换为所需数据库的名称,通常是上面创建的角色的名称。

postgres@server:~$ createdb {dbname}

加载数据库

如果您得到了一个数据库的转储,这里用{filename}.sql表示,下面将在 PostgreSQL 服务器中创建数据库,并将文件数据加载到数据库中。注意:将{username}替换为 PostgreSQL 服务器中现有的角色,将{dbname}替换为 PostgreSQL 服务器中现有数据库的名称,将{filename}替换为。sql 文件。

$ createdb -U {username} {dbname}$ psql {dbname} < {filename}.sql 

现在你已经准备好SELECT something FROM your_tables了。

PSQLing 快乐!

为机器学习项目设置 Python 平台

原文:https://towardsdatascience.com/setting-up-python-platform-for-machine-learning-projects-cfd85682c54b?source=collection_archive---------8-----------------------

关于如何开始使用 python 进行机器学习,有很多深入的教程。这些教程主要关注深度学习框架的使用(比如 TensorFlow,PyTorch,Keras 等。)比如如何设置基本的监督学习问题,或者如何创建一个简单的神经网络并训练它等等。但是,即使在开始尝试这些教程之前,主机上也必须有一个可以进行实践的 python 平台。

几年前,当我开始使用 ML 时,我找不到一个关于如何在我的机器上建立一个工作平台的好教程。有很多选项/配置可供选择,我无法决定选择哪一个。在我决定一个配置之前,我必须浏览很多网页,花了我大约 2 周的时间,最终有了一个工作平台。几个月前,我的一位同事面临着同样的问题,所以我帮助她搭建了平台,为她节省了不少时间。因此我决定写一篇关于它的详细文章。

我将这篇文章分为两部分,将分别关注它们

  • **第 1 部分:**选择并安装 python 发行版和 IDE
  • **第 2 部分:**创建新项目所需的步骤

第 1 部分— Python 发行版和 IDE

在本文中,我将使用下面的 Python 发行版和 IDE。

  • **蟒蛇分布:**蟒蛇
  • Python IDE: PyCharm

W 什么是蟒蛇?Anaconda 是 Python 和 R 语言发行版,具有简化的包管理和部署。使用 anaconda,可以更容易地拥有不同配置的多个 python 环境,并在它们之间切换。anaconda 包管理器使得解决不同包所需的包的多个版本之间的冲突变得更加容易。关于使用 Anaconda 的利弊的详细解释可以在这里找到

下载&安装: Anaconda 发行版可以从这里下载。安装说明非常简单。

W 帽子是皮查姆?PyCharm 是 python 可用的众多 ide 之一。我更喜欢 PyCharm,因为与其他 ide 相比,它更加用户友好、功能强大且可配置。它提供了与 git 的集成,拥有自己的终端和 python 控制台,提供了对各种便利插件的支持,以及大量有用的键盘快捷键。

**下载&安装:**要下载 PyCharm,请点击此链接并下载最新的社区(免费)版本,然后按照安装说明进行操作

第 2 部分—创建新项目所需的步骤

您将要处理的不同项目将需要不同的资源和具有不同版本需求的包。因此,总是建议您为每个项目使用单独的虚拟 python 环境。这也确保了您不会意外地用其他版本覆盖某些包的任何现有工作版本,从而使它对您当前的项目无用。

以下是创建新项目时应该采取的步骤。

步骤 1:创建一个新的 Anaconda 虚拟环境:

打开 Anaconda 提示符命令并键入

conda create -n myenv python==3.5

这将创建一个名为 myenv 的新虚拟环境,它将随 python 版本 3.5 一起安装和加载

创建环境后,您可以通过使用以下命令激活环境来验证它

conda activate myenv     #For Windows
source activate myenv    #For MAC OS

您可以通过键入以下命令找到创建的 env myenv 的位置

which python
# The output will look something like this
# /Users/aqeelanwar/anaconda/envs/myenv/bin/python

在步骤 2 中,我们将使用它来定位我们的环境

步骤 2:安装必要的软件包:

激活环境后,您可以使用

*#General Format:*
conda install package_name*#Example:*
conda install numpy    #To install numpy

步骤 3:有用的 Conda 命令:

以下是有用的 conda 命令,在管理 conda 环境时会很方便

# Activate an environment
conda activate env_name# Deactivate an environment
deactivate           #Windows
source deactivate    #Linux and macOS# Listing all the created environments
conda env list# Listing packages install in an environment
conda list# Installing a package
conda install package_name# Cloning a conda environment
conda create --clone name_env_to_be_cloned --name name_cloned_env

步骤 4:在 PyCharm 上创建一个新项目

  • 打开 PyCharm 并选择 Create New Project。

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

  • 选择项目的位置和名称(在本例中为 medium_tutorial)。
  • 展开项目解释器选项并选择现有的解释器
  • 通过单击现有解释器下最右边的三个点来定位您的环境

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

  • 此时,我们将使用步骤 1 中的 which python 命令显示的位置来定位我们的环境 myenv(如果它还没有出现在项目解释器列表中:稍后将详细介绍)。此外,我们希望这个环境可以用于我们将来创建的其他项目,因此我们将选择“*对所有项目可用”*复选框

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

  • 点击确定,然后创建。

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

  • 该项目现在将使用环境 myenv。您可以使用 PyCharm 的内置终端将软件包安装到这个环境中。
  • 创建新的。py 文件(比如 main.py)并使用
run >> run main.py

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

步骤 5:在 conda 环境之间切换(可选)

如果将来你想在同一个项目的不同 conda 环境之间切换,你可以按照下面的步骤来做

  • PyCharm 只能选择已经包含在其项目解释器列表中的环境
  • 向项目解释器列表中添加一个新创建的(比如命名为 PyCaffe)环境
settings >> Project:project_name >> Project Interpreter

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

  • 点击右上方的齿轮图标,并选择添加

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

  • 挑选
Conda Environment > Existing environment > <three dots>

找到新创建的环境并点击 OK

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

  • 现在环境已经被添加到项目解释器列表中,并且可以在下拉菜单中看到

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

  • 此列表显示了现有的环境以及您选择的将用于项目的任何环境
  • 注意: PyCharm 终端不会自动激活当前选择的环境。如果您已经从项目解释器列表中选择了 PyCaffe,env,现在想要在其中安装一个新的包,您必须首先在终端中激活环境,然后您可以使用 conda install package_name。否则,该软件包将安装在先前激活的 conda 环境中

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

现在您已经设置好了平台。此时,您可以安装所需的 ML 框架(TensorFlow、Keras、PyTorch)并开始尝试 ML 教程。

摘要

在本教程中,我们讨论了从事 ML 项目(或任何 python 项目)的先决条件。我们看到了如何使用 Anaconda 和 PyCharm 创建多个 python 环境并在它们之间切换。

如果你在学习本教程的过程中有任何问题,请在下面评论,我会给出解决方案。

如果这篇文章对你有帮助,欢迎鼓掌、分享和回复。如果想了解更多关于机器学习和数据科学的知识,请关注我@Aqeel an war或者在LinkedIn上与我联系。

为计算机视觉设置 Raspberry Pi(安装 OpenCV)

原文:https://towardsdatascience.com/setting-up-raspberry-pi-for-computer-vision-installing-opencv-e0f973d38819?source=collection_archive---------7-----------------------

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

Photo by Harrison Broadbent on Unsplash

设置 Rasbian Noobs

Noobs 是 Raspbian 的一个易于安装的版本。 Raspbian 是基金会官方支持的操作系统。Raspbian 预装了大量用于教育、编程和一般用途的软件。它有 Python,Scratch,Sonic Pi,Java 等等。

注意:Rasbian 是一个基于 Linux 的操作系统。

注:这个过程可能看起来漫长而无聊,但这是一次性的事情。您也可以复制带引号的命令。

  1. https://www.raspberrypi.org/downloads/noobs/下载 zip 文件
  2. 确保解压缩文件夹,并将所有内容复制到 SD 卡(建议大于 4GB)。
  3. 通过将一个名为“SSH”的文件(不带任何扩展名)放入 SD 卡的引导分区(引导文件夹内),启用 SSH
  4. 使用手机充电线(非 C 型)给 raspberry pi 通电,并通过以太网将其连接到笔记本电脑。

第一次,我建议使用外部显示器、键盘和鼠标进行初始设置。通过ifconfig记下 pi 的 IP,然后继续通过 wifi/以太网 essentials。

然而,如果你没有初始外设,请浏览此视频:如何在没有显示器或键盘的情况下设置树莓派

获取连接到以太网的 Raspberry Pi 的 IP(Ubuntu)

  1. 启动 Raspberry Pi,并将以太网连接到 Pi 和笔记本电脑。
  2. 在你的笔记本上。转到编辑连接设置。
  3. 导航到 ipv4 选项。选择方法:“共享给其他计算机”。
  4. 连接到有线连接。然后打开命令提示符并键入命令

nano/var/lib/misc/dnsmasq . leases "。

你将会从那得到覆盆子 pi Ip。

5.然后打开命令提示符并键入:ssh pi@

在 Pi 上设置 OpenCV 3

宋承宪不会? 如果您在网络上看到您的 Pi,但无法对其进行 ssh,您可能需要启用 SSH。这可以通过 Raspberry Pi 桌面首选项菜单(你需要一根 HDMI 线和一个键盘/鼠标)或从 Pi 命令行运行 sudo 服务 ssh start 来轻松完成。

第一步是将文件系统扩展到包括 micro-SD 卡上的所有可用空间:

步骤 1: sudo raspi-config

步骤 2:接着选择“扩展文件系统”:

第三步:一旦出现提示,你要选择第一个选项,“A1。展开文件系统回车 然后 结束

步骤 4:到终端键入“sudo reboot”

(可选)第二种方法是删除所有不必要的文件以清理空间

sudo apt-get 净化钨-发动机

sudo apt-get 清除图书馆*

sudo apt-get clean

sudo apt-get 自动删除

现在,在步骤 3 中,我们将安装所有需要的依赖项

sudo apt-get 更新&& sudo apt-get 升级

sudo apt-get 安装内部版本-基本 cmake pkg-config

sudo apt-get install libjpeg-dev libtiff 5-dev lib jasper-dev libpng 12-dev

sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev

sudo apt-get 安装程序

sudo apt-get 安装 libgtk2.0-dev libgtk-3-dev

sudo apt-get install lib atlas-base-dev gfortran

为 python 3 和 python 2 安装 OpenCV

安装 python2.7-dev python3-dev

现在,对于第四步,我们将下载 opencv 源代码,然后为 pi 构建它。

CD ~ & & wget-O opencv.ziphttps://github.com/Itseez/opencv/archive/3.3.0.zip&&解压 opencv . zip

(可选)安装 opencv-contrib 库

wget-O opencv_contrib.ziphttps://github.com/Itseez/opencv_contrib/archive/3.3.0.zip&&解压 opencv _ contrib . zip

现在,在第 5 步中,我们将为 python 和

wgethttps://bootstrap.pypa.io/get-pip.py&&须藤 python get-pip.py & &须藤 python3 get-pip.py

大多数情况下,你通过这个博客在单板计算机上设置你的深度学习模块,如 Raspberry Pi。因此,我们将公开 opencv 安装,以便在所有虚拟环境中访问。如果您想使用 envwrapper 或类似工具构建自己的虚拟环境,请激活并继续。

安装 numpy

pip 安装数量

现在,我们将编译并安装 opencv。这个过程需要时间,取决于 pi 模型。在我的 B+ plus 模型中,大约花了 1.5 小时。所以去喝杯咖啡吧!!

cd ~/opencv-3.3.0/ && mkdir 内部版本&& cd 内部版本

CMAKE-D CMAKE _ BUILD _ TYPE = RELEASE -D CMAKE _ INSTALL _ PREFIX =/usr/local -D INSTALL _ PYTHON _ EXAMPLES = ON -D OPENCV _ EXTRA _ MODULES _ PATH = ~/OPENCV _ contrib-3 . 3 . 0/MODULES -D BUILD _ EXAMPLES = ON…

如果您使用的是 python3,请确保您的 python 解释器和库设置在 python 3 或 python 3.5 文件夹中(或 python2 的 python2.7 文件夹中)

在开始编译过程之前,您应该增加您的交换空间大小。这使得 OpenCV 能够用树莓 PI 的所有四个内核进行编译,而不会因为内存问题而导致编译挂起。键入终端

sudo nano /etc/dphys-swapfile

然后将 CONF _ 交换大小编辑为

CONF _ 交换大小=1024

现在,我们将重新启动交换空间。

sudo/etc/init . d/d phys-交换文件停止

sudo/etc/init . d/d phys-swap file start

现在,我们跳到安装 opencv 的最后阶段。我们现在将编译 opencv。

品牌-j4

现在,你需要做的就是在你的 Raspberry Pi 3 上安装 OpenCV 3

sudo make 安装

sudo ldconfig

**Bug 修复:**老实说不知道为什么,也许是 CMake 脚本中的 Bug,但是在为 Python 3+编译 OpenCV 3 绑定时,输出。所以文件被命名为 cv2 . cpython-35m-arm-Linux-gnueabihf . so(或其变体),而不是简单的 cv2.so(就像在 Python 2.7 绑定中一样)。同样,我不确定为什么会发生这种情况,但这很容易解决。我们需要做的就是重命名文件:

对于 python3

CD/usr/local/lib/python 3.5/site-packages/

sudo mv cv2 . cpython-35m-arm-Linux-gnueabihf . so cv2 . so

cd ~/。virtualenvs/cv/lib/python 3.5/site-packages/

ln-s/usr/local/lib/python 3.5/site-packages/cv2 . so cv2 . so

通过打开 python bash 和来测试安装

导入 cv2

现在,我们将通过删除安装文件来释放空间,并将 pi 恢复到它原来的交换空间。

RM-RF opencv-3 . 3 . 0 opencv _ contrib-3 . 3 . 0

sudo nano /etc/dphys-swapfile

然后将 CONF _ 交换大小编辑为

CONF _ 交换大小=1024

现在,我们将重新启动交换空间。

sudo/etc/init . d/d phys-交换文件停止

sudo/etc/init . d/d phys-swap file start

恭喜你,你现在完成了。享受计算机视觉!!

为 Golang API 设置 Swagger 文档

原文:https://towardsdatascience.com/setting-up-swagger-docs-for-golang-api-8d0442263641?source=collection_archive---------3-----------------------

注:此文最初发布于martinheinz . dev

在之前的文章中——在 Golang 中构建 RESTful API——我们在 Golang 中创建了 RESTful API。现在,我们已经准备好使用我们的项目,我们应该向我们的用户展示如何这样做,否则——如果他们不能测试它和查看它的特性——他们甚至不会碰它。

如果没有我们的 API 的有意义的文档以及测试其端点的能力,用户甚至不会尝试使用它。解决方法是写文档。然而,编写它可能要花很多时间,而这些时间本来可以用来为我们的应用程序开发更酷的功能…那么,我们该怎么办呢?—我们生成大摇大摆的单据!

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

图书馆

让我们从创建 Swagger 文档所需的库开始。我说的是库,但实际上只需要一个— swag —它是将代码注释(注释)转换为SwaggerDocumentation 2.0 的 Golang 库。除了 swag 之外,你还需要一个中间件/包装器库用于你的 web 框架。在 swag 文档中有到支持框架的库的链接,其中既包括很多人喜欢使用的最简单的选项net/http,也包括我使用的 GIN ,我将在这里展示它。即使您可能使用不同的 web 框架,注释也是一样的,所以无论如何您都可以在这里学到一些东西。

还值得一提的是,还有一个替代的 Golang Swagger 库— go-swagger似乎更受欢迎,也更强大一些。然而,我个人更喜欢swaggo/swag,因为它简单。如果您需要对生成的内容有更多的控制,您可能希望切换到go-swagger

文档字符串

现在,对于注释/注释/文档字符串或任何你想叫它的东西。它实际上只是特定 API 函数之前的一堆注释,用于生成 Swagger 文档。

在我们开始描述单个 API 端点之前,我们需要首先为整个项目写一个总体描述。这部分注释位于您的main包中,就在main函数之前:

注意:下面所有的例子都来自我的仓库 这里 ,在这里你可以找到包含 Swagger UI/Docs 的 runnable 应用。

上面你可以看到通用 API 信息的例子,包括名称、版本、许可证、基本 URL 等。您可以包括的字段很少,它们在这里列出和一些示例

除了注释之外,我们还需要导入必要的库,包括我们必须生成的docs包的空白导入(稍后会详细介绍)。我们需要做的另一件事是在某个端点实际安装 Swagger UI ,这里我们使用"/swagger/*any

这是 UI 的一部分,上面的注释会产生:

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

现在是重要的部分 API 函数的注释。这些注释在main中连接的每个函数之前,以服务于某个端点,所以当我们服务于像v1.GET("/users/:id", apis.GetUser)这样的端点时,我们需要这样注释它:

大多数注释都是不言自明的,这是您应该包含的最小注释集。我想强调的一点是成功时返回的models.User——这是一个存在于models包中的数据库表模型。通过这样引用它,我们使它出现在模型部分的 Swagger UI 中:

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

这是我们为我们的终点得到的部分:

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

生成!

最后,是生成文档的时候了!你所需要的只是一个命令— swag init,这个命令需要从main所在的目录运行,所以对于我做的蓝图库,应该是.../cmd/blueprint/。这个命令将创建名为docs的包,其中包含了我们文档的 JSONYAML 版本。

尽管这个包已经生成,但我更喜欢将它存储在 GitHub 中,因为它是在main包中导入的,因此它是应用程序运行所必需的。如果您想避免将生成的代码推送到 GitHub 中,您可以编写一个 Makefile 目标,在应用程序构建和运行之前,动态地重新生成 Swagger 文档。然而,如果你决定推它 GitHub ,你可能想要通过go fmt运行文档,因为它不一定被格式化*“正如它应该的那样”*。

证明

在这一点上,我们可以运行应用程序,看看我们漂亮的新 Swagger UI ,然后就到此为止。但是,缺少的一点是 API 的认证。如果您让 Swagger UI 未经认证,那么任何人都可以访问他们想要的任何端点,这可能是非常不可取的,例如,如果您的数据可能被用户损坏。更糟糕的是,您可能会将数据库中的敏感信息暴露给整个互联网。我认为这些是为我们的 API 设置一些简单认证的足够的理由,因此,也是 Swagger UI ,那么我们如何做呢?

首先,我们需要实际实现身份验证。这里是 GIN 的情况,我们创建了一个非常简单的认证中间件,我们将它附加到路由器组:

通过将中间件附加到特定的组,我们可以控制什么是认证的,什么是不认证的,这很重要,因为我们不希望 Swagger UI 本身被认证。

注意:我省略了一些代码,以使例子可读性更好,更容易理解。完整代码,请参见资源库中的 *rest-api* 分支 此处

main模块中,我们需要改变的另一件事是注释——更具体地说,我们需要添加securityDefinitions注释:

这个注释——您已经猜到了——通过Authorization头向 Swagger UI 添加了 API 密钥认证。除了 API 密钥认证之外,您还可以选择使用用户名和密码的基本认证(securitydefinitions.basic)或某个版本的 OAuth2 ( securitydefinitions.oauth2),所有选项都显示在文档这里。我个人喜欢使用 API 密匙,因为在我看来这是简单和最方便的选择。

为了让 Swagger 识别某个端点已经过身份验证,我们还需要向所述 API 函数添加安全注释:

这是最后一步,现在(在重新生成 Swagger docs 之后)我们终于可以运行我们的应用程序了:

您应该在 GIN 日志中看到类似这样的内容:

我们现在可以在http://localhost:1234/Swagger/index . html打开 Swagger UI 并测试我们的文档!

注意:如果上面的命令对你来说没有多大意义,请考虑在这里 通读之前的

因此,简单重述一下——main包中的安全定义为我们提供了以下模型:

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

然后,如果我们输入不正确的 API 密钥("wrong_api_key"),我们会得到 401 响应代码:

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

如果我们使用正确的 API 密钥,我们将返回 200 所请求的数据:

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

同样重要的是要提到,像我们在这里所做的那样以明文形式发送授权头是不安全的,并且违背了认证 API 的全部目的,所以在实际应用中,你应该明确地使用 HTTPS。

结论

读完这篇文章后,我希望你现在知道,如何着手为你的 API 建立 Swagger 文档,我也希望你能为你的下一个项目写一些文档,因为它非常简单,而且好的 API 文档对你(手动测试)和应用程序的用户都有很大的价值。您可以在我的存储库的rest-api分支这里检查全部代码,如果您有任何问题或改进,请随时联系我或在存储库中创建问题/请求。🙂

创业时制定数据策略

原文:https://towardsdatascience.com/setting-up-your-data-strategy-when-you-are-a-startup-48e160fc8a6?source=collection_archive---------36-----------------------

如何通过数据实现你的愿景

你可能在任何地方都听说过你需要一个数据策略。大数据、数字化转型和人工智能等流行词汇已经渗透到你的公司,似乎除了你之外,你的所有竞争对手都知道他们需要做什么。作为一个在这些术语和行话的另一边工作过的人,我想分享一下对这个话题的不同看法,以及我在一个初创环境中建立数据策略的经验。

像生活中的许多其他事情一样,一小撮离群值会扭曲我们对某些话题的看法。例如,我们钦佩成功的独角兽,但我们错过了太多失败的初创企业。数据分析也没有什么不同,只是因为我们看到了像亚马逊的推荐引擎和谷歌的搜索算法这样的英雄例子,并不意味着每个数据分析用例都会价值数十亿。不要误解我,我毫不怀疑数据是并将继续是任何公司的重要驱动力,尤其是初创公司,但我认为我们需要重新设定我们的预期,并以不同的方式处理数据和分析。

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

Photo by Johannes Plenio on Unsplash

定义数据策略

一项战略的价值来自于它执行的好坏。战略如果不能执行,只是一个梦想。当您定义数据分析策略时尤其如此,因为这是一个相对较新且不断变化的领域,存在许多模糊性,使得执行很困难。因此,让我们来看看一项战略的不同组成部分,看看我们应该注意什么。

您试图解决的问题

你的策略的出发点应该是你试图解决的问题。数据是一种资源,它使您能够找到解决方案,但它不是解决方案本身。把它想象成金钱,金钱是你到达目的地所需要的资源,但它不是目的地本身。如果你发现自己在根据数据改造一个商业案例,那么你的做法是错误的,你应该后退一步,先想想你的问题。

你如何衡量它?

一旦问题被定义,你需要想出如何测量它。如果你能直接量化和衡量你的目标,这很好,但关键是要有一个可衡量的目标,作为整个战略实施过程中的路标。虽然它可能只是一个指标,但这个指标对日常决策有很大的影响。例如,如果目标是注册人数,那么为了提高你衡量的关键指标,很容易忽略客户参与度或获取成本,所以明智地选择你的指标。

长期与短期交付

一个全面的战略需要长期和短期的里程碑来保持团队的参与。将你的计划分成更小的独立组件要简单得多,每个组件解决更大问题的一部分。这使你能够更快地将你的产品提供给你的客户,甚至可能收到引导你前进的重要反馈。有时在基础层上投资是不可避免的,但是要确保认可这些努力,即使最终客户可能看不到它们。人们如何管理通往长期目标的旅程是区分成功人士和失败人士的关键。

人员和资源

您的人员和资源是您战略中最重要的部分,因为它们将是您成功的关键驱动因素。组建数据团队没有现成的方法,因为这取决于你正在开发的产品、你试图解决的问题以及你已经拥有的现有能力。但是作为一个总的指导方针,你需要在具有分析和工程背景的人之间取得平衡。以多面手为目标,当你开始时,他们可以站在围栏的两边,这样你可以保持你的团队规模小,但仍然有足够的覆盖面来填补所有需要的角色。虽然快速扩大团队规模很诱人,但在你开始展示价值之前,你应该保持小规模,这将降低你的风险,给你一个更好的成功机会。

数据是最重要的资源,在这个数据丰富的世界里,它可能是一件好事,也可能是一件坏事。大量的数据意味着你可以更容易地获得数据,特别是如果你聪明的话。但是,更多并不一定意味着更好,更多的数据有时只是意味着当你试图在其中找到针时,你的干草堆变得更大了。重要的是要有一个数据获取计划,详细说明你将需要什么数据,它可以带来的价值,以及你如何获得它。

行动计划

一旦你想通了上面所有的组成部分,你需要把它们放在一起,并为你的第一个或两个可交付成果制定一个计划。值得注意的是,你的计划会出现偏差,你需要在这个过程中进行调整,所以不要过于珍惜建立一个完美的计划。价值在于规划过程,因为它将帮助您规划出需要采取的关键步骤,并就如何将愿景转化为行动与团队保持一致。

创业公司呢?

虽然建立数据战略的高级流程对任何组织都是相似的,但在实施数据战略时,初创公司有一些独特的优势和劣势。

就缺点而言,

  • 创业公司通常不会从大量数据开始,因为客户群很小(但有望增长)。这在一定程度上限制了您可以对数据进行的分析类型,因为人口规模较小且数据集中的可变性较高。
  • 从新客户那里收集数据并不像听起来那么简单。随着关于数据被滥用的负面新闻越来越多,客户对如何处理他们的数据更加谨慎(理应如此)。但作为一家与客户没有任何关系的初创企业,你需要付出额外的努力来建立这种信任。以道德和透明的方式运营将有助于建立信任关系,您的客户会很乐意与您分享他们的数据。

另一方面,在优势方面

  • 缺乏遗留数据和系统是初创企业可以弥补损失的地方。数据量在广度和深度上都呈指数级增长,旧技术很难跟上。初创企业有更好的机会建立灵活的系统,更有效地利用数据。
  • 当谈到快速移动时,小是很棒的。鉴于数据发展的速度,能够快速部署是成功的关键,在实施见解和比大型企业更快上市方面,初创企业具有优势。快速运输的文化是初创企业的真正资产。

我的个人经历

建立数据策略对我来说是一次有趣而又富有挑战性的经历,我相信那些做过同样事情的人也会分享类似的故事。以下是我从迄今为止的经历中学到的一些关键的东西,我希望它们能给你一个好的开始。

从上到下对齐

为了拥有一个成功的数据战略,您需要让所有相关的利益相关者参与进来,从最高层的决策者到最基层的员工。没有太多的一致性,所以确保让每个人都参与进来,并让他们参与进来。建立数据策略是一个旅程,在这个过程中你需要团队的支持。确保你在正确的细节层次上交流,以消除任何歧义。写文件,画模型,如果需要的话,开研讨会,关键是把你的抽象计划变成具体的成果。

从简单开始展示价值

将数据转化为价值是困难的,尽管使用新的闪亮的分析工具包很酷,但快速展示价值也很重要。了解您在分析成熟度模型上的现状并解决正确的项目是获得快速成功的最佳方式。我发现深入研究关键指标是一个很好的起点,因为它开启了与不同利益相关者的对话,并有助于确定什么是重要的。这也是一个很好的方法,通过客观地看数字来识别和挑战人们一直以来所做的任何假设。

设定正确的期望

数据科学本质上是迭代和实验性的,当涉及到测量产出时,这并不能很好地实现。作为一个倡导在你的企业中建立数据战略和团队的人,你需要预先设定期望。通过保持对目标的正确关注,失败的实验不是浪费时间和资源,而是离找到正确的解决方案和良好的学习体验更近了一步。

投资于您的员工

数据科学与工程是一个竞争激烈的市场,找到完美的团队并不容易,但没有找到完美的团队这样的事情,因为他们是建立起来的。所以,要专注于雇佣那些有合适的潜力、态度和文化契合度,并且相信你的目标的人才。有了合适的环境,你就可以组建一个团队,将你的战略付诸实施。

定义数据分析策略并实施它只是初创企业面临的众多挑战之一。成功的关键在于专注于你的目标,并找到利用你的数据达到目标的最佳方式。会有很多意想不到的失败和教训,但只要你坚持下去,做出明智的决定,你就能从你的数据中获得价值。

如果您喜欢我的内容,请在 https://jchoi.solutions/subscribe注册更多内容

使用 Visual Studio 代码和 Anaconda (Python)建立自己的数据科学工作空间

原文:https://towardsdatascience.com/setting-up-your-own-data-science-workspace-with-visual-studio-code-and-anaconda-python-22237590b4ed?source=collection_archive---------7-----------------------

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

如果你刚开始涉足数据科学领域,创建一个个人工作空间将有助于你组织好你的项目。有很多不同的工具可以使用,如果你和我一样,刚开始在这个领域工作,你可能会发现一头扎进去会让人畏缩。在这篇文章中,我将向你展示如何用业内最常用的工具在 macOS 上建立自己的工作空间。虽然我在本指南中使用的是 macOS,但对于 Windows 平台,步骤几乎是相同的,我希望您在 Windows 上使用本指南应该没有问题。完成本指南后,您将能够:

  • 使用 Anaconda 设置 Python 环境。
  • 创建 Visual Studio 代码工作空间并运行 Python 脚本。
  • 安装包和管理不同的 Anaconda 环境。

让我们开始吧!

使用 Anaconda 设置 Python 环境

Anaconda 是 Python 和 R 的免费发行版,主要用于数据科学、机器学习、数据处理、分析等应用。它允许您管理您自己的环境和包,您将在您的项目中使用它们。我们将使用 Anaconda 进行包管理和部署。为了构建我们的工作空间,我们需要安装和配置 Anaconda。我们将遵循以下步骤:

  1. 安装 Anaconda。
  2. 使用最新版本的 python 创建一个新环境。
  3. 将软件包安装到您的环境中。

下载并安装 Anaconda

访问 Anaconda 网站,并为您的平台下载 Anaconda 的最新版本。您将能够下载 Python 3.7 和 Python 2.7 版本的 Anaconda。尽管我个人更喜欢获得最新版本的 Python,但有时 Python 包需要特定版本的 Python——因此我将向您展示如何设置多个 Python 环境。为了保险起见,我们现在将使用 Python 3.7。安装 Anaconda 后,启动 Anaconda Navigator。

在 Anaconda Navigator 中管理不同的环境

打开 Anaconda Navigator 后,您会看到 Anaconda 已经设置了一些工具和包,如 Jupyter、Spyder。注意这里有一个安装 VS 代码的选项。

点击安装。

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

The Anaconda Navigator installation comes with default packages preinstalled.

同时,导航到左侧菜单中的环境。在这里,您将看到 Anaconda 已经为您配置了一个现成的基本(根)环境。

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

The Anaconda Navigator interface showing you the packages installed on the base (root) environment.

在这里,您可以选择想要运行的环境。您也可以从终端直接运行 bash 命令。

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

Directly open Terminal with our without Python via Anaconda Navigator.

已经为你安装了很多包,但是如果你想安装新的包呢?或者你想为不同版本的 Python 安装不同的包?这就是为什么你想和环境打交道。注意,在上面的截图中,我已经建立了一个像这样的环境,名为 python37。

  1. 点击创建并配置一个新的 Python 环境。
  2. 选择 Python 的最新版本,并再次点击创建进行确认。

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

Anaconda serves R purposes too, but we’ll use Python in this case.

配置环境需要几秒钟的时间。几分钟后,您会注意到一个新的环境已经安装了一些默认的包。一旦设置好 Python 环境,您将主要使用终端在运行中安装软件包(稍后我将向您展示这一点),并且您可能很少使用 Anaconda Navigator。

太好了!从本质上讲,这是在您的机器上开始使用 Python 和 Anaconda 所需要的。现在我们只需要一个工作空间来实际使用我们的 Python 环境,这样我们就可以用我们的包运行我们的脚本了。你可以使用 Anaconda 附带的 Jupyter Notebook,但是我喜欢使用 VS 代码,我会很快解释为什么。

用 VS 代码创建您的数据科学工作空间

Visual Studio Code 是一个免费的代码编辑器,您可以根据自己的需要进行定制。使用像 VS 代码的 Python 扩展、GitHub 和其他有用的包,它是一个轻量级的 IDE,为在您自己的定制工作空间中运行 Python 提供了极好的支持。在前一章中,我们已经设置了 Anaconda 并安装了 VS 代码。

打开VS 代码。

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

The welcome screen on your first start of Visual Studio Code.

Visual Studio 代码是一个强大的轻量级代码编辑器,允许您为每个项目配置自己的工作区。出于测试目的,我创建了一个名为 DataScienceProject 的虚拟文件夹。

  1. 点击打开文件夹并选择文件夹。
  2. 进入菜单,选择文件>将工作空间另存为
  3. 将您的工作区文件保存在文件夹中

现在,您已经在 VS 代码中设置了一个定制工作区。工作区的伟大之处在于,您可以为每个单独的工作区定制设置。

  1. 现在,在您的工作区中创建一个名为 helloworld.py 的新文件。
  2. 打开 helloworld.py。
  3. 将下面的代码复制到您的文件中并保存。
#%%
# This is the first cell of our Python code
print('Hello world!')#%%
# This is another cell
print('Another cell for the world to see!')

在这个时候,当你打开你的文件时,你可能会得到各种各样的消息,比如“Pylint package not installed”。这是因为 VS 代码会自动识别你正在编辑一个 Python 文件。我们一会儿将进入包,但是首先让我们看看我们是否能运行我们的 Python 文件。您可以直接在终端或交互式 Python 窗口中运行它。交互式 Python 窗口非常有用,因为它为您调试代码提供了更多的反馈,而且还允许您在 Python 脚本中运行称为单元的不同代码。

要运行您的脚本,请按下 **shift-enter。**您也可以右键单击该文件,然后选择“在终端中运行 Python 文件”或“在交互式 Python 窗口中运行 Python 文件”。

运行第一个脚本后,您应该会在代码右侧看到交互式 Python 窗口,并返回如下内容。

[1] # This is the first cell of our Python code...Hello world![2] # This is another cell...Another cell for the world to see!

恭喜你!您刚刚在 Visual Studio 代码中设置了一个工作区来运行 Python 项目!现在让我们再深入一点,看看我们能否在我们的环境中安装新的软件包。

从您的终端管理包

现在我们已经运行了第一个脚本,您可能想要添加一个新的包。假设您的项目要求您连接到一个 Google API。Google 为我们提供了一个包来完成这项工作,但是这些并没有安装在您的默认环境中。幸运的是,我们有很多选择。Anaconda 有自己的包存储库,还有更多的存储库供我们查找我们的包。我们在示例中寻找的包是 Google API Python 客户端。继续并遵循这些步骤。

打开终端。确保您在基本环境中工作。终端应该通过显示如下内容来告诉我们这一点:

(base) myMac:DataScienceProject myUser$

通过在终端中输入以下命令,检查软件包是否已经安装:

conda list

这将返回当前安装在您的基本(根)环境中的软件包列表。现在,通过在终端中运行以下命令来安装软件包:

conda install -c conda-forge google-api-python-client 

该软件包现在将安装在您的基础环境中。如果一切顺利,您应该在终端中看到以下消息。我没有复制所有的信息,但这应该给你一个想法。

Collecting package metadata (current_repodata.json): done
Solving environment: done## Package Plan ##environment location: /Users/myUser/anaconda3added / updated specs:
    - google-api-python-clientThe following packages will be downloaded...
...
...Proceed ([y]/n)? y...Preparing transaction: done
Verifying transaction: done
Executing transaction: done

厉害!我们已经成功地在我们的环境中安装了一个新的软件包。这将允许您导入包库,并从脚本中使用 Google API Python 客户端。

但是,如果您已经有一个包在基本环境中运行,并且您不想冒险弄乱您当前的环境设置,该怎么办呢?您可以使用新的环境,并为该环境安装不同的软件包。我们现在知道了如何安装一个包,但是让我向您展示如何从 VS 代码中改变您的 Python 环境。

在工作空间中管理 Python 环境

除了在您自己的定制工作区中工作之外,您还可以在编辑器中管理您的 Anaconda 环境。这样,您就不必一遍又一遍地运行 Anaconda Navigator,而只需直接在编辑器外运行 Python 环境,这样您就可以继续编码了。

你注意到编辑器底部的蓝色条了吗?这个条给你关于你正在工作的代码的信息。在工具栏的最左边,您可以看到您当前正在使用的解释器。在我的例子中,它使用:

Python 3.7.3 64-bit ('base':conda)

正如您所看到的,我正在 Anaconda 的基本(根)环境中运行 Python 3.7.3。它还显示您的代码中是否有任何问题,有多少行、列、空格,您当前选择了哪种编码,以及您是用哪种语言编程的。

通过点击口译员,您可以选择其他口译员。例如,我们之前在 Anaconda 中创建的 Python 环境。

点击你的解释器,然后选择我们之前创建的解释器

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

How to select a different Python interpreter.

现在,当你从你的基本解释器切换到一个新的解释器时,有时 Jupyter 服务器启动有困难。Jupyter-server 运行在一个内核上,这个内核在某种程度上是 Python 环境的引擎。Jupyter-kernel 对于在 VS 代码中运行代码至关重要,尤其是在交互式 Python 窗口中运行代码。如果您碰巧遇到这些错误,请在终端中尝试以下操作:

对于 macOS:

source activate <environmentnamehere>
pip install ipykernel
python -m ipykernel install --user

对于 Windows:

activate <environmentnamehere>
pip install ipykernel
python -m ipykernel install --user

这将在您的环境中专门安装一个内核。重启 VS 代码编辑器,尝试在新选择的解释器(python37:conda)中运行代码。

如果一切顺利,那么恭喜你!您已经成功地在 Visual Studio 代码中设置了自己的工作空间,现在您可以将它用于您的 Python 项目了!

结束语

管理您的 Python 环境可能是一件痛苦的事情。了解如何管理您的环境和软件包会给您带来很大的灵活性,并在您的一个环境突然停止工作时避免很多压力。这就是为什么我想向您展示如何切换环境和安装包,因为这些是您容易出现的错误类型。

当然,我还没有向您展示使用 Visual Studio 代码或 Anaconda 可以做的所有事情,这就是为什么我建议您也阅读以下文章:

我希望这本指南对你有所帮助。编码快乐!

在家里设置自己的小服务器

原文:https://towardsdatascience.com/setting-up-your-own-little-server-at-your-home-5331a9e04ead?source=collection_archive---------10-----------------------

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

从树莓派开始

就在两年前,我的公司送给我们一个树莓派 3。

那时,我不明白那是什么。 感觉就像一个小板子里有很多复杂的电路和芯片。

所以它在我的橱柜里放了一年。

然后我面临一个特殊的问题。问题是我必须每两个小时运行一次 python 脚本。

一个解决办法是让我自己的 MAC 24 小时开着。 看起来不太合适的事情。

另一个方法是使用 AWS 服务器,但我很吝啬。这个特别的项目是一个家庭项目,所以我不想要任何昂贵的东西。

这时,我想起了橱柜里积满灰尘的覆盆子酱。人们以前说过它是一台小型电脑。

所以我想尝试一下。

这篇文章是关于建立你自己的小型个人服务器,只要 50 美元。

什么是树莓派?

我很晚才发现它,但我的树莓 Pi 3 是一台 1.2GHz 四核迷你电脑,内存为 1GB。

人们可以把它看作是一个基本而廉价的计算机主板,旨在为每个人提供计算能力。

根据 Pi 网站:

我们的使命是将计算和数字制作的力量传递到世界各地的人们手中。我们这样做是为了让更多的人能够利用计算和数字技术的力量来工作,解决他们关心的问题,并创造性地表达自己。

你需要什么配件?

现在,在开始用 Raspberry Pi 创建一个小型服务器之前,我们需要一些东西。你可以选择借用其中的大部分,因为安装时只需要一次。

  • 显示器 —任何支持 HDMI 的显示器。这是 第一次只需要 你就要设置你的 Pi 了。我现在正在用我的普通 4K 显示器来做这个,但是它在这里可能有点过头了。
  • 外设如 键盘和鼠标 :同样只在第一次你要设置 Pi 的时候。如果你身边没有,你可以向朋友借。
  • 一个电源适配器: 一个简单的微型 USB 手机充电器就可以了。为此,我使用了以前的手机充电器。
  • micro SD 卡: 你的 Pi 没有自带存储。你必须得到一个微型 SD 卡作为额外的附件,这是我们最终成本的一部分。这里是我得到的一个,它也带了一个卡适配器。
  • 当然还有一份树莓酱

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

Anatomy of a raspberry Pi: Source

和拉斯比安一起准备

现在我们有了第一次设置所需的所有附件。

下一步是安装操作系统。Pi 最流行的操作系统是 Raspbian。所以我们需要把它安装在我们的 SD 卡上。

这只是您可以遵循的一系列步骤:

  • 参观 www.raspberrypi.org/downloads/

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

Source

  • 点击 NOOBS。NOOBS 只是一种在 SD 卡上安装 Raspbian Pi 的方法。
  • 你会被带到一个下载选项。只需下载压缩文件。
  • 解压缩 zip 文件
  • 将 SD 卡插入您的 MAC/Windows 笔记本电脑。我的 Mac 已经有一个 SD 卡插槽。
  • 将解压后的 zip 文件的内容复制到 micro SD 卡上。记住的不是文件夹,而是内容。

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

Source

我们结束了。

现在我们终于可以用我们的树莓派了。

乐高小游戏

现在有趣的部分来了。只是把这一切联系起来。

这是连接所有东西并打开电源后的样子。

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

All the lego blocks in place

在这里,我已经将 HDMI 电缆连接到显示器、微型 SD 卡、键盘、鼠标,最后是电源适配器。

一旦你启动了你的树莓派。您需要完成一些提示。您将从安装 Raspbian 开始,如下所示,安装将需要几分钟时间。

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

Source

您可以设置 wifi,也可以为您的 Pi 设置密码。

下面是一个更大的设置视图,你可以最终看到 Rapbian 的行动。它看起来有点像 Linux。

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

My Home Setup

所以我们手里终于有了一台新电脑。

但是我们仍然想归还我们借来的键盘和额外的外设。对吗?

我们想要一台小型计算机,在后台运行我们的预定任务,占用最小的空间。

最后,我们希望能够移除显示器和外围设备。唯一保持连接的将是 Rasberry Pi、SD 卡和电源适配器。我们称之为无头模式。

我们需要设置 SSH 来实现这一点。一旦我们完成了 SSH 设置,我们将能够使用我们的 Mac SSH 到 Pi。

设置 SSH

为了实现这一点,我们只需要在树莓 GUI 上做几个步骤。

  • 打开首选项>树莓 Pi 配置

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

  • 选择接口并启用 SSH。

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

  • 我们还需要找出 Raspberry Pi 的 IP 地址,稍后我们将使用它来 SSH 到它。我们只需使用 Pi Start > Accesories > Terminal 打开终端,并键入命令ifconfig。我们将在wlan0中看到 IP 地址。我 pi 的 IP 地址是 192.168.0.115。

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

我们准备好了。

安装后你需要什么?

一旦我们设置好 SSH,您只需在关闭电源后移除显示器、键盘和鼠标,然后再次打开电源即可。

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

My Headless Pi

我们的 Pi 开始运行了。

要从家庭网络上的 Mac SSH 到 Pi,您只需使用:

ssh pi@192.168.0.115

当它要求时,只需输入您的 Pi 密码。

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

Pi 预装了很多东西。例如,我们有 Python2 和 Python3。

我们可以使用 pip3 来安装所需的 Python 包。我们也可以使用sudo apt-get来安装依赖项和程序。

结论

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

恭喜你。

你有自己的服务器。只要 50 美元。

在电源中断的情况下,它会自动重启。我自己的已经连续跑了两天了,一点热度都没有。

你想用它做什么真的取决于你。您可以使用crontab -e命令使用它来运行计划的 cronjobs。您可以定期浏览网站,可以使用 selenium 来自动完成一些日常任务。您可以定期向某人发送电子邮件/消息。

当你想到 的时候,可能性真的是无穷无尽。

在我的下一篇文章中,我将谈论在我的 Pi 上设置一个小应用程序。敬请关注。

如果你想了解更多关于命令行的知识,我想你在使用 Pi 时会经常用到,Coursera 上有一个 UNIX 工作台课程,你可以试试。

将来我也会写更多初学者友好的帖子。在 媒体 关注我或者订阅我的 博客 了解他们。一如既往,我欢迎反馈和建设性的批评,可以通过 Twitter @mlwhiz 联系

在生产中设置 MLflow

原文:https://towardsdatascience.com/setup-mlflow-in-production-d72aecde7fef?source=collection_archive---------3-----------------------

使用 Postgres DB 存储元数据和 systemd 单元保持 MLflow 运行的分步指南。

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

Source: https://mlflow.org

这是我的 MLflow 教程系列的第一篇文章:

  1. 在生产中设置 ml flow(你在这里!)
  2. MLflow:基本测井功能
  3. 张量流的 MLflow 测井
  4. MLflow 项目
  5. 使用 Python API 为 MLflow 检索最佳模型
  6. 使用 MLflow 服务模型

MLflow 是一个用于机器学习生命周期管理的开源平台。最近,我在产品中设置了 MLflow,使用 Postgres 数据库作为跟踪服务器,使用 SFTP 通过网络传输工件。我花了大约 2 周的时间才把所有的组件都弄好,但是这篇文章可以帮助你在 10 分钟内把 MLflow 安装到生产环境中。

要求

跟踪服务器设置(远程服务器)

跟踪服务器存储您在 MLflow 用户界面中看到的元数据。首先,让我们创建一个新的 Conda 环境:

conda create -n mlflow_env
conda activate mlflow_env

安装 MLflow 和 PySFTP 库:

conda install python
pip install mlflow
pip install pysftp

我们的跟踪服务器使用 Postgres 数据库作为存储元数据的后端。所以让我们安装 PostgreSQL:

apt-get install postgresql postgresql-contrib postgresql-server-dev-all

接下来,我们将为跟踪服务器创建管理员用户和数据库

sudo -u postgres psql

在 psql 控制台中:

CREATE DATABASE mlflow_db;
CREATE USER mlflow_user WITH ENCRYPTED PASSWORD 'mlflow';
GRANT ALL PRIVILEGES ON DATABASE mlflow_db TO mlflow_user;

因为我们需要与 Python 中的 Postgres 进行交互,所以需要安装 psycopg2 库。但是,为了确保成功安装,我们需要在以下操作之前安装 GCC Linux 软件包:

sudo apt install gcc
pip install psycopg2-binary

如果您希望远程连接到 PostgreSQL 服务器,或者希望将其访问权授予用户。你可以

cd /var/lib/pgsql/data

然后在 postgresql.conf 文件的末尾添加下面一行。

listen_addresses = '*'

然后,您可以通过在 pg_hba.conf 文件的末尾添加以下行来指定您希望允许连接到 PostgreSQL 服务器的远程 IP

host    all    all    10.10.10.187/32    trust

其中 10.10.10.187/32 为远程 IP。要允许来自任何 IP 的连接,请使用 0.0.0.0/0 来代替。然后重新启动 PostgreSQL 服务器以应用更改。

service postgresql restart

下一步是为我们的跟踪服务器创建一个目录,以记录机器学习模型和其他工件。请记住,Postgres 数据库仅用于存储关于这些模型的元数据。这个目录叫做神器 URI。

mkdir ~/mlflow/mlruns

创建日志目录。

mkdir ~/mlflow/mllogs

您可以使用以下命令运行跟踪服务器。但是一旦你按 Ctrl-C 或者退出终端,服务器就会停止。

mlflow server --backend-store-uri postgresql://mlflow_user:mlflow@localhost/mlflow_db --default-artifact-root sftp://mlflow_user@**<hostname_of_server>**:~/mlflow/mlruns -h 0.0.0.0 -p 8000

如果您希望跟踪服务器在重新启动后启动并运行,并且对故障具有弹性,那么将它作为 systemd 服务运行是非常有用的。

您需要进入 /etc/systemd/system 目录,创建一个名为 mlflow-tracking.service 的新文件,内容如下:

[Unit]
Description=MLflow Tracking Server
After=network.target[Service]
Restart=on-failure
RestartSec=30
StandardOutput=file:/path_to_your_logging_folder/stdout.log
StandardError=file:/path_to_your_logging_folder/stderr.log
User=root
ExecStart=/bin/bash -c 'PATH=/path_to_your_conda_installation/envs/mlflow_env/bin/:$PATH exec mlflow server --backend-store-uri postgresql://mlflow_user:mlflow@localhost/mlflow_db --default-artifact-root sftp://mlflow_user@**<hostname_of_server>**:~/mlflow/mlruns -h 0.0.0.0 -p 8000'[Install]
WantedBy=multi-user.target

使用以下命令激活并启用上述服务:

sudo systemctl daemon-reload
sudo systemctl enable mlflow-tracking
sudo systemctl start mlflow-tracking

使用以下命令检查是否一切正常:

sudo systemctl status mlflow-tracking

您应该会看到类似如下的输出:

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

Systemd unit running

为名为 mlflow_user 的服务器创建用户,并将 mlflow 目录作为该用户的工作目录。然后在中创建一个 ssh-key 对。ml flow _ user(/ml flow/)的 ssh** 目录。在我们的例子中是 ssh** )。将公钥放在 authorized_keys 文件中,与用户共享私钥。

此外,为了让 MLflow UI 能够读取工件,将私钥复制到 /root/。宋承宪/ 也是。

接下来,我们需要使用以下命令为服务器手动创建主机密钥:

cd /root/.ssh
ssh-keyscan -H **<hostname_of_server>** >> known_hosts

现在,您可以重新启动计算机,MLflow Tracking Server 将在重新启动后启动并运行。

在客户端机器上(本地)

为了开始跟踪生产跟踪服务器下的一切,有必要在您的中设置以下环境变量。bashrc

export MLFLOW_TRACKING_URI='http://**<hostname_of_server>**:8000'

不要忘记为您的寻找来源。bashrc 文件!

. ~/.bashrc

确保在您的环境中为 mlflowpysftp 安装 pip 包(需要 pysftp 来促进工件到生产服务器的传输)。

pip install mlflow
pip install pysftp

为了能够认证 pysftp 传输,将生产服务器上生成的私钥放在中。本地机器的 ssh 目录。那就做吧

ssh **<hostname_of_server>**

当提示将****保存为已知主机时,回答 yes

您可以在http://:8000访问 MLflow UI

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

The Mlflow UI

从互联网上运行一个样本机器学习模型,以检查 MLflow 是否可以跟踪运行。

mlflow run git@github.com:databricks/mlflow-example.git -P alpha=0.5

在下一篇文章中,我将讲述基本的 MLflow 日志记录功能

参考资料:

[1]物流,安装物流 (2019),物流文件

构建数据科学模型的七个主要步骤

原文:https://towardsdatascience.com/seven-major-steps-for-building-a-data-science-model-c1761408dd17?source=collection_archive---------7-----------------------

如何构建有效的数据科学模型

数据无处不在,但从这些数据中获取价值是最大的挑战。但是,随着数据科学的引入,情况有了好转。每个人都在谈论它,每个人都想融入这项更新的技术,但并不是每个人都知道如何去做。因此,这里有一个全面的指南,列出了构建成功的数据科学模型的重要步骤。让我们开始吧。

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

什么是数据科学?

数据科学是一门从数据中分析和提取知识信息的艺术。这种提取得到了领域专业知识、编程和一些数学和统计学的支持,它们共同工作以得出有意义的结论。数据科学是一个奇妙的发现,它引导企业获得难以置信的利润。你不相信吗?

下面的例子说明了同样的情况:

你不为数据科学传播的魔力而惊叹吗?是的,西南航空和联合包裹在这方面做了大量的工作。但是,这不是一日之功。有些事情他们做得不同,你也可以这样做。

改变的主要步骤是建立一个数据科学模型。如果你对如何进行这个过程感到幼稚,这里有一些必要的步骤。

1。数据提取

首先,你需要对手头的问题有一个概念,然后是收集数据。不是任何数据,而是收集的非结构化数据块应该与您将要解决的业务问题相关。你会惊讶地知道万维网是如何被证明是数据发现的福音。

你可以参考流行的在线数据仓库:

**注:**并非所有数据都是相关和更新的。为了从收集的数据中找到意义,使用网络搜集。这是一个从网站提取相关数据的简化和自动化过程。

2。继续进行数据清理

你听说过不应该把事情留到明天吗?当您需要在收集数据时清理数据时,这一点非常重要。你越早裁员越好!

以下是一些常见的数据错误来源:

  • 从许多数据库中收集的重复条目
  • 输入数据在准确性方面的误差
  • 数据条目被更改/更新/删除
  • 跨数据库的变量中缺少值

消除常见错误来源的技巧:

  • 通过参考公共 id 过滤掉重复的
  • 根据数据的更新日期对数据进行分类,即优先选择最近的数据条目
  • 用平均值填写缺失的数据条目

3。深入研究数据

现在每个数据源都准备好了,您可以开始分析所涉及的基本模式。部署有趣的工具,如 Tableau微策略可以帮助很多。您所要做的就是构建一个交互式仪表板,并查看您的数据如何成为重要见解的一面镜子。

画面会很清晰,现在你会知道是什么在驱动你的业务的变化特征。例如,如果是定价属性,您将知道价格波动的时间和原因。

5。识别关键特征

当试图掌握商业中的关键模式时,可以部署特征工程。这一步不能被忽略,因为它是最终确定合适的机器学习算法的先决条件。简而言之,如果特征很强,机器学习算法将产生令人敬畏的结果。

有两类功能需要注意:

  • 不太可能改变的恒定特征
  • 值随时间波动的可变特征

6。探索机器学习的世界

这是最重要的步骤之一,因为机器学习算法有助于建立一个可行的数据模型。有许多算法可供选择,但不要担心,因为数据科学家会让你轻而易举。

用数据科学家的话来说,机器学习就是部署机器来理解一个系统或底层流程,并为其改进做出改变的过程。并且,算法可以被称为计算机系统驱动特定任务的一组指令。

以下是你需要了解的三种机器学习方法:

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

Types Of Machine Learning

  • 监督学习:基于过去类似过程的结果。监督学习有助于根据历史模式预测结果。

**举例:**通过回顾过去点击量最高的在线广告,你可以预测是什么特别的特点让用户立即点击。

用于监督学习的屡试不爽的算法:

线性回归

-随机森林

-支持向量机

  • **无监督学习:**这种学习方法仍然缺乏现有的结果或模式。相反,它侧重于分析数据元素之间的连接和关系。

**举例:**当你看到脸书上的“建议好友”专题时。社交媒体平台计算两个用户共有的朋友数量。共同的朋友越多,关系越密切。

无监督学习的试验和测试算法:

-k 均值

-Apriori 算法

  • 强化学习:这是一种有趣的机器学习方法,依赖于与现实世界交互的动态数据集。简单来说,就是系统从错误中学习,一天比一天好的方法。

举例: 深蓝是 IBM 作为下棋专家创造的系统。随着每一场比赛的进行,这个系统从初级水平发展到了专业水平。

强化学习的屡试不爽的算法:

Q-学习

-国家-行动-奖励-国家-行动

-深度 Q 网

7。评估&部署模型

一旦你选择了正确的机器学习算法,接下来就是对它的评估。您需要验证该算法,以检查它是否为您的业务产生了预期的结果。

交叉验证甚至 ROC(受试者操作特征)曲线等技术可以很好地概括新数据的模型输出。如果模型产生了令人满意的结果,那么就可以开始了!实施该模型,并看到您的企业以前所未有的方式发挥作用。

  • 工程师有权将模型部署到相应的生产阶段。在这里,专家将模型翻译成生产栈语言,以促进良好的实现。
  • 第二,建立基础设施,进一步使数据科学家足够独立,可以独立部署数据模型。随着 API 的快速发展,这是可能的。这些 API 致力于消除数据科学和项目团队之间的滞后。

关键外卖:

无论你的企业在哪个领域运营,数据科学都应该是你的下一个大实验。构建数据科学模型是一个收集各种数据集并赋予其意义的美丽旅程。

如果你真的希望在竞争中领先,这是开始数据科学项目的最佳时机。按照列出的步骤,马上开始吧!毕竟,我们的目标是将数据转化为信息,将信息转化为见解。

作者简介:

Paige Griffin 在洛杉矶 Net Solutions 工作了 7 年,是一名经验丰富的内容作家,擅长撰写博客,为直接回应市场撰写创意和技术文案,并为 B2B 和 B2C 行业制作促销广告。Paige 在纽约出生和长大,拥有英国文学学士学位。她曾在 IT、产品工程、生活方式等行业工作过,并撰写了一些关于 python web 开发、php web 开发、 iOS 应用程序开发等技术的深刻见解。除了技术背景之外,她内心还是一个诗人,喜欢通过一定量的创造力和想象力与人们联系在一起。

机器学习的七个步骤

原文:https://towardsdatascience.com/seven-steps-to-machine-learning-afb9f71f2a97?source=collection_archive---------27-----------------------

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

这是机器学习入门系列的第二个视频。如果你是 ML 新手,我鼓励你先看一下之前的视频

之前的视频中,您学习了什么是 ML,为什么它很重要,以及如何从数据集训练机器学习模型。然而,ML 不仅仅是训练模型。在这个视频中,我涵盖了构建机器学习系统所需的七个步骤。

我还透露了我在 面试 有抱负的数据科学家时问的第一个问题 是什么,并提供了一些我之前与客户接触时的行业实例。**

以下是视频中的步骤和内容:

****1。资料收集:《数据湖妄想》。

2。数据管理:数据模式、语义类型、缺失值处理、数据聚合。

****3。数据探索:趋势/分散的测量,可视化。

****4。特征工程:特征选择,降维,主题专家 vs .数据科学家协同。

****5。建模:如何选择一个机器学习算法?监督与非监督学习,推荐系统,开源工具。

****6。测评:如何挑选最好的型号?

****7。部署:从模型到运行在云上的服务。

关于作者

scar D. Lara Yejas 是高级数据科学家,也是 IBM 机器学习中心的创始成员之一。他与世界上一些最大的企业密切合作,将 ML 应用于他们的特定用例,包括医疗保健、金融、制造、政府和零售。他还为 IBM 大数据产品组合做出了贡献,特别是在大规模机器学习领域,是 Apache Spark 和 Apache SystemML 的贡献者。

scar 拥有南佛罗里达大学的计算机科学和工程博士学位。他是《人类活动识别:使用可穿戴传感器和智能手机》一书的作者,并发表了大量关于大数据、机器学习、以人为中心的传感和组合优化的研究/技术论文。

为客户设定目标和选择衡量标准的七个步骤

原文:https://towardsdatascience.com/seven-steps-to-set-goals-and-pick-metrics-for-customers-613283570521?source=collection_archive---------12-----------------------

当你想为你的客户提高价值时,规划清晰的目标和一个数据驱动的方法来实现它们是值得的。问题是,这是一个棘手的过程,隐藏着陷阱,即使你正在经营你的业务,这些陷阱也会让你感觉良好。在这篇文章中,我分享了我带领团队和决策者将想法转化为清晰可衡量的客户目标的七个步骤。

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

Seven-steps to set goals and pick metrics for customers. Photo by Samuel Chenard on Unsplash

动机

我们都希望我们的企业为客户提供价值,但我们如何知道我们正在实现它?嗯,有一些与利润和损失相关的财务指标,您可以通过监控这些指标来维持运营。然而,这些很少给你可操作的客户洞察力。

要发展,你的目标不能仅仅是增加利润。你需要考虑如何改善用户体验,增加满意度,减少困惑,或者增加忠诚度。如果做得正确,设定这些目标,并选择衡量其成就的标准,将有助于您更快地向客户交付更多价值。

大错误:将目标定义为度量标准

一个容易犯的错误是将目标定义为度量标准。一些例子:

  • 提高转化率
  • 减少客户服务查询量
  • 提高客户回头率

这些有直观意义。你为什么不想提高转化率或客户回头率?但是你对这些目标有什么看法:

  • 让支付变得更容易,转化率的增加就是证明
  • 减少混乱,客户询问的减少就是证明
  • 通过更高的退货率来提高满意度

相同的指标,巨大的差异。这些目标确切地表达了你想如何让顾客满意。这里的要点是,度量永远不应该定义目标。衡量标准只提供你正在实现目标的证据。

如果这还不行,下面是我不使用度量标准作为目标的主要原因。

不可弯曲的

将一个目标定义为一个度量标准会将你的成就限制在你可以衡量这个度量标准的范围内。好的目标是度量不可知的,并且足够灵活,可以在任何场景下获取成就。

不可宽恕的

当你选择一个不可靠的、无效的、不可移动的或者通常不好的度量标准时,度量标准定义的目标是不可原谅的,你几乎肯定会这样。好的目标会原谅不好的指标选择,并让你在需要时使用其他指标。

无常的

有了像“增加转化率”这样的目标,当事情不按你的方式进行时,你最终将不得不面对不确定性的浪潮。好的目标阐明了无论事情朝哪个方向发展,如何解释证据。

危险的

从任何单一指标得出强有力的结论都是不安全的,因为指标的变化有很多原因。好的目标可以让你用多个指标来衡量你的进步,并让你对自己的决定充满信心。

“指标永远不应该定义目标。衡量标准只提供你正在实现目标的证据。”

设定目标和选择衡量标准的七个步骤

面对这些隐藏的挑战很多次了,我把设定目标和选择标准的过程分成了七个步骤。起初这需要一些额外的时间,但很快就会成为习惯,并让你获得比其他方式更多的成功。

第一步。起草你的目标

你想达到什么目的?不要想多了。把想法写在纸上。为了证明这一点,想象一下想要改进一个电子商务网站的支付流程。我的第一个想法是:

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

第二步。抓住问题的核心

“为什么?为什么?为什么?”一遍又一遍地问自己。为什么这是我的目标?我真正想解决的问题是什么?我如何为我的客户提高价值?戳和探索,直到你到达重要的美味中心。

为什么我要减少点击?真的吗?也许越多越好。不断询问和挑战,你可能会得出结论,我真的想:

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

不要低估这一步的难度或价值。如果这里还有一个度量标准,那么你还没有完成。每次我带人们走过这一步,我都必须不断追问“为什么”,直到我们找到具体而有意义的东西。它几乎总是从我们出现偏见和不确定或冲突的目标开始,但以更深刻的见解和更清晰的目标结束。

第三步。将你的目标设定为一个有方向的维度

下一步涉及一些前瞻性的思考。在一天结束时,您将查看您的指标在一个方向或另一个方向上是上升还是下降。

要计划与指标的联系,将你的目标重新表述为一个维度(你有兴趣改变的东西)和方向(你希望它如何改变)。我会这样重新表述我们的支付目标:

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

一定要用两个明确的极点来定义自己的方向:更好/更差,满意/不满意,更多/更少,等等。“容易”的反义词是“难”。但是“优化”的反义词是什么呢?如果你不能定义两极,如果你的度量与你期望的方向相反,你就不能解释发生了什么。

第四步。画出你的目标

最简单的步骤:在一个指向你想要的方向的箭头上画出你的尺寸。

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

这有助于为后续步骤保持一切有序。

第五步。想象一下你期望在两端观察到什么

对于你箭头的每一端,问问你自己,“在一个[维度]就是[方向]的世界里,我期望观察到什么?”

在一个顾客很容易付款的世界里,你会观察到什么?难的地方怎么样?发挥创造力,我建议手边要有便利贴。以下是我想到的一些事情:

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

试着把你的注意力放在客户的想法、感受或行为上,暂时不要包括指标。

第六步。提炼和可视化期望

对于每个预期的观察,完成步骤 2 到 4,将它们转化为与你的目标一致的维度和方向。

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

事情在这里真正开始成形,对我来说,这是视觉帮助很大的地方。

第七步。选择您的衡量标准

最后,为每个预期的观察(蓝框)列出一个或多个指标(你可以测量的事物)以及它们发生的方向。像这样把它们覆盖在你的视觉上:

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

你有它!你的目标的视觉表现,如果你正在实现(或没有实现)你期望看到的事情,以及你可以实际测量并记录它们的结果模式。

总结和实用技巧

在流程结束时,您可以将您的目标与如下指标联系起来:

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

如果你的所有指标都朝着你期望的方向发展,那么你就找到了实现目标的证据。

如果你尝试这样做的话,一个建议是把你自己限制在 3 到 5 个最相关的指标上。这应该给你足够的信息来衡量你的成就,而不会让你的仪表盘上充斥着可能有问题的表盘。

最后,这里有一张小抄,供你下次尝试时参考:

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

停止广播

感谢阅读,请在下面分享你的想法和评论,我希望这对你有用。

想多读点?你可以在 Medium、 TwitterLinkedIn 上以@drsimonj 的身份关注我的最新帖子。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值