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

原文:TowardsDataScience Blog

协议:CC BY-NC-SA 4.0

在数据科学写作方面做得更好,机会就会增加

原文:https://towardsdatascience.com/get-better-in-data-science-writing-and-the-opportunities-will-grow-9d37fdada262?source=collection_archive---------35-----------------------

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

Photo by Ian Stauffer on Unsplash

如何在一年内将你的数据科学写作提高 3700%

改善沟通的 9 个技巧

我们一直都这样做。

写作是我们交流的一个重要部分**。我们写电子邮件、短信和博客。我们撰写项目报告和技术文档。我们写求职信和简历。我们写不完的文字,一整天都在写。**

请记住,你写的东西通常是你唯一的机会,让你可以向别人展示你需要的生意、金钱或善意。

—威廉·津瑟

他是对的。不要因为不够清楚而错失良机。如果写作是我们每天最常做的事情,想象一下哪怕提高一点点的回报。

在这篇文章中,我将通过一些简单的步骤,让你的写作更有效率,并提供一些最好的建议。

数据科学家通常需要向非技术受众解释他们的方法和发现。例如,经理或营销团队。

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

Photo by Icons8 Team on Unsplash

避免行话和杂乱的句子。不厌其烦地讲清楚,讲个人。

清晰的文字可以比作进行主成分分析。在 PCA 中,目标是选择解释数据中大部分变化的变量,并简化计算过程。

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

https://en.wikipedia.org/wiki/Scree_plot#/media/File:Screeplotr.png

通过在你的文章中仔细选择最重要的事实和想法,并删除不太重要的,你可以让你的故事更容易被你的读者接受。

写得更好的 9 个简单步骤

以下步骤将帮助您更好地讲述您的数据科学故事。查看最后的参考资料,了解更深入的信息。

1.养成每天写作或重写 30 分钟的习惯

例如,在健身方面,如果你偶尔训练,你的肌肉不会有任何增长。只有当你经常锻炼时,你的肌肉才会开始生长并变得更强壮。同样,精神任务随着一致性而提高。

有才华的人之所以有才华,并不是因为他们曾经做过某件事,而且很棒。他们做了成千上万次的事情,只有在那之后,他们才成为传奇。做事多次。 写日常。你做得越多,就会做得越好。

正如《华氏 451 度》的作者雷·布雷德伯里所说

“数量产生质量。如果你只写几样东西,你就完了。”

生活中的许多事情都遵循指数增长曲线。开始时,你的收益很小,最后会高得多。

如果你在一年中每天提高 1%的技能,那么在一年结束时,你将获得 3700%的累积进步。

# Cumulative gains after 365 days
1.01^365 * 100
= 3778.343%

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

Daily 1% improvements result in a 3700% gain in one year

2.从结构开始

我得到的这个写作技巧来自我最喜欢的作家之一,

“学结构。研究你最喜欢的非小说类书籍,特别要注意这本书是如何在书的层次上组织的,然后是章节层次,然后是段落层次。结构让其他一切变得更容易。”

您可以将此应用于撰写数据科学故事。分析你喜欢的数据科学文章的结构。作者如何组织整篇文章?他是如何构建每一段的?他如何利用故事将数据嵌入其中?这将帮助你理解和发现你自己的成功之路。结构会给你方向。

使用框架

写好一个故事的关键往往在于能够组织好自己的思路。为了以书面形式组织你的思想,你需要一个框架。任何框架都比没有好,甚至比开始-中间-结束帮助还要简单。

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

Photo by Eliabe Costa on Unsplash

你的卧室衣柜如何整理你的衣服?同样,即使是一个粗略的文章计划也会让一切变得更容易。尤其是在数据科学项目中,写作可能会变得复杂。有一个框架把不同的部分放在一起,会使构建最终的故事更加容易。

**博览群书,但要读得透彻。**研究你在 medium.com 或其他数据科学博客上找到的最佳文章。看看它们是如何在段落或句子层面上作为一个整体来构建的。

3.设定截止日期

截止日期帮助我们在更少的时间里做更多的事情。想象一下,你有一年的时间写完一本书。但是你很有野心,你给自己设定了一个期限,要在一个月内完成。你认为这一个月结束时事情会是什么样子?你可能无法完成,但你会进步很多。

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

Photo by Luke Chesser on Unsplash

对于数据科学文章,我会创建一个快速的初稿,我必须在一个小时内完成。这个练习将教你选择最重要的事实,并在你的文章中去掉不太重要的。这是让你的听众清楚明白的先决条件。

  • 如果你只有 60 分钟来写 2000 字,你没有时间分心。这个限制将帮助你选择需要做的事情,放弃不太重要的事情。

这样做将有助于你掌握对项目核心的关注。

就像我们在化学课上学到的,气体会充满它们所在的空间。就像一滴古龙水会在房间的另一个角落被感觉到。任务膨胀以填满分配给它们的时间空间。这就是众所周知的帕金森定律,这个术语是由西里尔·诺斯古德·帕金森创造的。我使用伽马分布函数创建了一个描述原始帕金森定律的类似曲线。

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

完成一项任务的总努力(曲线下面积)随着允许时间的增加而增加。

除了帮助你管理时间之外,真正的好处是让你学会如何快速提取数据的核心。

4.简单解释一下

我们倾向于把使用复杂的句子和大量的术语作为我们智慧的一部分。T2:但是智慧的真正标志是能够把事情解释得更简单。清晰的文字需要更清晰、更简单的思维。我最喜欢爱因斯坦的一句名言是:

“如果你不能简单地解释它,你就不够了解它”

5.用故事。

故事在我们的大脑中根深蒂固,因为它们对生存至关重要。在书面语言出现之前,故事是我们传递信息的唯一方式。

也许我们需要被讲很多遍才能了解事实和数字**故事只需要讲一遍就永远不会被忘记。**你的故事与真实生活事件或真实具体的商业问题联系得越紧密,读者就越容易理解。

“数据和故事的区别在于此:**数据列出了发生的事情;故事表达了事情发生的方式和原因。**数据按数量和频率汇编事实;故事揭示了这些事实背后的因果关系。故事消除不相关,专注于动态变化。

将个人兴趣与数据科学写作结合起来

在帖子中加入你的个人风格。读者喜欢知道文本背后的人是谁,喜欢了解真实人物的经历和更多信息。

6.具体点

美国参议员 S.I. Hayakawa 和语义学专家介绍了抽象的概念阶梯。非常具体的概念在底部,更一般的概念在阶梯的顶部。下面是奶牛贝西的例子:

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

source: http://www.atlas101.ca/pm/concepts/ladder-of-abstraction/

使用一般概念来介绍一个主题,并通过给出具体的例子来解释你所得到的结果,尽可能降低抽象层次。当给出一个非常具体的例子时,大脑工作得最好,然后它可以更容易地理解复杂的主题。

如果你曾经使用过显微镜来观察一只小昆虫的部分,你知道你必须把物镜对准焦点。就像特定信息聚焦大脑一样。

避免使用你的直接判断,而是列出事实。

南 I Hayawaka 在《语言、思想和行动》中对此做了很好的解释:

而不是告诉读者,“这是一个可怕的事故!”我们可以让读者自己说出来。可以说,读者是通过自己得出结论来参与交际行为的。因此,一个有技巧的作家通常是一个特别擅长选择那些肯定会以期望的方式打动读者的事实的人。比起一系列明确的判断,我们更有可能被这样的描述性和事实性的文字所说服,因为作者并没有要求我们相信他所说的事故是“可怕的”。

7.改变段落

网上阅读和书本阅读是不同的。人们不喜欢文字墙。使用不同长度的段落和句子。

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

大声朗读那些句子,你会更好地感受到不同之处。**人类的大脑不断监测环境的变化,变化捕捉,单调扼杀人类的注意力。**改变句子的长度使用短、中、长句,让句子更有音乐感。

8.使用合适的图片和标题

如果你听说过罗伯特·恰尔迪尼关于说服的研究,你可能会对这些图片如何帮助你更有效地传达信息有所启发。

一本在市场营销方面很有影响力的书《劝说前》( pre-suisation)提供了证据,证明我们的行为受到我们在采取行动之前所做或所见的事情的影响。

例如,在 Mandel 和 Johnson 的实验中,当在线家具店的登录页面使用金钱作为背景图像时,访问者更关心价格,但是当登录页面上显示蓬松的云时,他们对舒适度更感兴趣,并购买更昂贵的物品。让你的读者或商业伙伴明白你想要传达的信息。

标题和图片通常是你的潜在读者看到的第一件事。通过使用与你希望他们所处的心态相关的恰当形象或信息来支持你的发现。

如果您的数据科学解决方案是关于降低生产线成本,请使用钱的图像,如果您找到了提高客户满意度的方法,请使用开心的客户照片。

想想你想把你的读者放在什么心情?这里有一段罗伯特·恰尔迪尼的简短视频,他给出了一些关于压力的建议。

9.获得可见性

网络上的噪音是巨大的。做好工作只是一半。你需要让世界知道你创造了什么。

挑战在于如何让你的观众理解。

馆长网站或博客可以提高你的数据科学博客的流量。例如,当我把我的博客提交给 R Bloggers 时,我一天的流量比我过去几周的流量还要多。

其他一些例子有:

显然,medium.com(如果你向数据科学提交会更好)。

Reddit

推特。

加贺

看到最终产品会迫使你更快地完成它。例如,当我第一次使用 R Markdown 创建一篇博客文章,并在本地或使用 medium editor 查看时,我可以比使用 word 文档更快地完成文章。

在大多数语言中,否定词支配肯定词。背后的进化原因很可能是为了保护自己免受危险。

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

当我们看到或听到标题中的负面词汇或限制时,我们会停下来思考更久。这就是为什么当我们看到标题为“最后的机会,还有 3 个小时就可以享受优惠”的邮件时,我们更有可能点击我们的邮箱。

你会学到什么?

写作和做数据科学项目都是为了解决问题。在你的项目中,你正在解决一个业务问题。在你的写作中,你正在解决一个问题,比如如何组织一个混乱或复杂的故事,如何找到相关的材料,以及如何对它们进行排序。

成为一个强有力的沟通者会给你带来新的工作机会、新的伙伴关系和更好的关系。

摘要

如果你写的东西对解决一个问题有价值,或者提供了一些见解,或者以一种有趣的方式解释了一个抽象的概念不要等到它成为历史上最完美的文章。

你电脑里的某些东西对你或这个世界没什么帮助。T4:分享比隐藏更好。如果你这样做了,你可以应用本指南中的一些技巧来提高你的数据科学写作。

不要担心任何错误。我们都是人,我们都从犯错中学习。接受不完美打开了改进之门。

不仅在数据科学中应用这些技巧,而且在任何类型的写作中应用,你都会看到进步。

数据科学写作帮助你获得反馈,激发讨论和改进。

你不一定要成为某个主题的专家才能写它,写它才能成为这方面的专家。

资源:

故事经济学。由罗伯特·麦基,托马斯·杰雷斯等人。

关于写好。威廉·津瑟。(我的字幕来自这本书)

一鸟接一鸟。安妮·拉莫特。

雷·布雷德伯里最伟大的写作建议。lithub.com。

提高写作的 100 种方法。作者加里·普洛斯特

帕金森定律经济学家。伦敦。

为什么 25 个单词的句子长度是我们的极限。英国政府内部

预先劝说:影响和说服的革命性方法,罗伯特·恰尔迪尼博士

影响力:说服的心理学。罗伯特·恰尔迪尼博士

为什么人们会在网上分享?纽约时报。

分享有用的内容是帮助彼此克服噪音和获取相关知识的好方法。最近的一项研究发现,人们会分享更多他们认为有用的内容。

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

谢谢你读到这里。希望你从中有所收获或者有所启发。

下次见!

塞尔达尔·科鲁尔

用摩丁获得更快的熊猫,甚至在你的笔记本电脑上。

原文:https://towardsdatascience.com/get-faster-pandas-with-modin-even-on-your-laptops-b527a2eeda74?source=collection_archive---------3-----------------------

用 Modin 扩展交互式熊猫工作流。

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

Source

通过更改一行代码来扩展您的熊猫工作流程

Pandas 是一个在数据科学领域无需介绍的库。它提供了高性能、易于使用的数据结构和数据分析工具。然而,当处理大量数据时,单核上的 Pandas 变得不够用,人们不得不求助于不同的分布式系统来提高性能。然而,提高性能的代价是陡峭的学习曲线。本质上,用户可能只是希望 Pandas 运行得更快,并不希望为他们特定的硬件设置优化他们的工作流程。这意味着人们希望对 10KB 数据集和 10TB 数据集使用相同的 Pandas 脚本。摩丁提出通过优化熊猫来提供解决方案,以便数据科学家将时间花在从数据中提取价值上,而不是花在提取数据的工具上。

摩丁

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

摩丁 是加州大学伯克利分校rise lab的一个早期项目,旨在促进分布式计算在数据科学中的应用。这是一个多进程数据框架库,具有与 pandas 相同的 API,允许用户加速他们的 Pandas 工作流程。

Modin 在 8 核机器上将 Pandas 查询速度提高了 4 倍,只需要用户在笔记本上修改一行代码。该系统是为现有的 Pandas 用户设计的,他们希望自己的程序运行得更快,规模更大,而不需要进行重大的代码更改。这项工作的最终目标是能够在云环境中使用熊猫。

装置

摩丁是完全开源的,可以在 GitHub 上找到:https://github.com/modin-project/modin

可以从 PyPI 安装 Modin:

pip install modin

对于 Windows,其中一个依赖是射线。Ray 在 Windows 上还没有本地支持,所以为了安装它,需要使用 WSL(Linux 的 Windows 子系统)。

摩丁如何加快执行速度

在笔记本电脑上

考虑一台 4 核现代笔记本电脑,其数据框架非常适合。熊猫只使用一个 CPU 核心,而另一方面,摩丁使用所有的核心。

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

Utilisation of cores in pandas vs modin

基本上,modin 所做的只是提高了 CPU 所有内核的利用率,从而提供了更好的性能。

在大型机器上

在大型机器上,摩丁的用处变得更加明显。让我们假设有一些服务器或一些非常强大的机器。所以熊猫仍然会使用一个核,而摩丁会使用所有的核。下面是read_csv 在 144 核计算机上与熊猫和摩丁的性能对比。

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

source

熊猫有一个很好的线性扩展,但那是因为它仍然只使用一个核心。可能很难看到绿色条,因为它们在摩丁很低。

通常,2gb 大约需要 2 秒,18gb 大约不到 18 秒。

体系结构

让我们来看看摩丁的建筑。

数据帧分割

分区模式沿着列和行进行分区,因为它在支持的列数和行数方面为 Modin 提供了灵活性和可伸缩性。

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

Source

系统结构

摩丁被分成不同的层。:

  • 熊猫 API 暴露在最顶层
  • 下一层包含查询编译器,它从 pandas API 层接收查询并执行某些优化。
  • 最后一层是分区管理器,它负责数据布局和重排、分区,以及序列化发送到每个分区的任务。

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

a general architecture for modin

在 Modin 中实现 pandas API

pandas API 非常庞大,这可能是为什么它有如此广泛的使用案例的原因。

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

pandas API

由于手头有如此多的操作,摩丁采用了数据驱动的方法。这意味着摩丁的创造者观察了人们在熊猫身上通常使用的东西。他们去了 Kaggle,对那里所有的笔记本和脚本进行了大规模的搜集,最终找出了
最受欢迎的熊猫方法,如下所示:

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

pd.read_CSV是熊猫迄今为止使用最多的方法,其次是pd.Dataframe.因此,在摩丁,他们开始按照受欢迎程度的顺序实施和优化一些东西:

  • 目前,摩丁支持大约 71% 的熊猫 API。
  • 根据研究,这代表了约 93%的使用量。

光线

摩丁使用射线提供了一种毫不费力的方式来加速熊猫的笔记本、脚本和库。Ray 是一个高性能分布式执行框架,目标是大规模机器学习和强化学习应用。相同的代码可以在单台机器上运行,以实现高效的多处理,并且可以在集群上用于大型计算。你可以在 GitHub 上找到雷:github.com/ray-project/ray

使用

进口

摩丁包装了熊猫并透明地分发数据和计算,通过一行代码的改变加速了熊猫的工作流程。用户继续使用以前的 pandas 笔记本,同时体验到来自 Modin 的相当大的速度提升,即使是在单台机器上。只需要修改导入语句,其中需要导入modin.pandas 而不是简单的pandas.

import numpy as np
import modin.pandas as pd

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

让我们使用由随机整数组成的 Numpy 构建一个玩具数据集。注意,我们不必在这里指定分区。

ata = np.random.randint(0,100,size = (2**16, 2**4))
df = pd.DataFrame(data)
df = df.add_prefix("Col:")

当我们打印出来的时候,它是一个 Modin dataframe。

type(df)modin.pandas.dataframe.DataFrame

如果我们用 head 命令打印出前 5 行,它会呈现一个 HTML 表,就像 pandas 一样。

df.head()

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

比较

Modin 管理数据的划分和重组,以便用户能够专注于从数据中提取价值。以下代码是在一台 2013 年的 4 核 iMac 上运行的,内存为 32GB。

pd.read_csv

read_csv 是目前为止熊猫用的最多的操作。我们在熊猫 vs 摩丁中使用 read_csv 的时候做一个快速对比。

  • 熊猫
%%timeimport pandas 
pandas_csv_data = pandas.read_csv("../800MB.csv")-----------------------------------------------------------------CPU times: user 26.3 s, sys: 3.14 s, total: 29.4s
Wall time: 29.5 s
  • 摩丁
%%time
modin_csv_data = pd.read_csv("../800MB.csv")-----------------------------------------------------------------CPU times: user 76.7 ms, sys: 5.08 ms, total: 81.8 ms
Wall time: 7.6 s

有了 Modin, **read_csv** 只需更改导入语句即可在 4 核机器上实现高达 4 倍的速度提升

df.groupby

熊猫 groupby 写的特别好,速度特别快。但即便如此,摩丁还是胜过熊猫。

  • 熊猫
%%timeimport pandas_ = pandas_csv_data.groupby(by=pandas_csv_data.col_1).sum()
-----------------------------------------------------------------CPU times: user 5.98 s, sys: 1.77 s, total: 7.75 s
Wall time: 7.74 s
  • 摩丁
%%timeresults = modin_csv_data.groupby(by=modin_csv_data.col_1).sum()
-----------------------------------------------------------------CPU times: user 3.18 s, sys: 42.2 ms, total: 3.23 s
Wall time: 7.3 s

默认为 pandas 实现

如果有人想使用尚未实现或优化的 pandas API,实际上可以默认使用 pandas。这使得该系统可用于使用尚未在 Modin 中实现的操作的笔记本电脑,即使性能会有所下降,因为它现在将使用 pandas API。当默认为熊猫时,您会看到一条警告:

dot_df = df.dot(df.T)

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

一旦计算完成,它返回一个分布式的 Modin 数据帧。

type(dot_df)
-----------------modin.pandas.dataframe.DataFrame

结论

摩丁仍处于早期阶段,似乎是一个非常有前途的大熊猫的补充。Modin 为用户处理所有的分区和洗牌,这样我们就可以专注于我们的工作流程。Modin 的基本目标是使用户能够在小数据和大数据上使用相同的工具,而不必担心改变 API 以适应不同的数据大小。

自从这篇文章发表后,很多人一直问我,就报价而言,摩丁和 Dask 有什么不同。下面是作者的详细对比:

[## 质疑:达斯克和摩丁有什么区别?第 515 期摩丁-项目/摩丁

github.com](https://github.com/modin-project/modin/issues/515#issuecomment-477722019)

参考

https://rise . cs . Berkeley . edu/blog/modin-pandas-on-ray-2018 年 10 月/

熟练掌握降价

原文:https://towardsdatascience.com/get-fluent-in-markdown-da6319f70c9d?source=collection_archive---------30-----------------------

你肯定听说过减价。用过吗?如果没有,就要开始了。现在。它将彻底改变你输入纯文本的方式。

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

Photo by Chris Leggat on Unsplash

Markdown 是一种用于键入纯文本的格式化语法。这是给纯文本添加格式的最简单的方法,比如标题、粗体文本、斜体文本、有序和无序列表、图像、链接、代码段等等。以下是开始在 Markdown 中输入的一些理由

  • 它拥有一个关键特性——使用HTML的能力。像<br><h1>...</h1><p>...</p>等标签可以在 Markdown 中随意使用。
  • 读起来很容易,也很愉快。
  • 到处都是**。它是 Github 上使用的默认标准(非官方)。各种网站都接受减价,包括媒体。用 Markdown 编写的任何内容都可以导出,而不会影响格式。**
  • 它不会很快消失。毕竟,它是纯文本格式,这是不变的。
  • 使用 Markdown,你可以利用文字处理器的能力,不用文字处理器,只用你的键盘。

降价是一件大事。学习有多重要?

Markdown 只不过是使用特殊字符进行格式化。看一看。

标题:

标题的大小由文本前的散列符号(# ) 的数量决定。

# Heading 1:对应最大尺寸。与在HTML中使用<h1>相同。

## Heading 2:对应使用HTML中的<h2>

### Heading 3:对应使用HTML中的<h3>

…以此类推,直到<h6>

段落:

Markdown 自动检测每一个空行的段落。与在HTML中使用<p>相同。

粗体和斜体:

只需将文本括在两个星号(**text**)或两个下划线(__text__)之间,以粗体显示。要倾斜文本,请在文本前后使用单个星号(*text*)或下划线(_text_)。

I **love** _writing_ in __Markdown__.

单词“love”和“Markdown”将以粗体显示。“writing”一词将用斜体表示。

若要合并,请使用三个星号或三个下划线(***text***)或(___text___)。也可以使用两个星号和一个下划线的组合,反之亦然(**_text_**)。

大宗报价:

要对一个段落进行块引用,只需在文本前添加>。相当于在 Medium 中使用 " 选项。

有序列表:

在每个列表项前使用数字后跟句点。这相当于在HTML中使用<ol>...</ol><li>元素。

无序列表:

在每个列表项前使用-+*。添加制表符缩进嵌套列表,包括有序列表和无序列表。

代码:

用反斜杠(text)将代码括起来,以添加内联代码。这相当于在HTML中使用<code>...</code>

这还不是全部!以上足以让你入门。点击查看更多降价语法

降价就是这么简单!只需几个特殊字符,你就可以轻松格式化你的纯文本。记得用扩展名.md保存文件。

任何文本编辑器都支持 Markdown。检查 Typora

注意:本文是使用 Markdown 编写的。

获取用于教学和实验的手绘可视化数据

原文:https://towardsdatascience.com/get-hand-drawn-visualization-shaped-data-for-teaching-and-experimenting-391425fe3171?source=collection_archive---------43-----------------------

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

drawdata.xyz

实验和教学对遵循特定模式/形状/分布的定制/伪造数据的需求并不新鲜。最近我写了一篇关于 {fakir} 的文章,这是一个用于生成虚假数据的 R 包。

更进一步,如果您可以* *** 绘制 **一个可视化并下载该特定可视化的数据,会怎么样?太棒了,对吧?我很想用这样一个!

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

感谢 Vincent D. Warmerdam 创造了 drawdata.xyz 这是我从未见过的美丽事物。

需要吗?

很多时候,当我们教授数据科学中的某些内容时,比如说“正相关”,我们需要展示一个具有正相关数据点的散点图。虽然看起来很简单,但要找到符合模式/形状的数据并不容易。在寻找数据的过程中,许多人对解决他们最初打算解决的问题失去了兴趣。

解决方案— drawdata.xyz

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

Courtesy: drawdata.xyz

正如在上面的动画中演示的那样,drawdata.xyz 是一个免费的服务,它允许您绘制您想要的可视化模式/形状,并下载csvjson可用于这种可视化的数据。

目前 drawdata.xyz 支持以下可视化:

  • 折线图
  • 散点图
  • 柱状图

验证解决方案

我试着用 Python 使用从上面的动画data.csv中下载的数据,看看数据是否真的遵循相似的形状,只是为了验证,下面是我从seaborn中得到的图

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

所以,它起作用了——就像它承诺的那样。

生成自己数据的步骤:

  • 打开 drawdata.xyz ,向下滚动/导航至您喜欢的可视化格式
  • 使用屏幕画布和鼠标指针为所选可视化绘制所需的形状/图案
  • 下载 csv或复制json随心所欲
  • 如果你想尝试不同的图案/形状,重置画布

参考

笔记

  • 上面显示的由创建者(Vincent d . warmer dam)快速生成模式跟踪/成形数据的 drawdata 项目托管在实际的服务器上,这耗费了开发者的经常性成本以及开发和维护时间,因此如果您将它用于任何商业目的或者想要捐赠/鼓励这些努力,请在https://www.buymeacoffee.com/koaning支持开发者。
  • 我与该项目和开发人员都没有关系,这只是我试图编写和展示一个经过深思熟虑的项目,它可以帮助数据科学教学和实验。

参与 SciPy!

原文:https://towardsdatascience.com/get-involved-with-scipy-5daf700c83ad?source=collection_archive---------35-----------------------

SciPy 希望你的想法能帮助它变得更加用户友好

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

Photo by Lum3n.com from Pexels

你听说过 SciPy。

你可能用过。

您可能已经浏览了一些技术文档和用户指南。您甚至可能对文档有自己的看法…

但是你有没有想过实际参与进来,让 SciPy 知道他们如何改进他们的文档?告诉 SciPy 你喜欢什么不喜欢什么?

你认为如何改进文档?

现在你的机会来了!

GIF via GIPHY

什么是 SciPy?

是科学(SciPython(Py)!SciPy 是一个免费的开源 Python 库。它用于科学计算和技术计算。它包含了优化线性代数积分插值特殊函数FFT信号图像处理ODE 解算器等理工科常见任务的模块。

SciPy 使用 NumPy 数组作为基本的数据结构。它有科学编程中各种常用任务的模块。这些任务包括积分(微积分)、常微分方程求解和信号处理。SciPy 构建在 NumPy 数组对象上。这是 NumPy 堆栈的一部分。该堆栈包括像 MatplotlibPandasSymPy 这样的工具,以及一套不断扩展的科学计算库。

你怎么能参与进来?

快速调查一下!

It’s here! https://forms.gle/eK3x2ohJs1sLPJEk8

关于调查

当我在 NumPy 致力于在技术文档中创建一个面向初学者的部分时,Maja Gwózdz 正在 SciPy docs 中努力工作。她正在梳理 SciPy 文档,以创建对您更有帮助的东西。她正在接触整个社区(就是你!)找出你喜欢什么和不喜欢什么,她会喜欢你的投入!

正如 Maja 在她的谷歌文档季提案中所写的:

“我打算对现有文档进行重构,以便具有不同需求的用户可以轻松访问它。不言而喻,研究人员最有可能对高级和微妙的特性感兴趣,而没有专业知识的用户则喜欢一步一步的指南和图表。

出于个人和专业原因,我对这个项目感兴趣:首先,我想为 SciPy 做出重大贡献,因为我自己的研究已经从它那里受益匪浅;其次,我经常在其他软件中遇到文档不足(或缺少文档)的情况,并且总是想知道要快多少(如果是全部的话!)如果向用户提供详尽的指南,他们可以学会如何使用代码。"

[## NumPy、SciPy 和 Google Docs 季,天啊:见见 Maja Gwózdz

在谷歌文档季期间,了解更多关于与 NumPy 和 SciPy 配对的技术作家的信息

towardsdatascience.com](/scipy-meet-maja-gwozdz-61616cc35c08)

Maja 对社区中所有希望被倾听的人进行了调查。这是一个举手参与的绝佳机会!您可以在此处找到该调查,它旨在让您尽可能多地投入时间和精力。

这些问题非常简单,大多数都有简单的选择题答案。您将回答这样的问题:“您使用文档的哪些部分?”以及“应该改进/添加哪些文档特性?”在选择题下面,可以添加自己的评论和建议。

这很快,很容易,而且非常有帮助。如果您使用过 SciPy 和 SciPy 文档,Maja 希望收到您的来信。

花一两分钟大声说出来,让别人听到!

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

Photo by White Gold Photography from Pexels

如果你是数据科学、机器学习和人工智能的新手,你可能想看看 NumPy 的终极初学者指南!

[## NumPy 初学者终极指南

开始使用 NumPy 需要知道的一切

towardsdatascience.com](/the-ultimate-beginners-guide-to-numpy-f5a2f99aef54)

构建竞争对手价格监控仪表板的终极指南

原文:https://towardsdatascience.com/get-rid-of-boring-stuff-using-python-part-2-b84d1e9ea595?source=collection_archive---------11-----------------------

用不到 20 行代码就能完成!

使用 Python 摆脱无聊的东西(第 2 部分)

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

感觉自己的工作充满了重复性的工作?

为什么不开始考虑如何实现自动化呢?

事情是这样的,今天我要介绍一个工具来自动化你枯燥的东西——Python。Python 可能是最容易学习的语言。因为你掌握了 Python 技能,你不仅能提高你的生产力,还能专注于你更感兴趣的工作。

欢迎来到使用 Python 系列摆脱无聊的东西!请随意访问这个链接,你将能够看到这个正在进行的系列中的所有故事。

现在让我们假设你是一名手机销售商,在一个电子商务平台上销售产品。

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

你会有一份竞争对手的名单…

你会想监测你的竞争对手是如何设置他们的价格,以便你可以稍微降低你的价格,以更具竞争力。

另一个场景,假设你在一家电子商务公司做销售,你有一个客户,阿迪达斯。

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

因此,你需要监控阿迪达斯是否在每个电子商务平台上销售相同的价格,如果不是,那么你也可以质疑他们的定价。

价格监控仪表板非常重要,尤其是在电子商务中。当两个卖家在销售同一产品时,价格是顾客是否会选择购买该产品的决定因素。

我们开始吧!

我就用你在亚马逊做卖家的例子,卖华为 P30 Pro 。所以,今天你将建立一个非常简单的仪表板——Google Sheet,来监控你的价格有多有竞争力。

这是我将要分享的议程:

第 1 部分 —输入竞争对手的详细信息。

第 2 部分——获取您的 google sheet 证书文件。

第 3 部分——在竞争对手的网站上进行网页抓取【可视化】

第 4 部分—竞争对手网站上的网页抓取[编码]

跟随整个旅程,你会发现让你无聊的事情自动化并在 5 秒内更新你的价格是多么简单。

第 1 部分—输入竞争对手的详细信息。

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

创建一个 google 表单,输入示例竞争对手的链接。给你的华为 P30 Pro 定个价。

为列 Competitive 定义一个条件格式,规则是如果你的价格比你的竞争对手低,它将是 1,单元格将填充绿色。否则,将其设置为 0 并用红色填充单元格,以提醒您的竞争对手正在设定比您更低的价格。

第 2 部分—获取 google sheet 的凭证文件。

按照这个链接,一步一步地,你将能够以 JSON 格式检索你的证书文件。在 JSON 格式的凭证文件中,您将能够看到您的电子邮件帐户,如下面的紫色框所示。

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

然后,将您的服务帐户的电子邮件共享到您刚刚创建的 google sheet,如下图所示。

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

然后点击发送按钮,就大功告成了!

第 3 部分—竞争对手网站上的网络抓取[可视化]

首先,在 google chrome 中启动竞争对手的网站,右键单击并选择 Inspect,然后您将能够在 Snapshot 1 中查看下面的快照。

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

Snapshot 1

然后,单击顶部中间的紫色括号,您将看到一个光标,然后单击红色括号检查产品价格的 HTML 元素,如下所示(快照 2)。

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

Snapshot 2

接下来,请注意快照 2 中上方的紫色框,这是我们需要提取的路径:

HTML 标记名:span

HTML 标记名属性 : priceblock_ourprice

*如果你不熟悉 HTML, 这个 对于上面的术语会是一个很好的参考。

所以现在让我们从编码部分开始吧!

第 4 部分—竞争对手网站上的网络抓取[编码]

访问谷歌工作表

按照上面的要点连接到 google sheet。

请注意, gc.open_by_key() 的输入如下:11 du 3 qbpoxlbuxj-o _ zerndjdqq 8 pnbmsazpebbfbwyc 0。这实际上是 Google 找到你对应的 google sheet 的唯一标识符。

您可以获得如下所示的唯一标识符(紫色框):

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

Snapshot 3

从谷歌工作表中提取数据

使用 get_all_values() 函数从 sheet_name: Sheet1 的 google 工作表中检索数据。

然后,将该值存储到 pandas 数据框中,如下所示:

df = pd.DataFrame(sht1.worksheet("Sheet1").get_all_values()[1:])

你已经完成了 70%!

网页抓取

记住价格 HTML 标签:

HTML 标签属性 : priceblock_ourprice

所以现在,我们使用美汤解析器来获取你需要的元素。

想象汤的格式如下:

soup.find( HTML 标签,{标签属性:属性值})

在我们的案例中:

HTML 标记名:span

标签属性:id

属性值:价格块 _ 我们的价格

soup = BeautifulSoup(res.text)
price = soup.find("span", 
                 {"id": "priceblock_ourprice"}
                 ).text.replace("$","")

更新谷歌工作表的最新价格

使用 update_acell(cell number,value) 函数将我们刮到的价格插入到 google sheet 中,我们就完成了

sht1.worksheet("Sheet1").update_acell('D3', price)

将上面提到的所有内容与下面的代码结合起来:

最终想法

我目前是一名数据科学家。数据增长真的很快,所以让自己具备良好的搜集技能很重要,因为你将能够为你的机器学习模型获得更多数据。

感谢你阅读这篇文章。欢迎在下面留下你感兴趣的话题的评论。我将在未来发布更多关于我的经历和项目的帖子。

关于作者

Low 魏宏是 Shopee 的数据科学家。他的经验更多地涉及抓取网站,创建数据管道,以及实施机器学习模型来解决业务问题。

他提供爬行服务,能够为你提供你所需要的准确和干净的数据。你可以访问这个网站查看他的作品集,也可以联系他获取抓取服务。

你可以在 LinkedInMedium 上和他联系。

[## 低微红—中等

在媒体上阅读低纬鸿的作品。Shopee 的数据科学家。每天,低伟鸿和其他成千上万的…

medium.com](https://medium.com/@lowweihong?source=post_page---------------------------)

摆脱恐惧,不到五分钟就掌握 Git。

原文:https://towardsdatascience.com/get-rid-of-your-fear-and-conqueror-git-in-less-than-five-minutes-56930c269ffd?source=collection_archive---------19-----------------------

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

为什么我们要写另一个指南?

我们写另一个是因为我们需要帮助自己真正理解 Git 是如何工作的,它能为我们做什么,我们需要稍微更深入的理解。

让我这样说吧,亲爱的读者们,我和我的朋友决定一起在一张纸上画一幅画,作为学校的家庭作业。我们在图书馆见面,复印了两份我们开始做的东西,我们都带了一份回家这是。我们都在图上添加了更多的东西,当我们明天回到学校时,我们剪切并粘贴我们改变的部分,然后影印改变这是合并。如果我们都擦除了同一个区域,必须有人选择使用哪个部分,这就是解决冲突。因为每次有东西改变时都有复印件,如果我不喜欢我所做的,我可以扔掉所有新的,这是重置。如果我们不喜欢我们所做的,那么我们可以烧掉所有新的复印件,这就是恢复。

让我们转到 Git 视角。对于 Git 这样的系统,我会首先在 Git 服务器上创建文件,并添加修改。然后,我提交那些变更到存储库。然后,我的朋友开始拉最新的变化。他添加了一些东西,然后提交给回购。回购说*这个文件是存在的,并且和之前的版本不一样,我们就存成版本 2。*以此类推。Git repo 允许我们进行编辑并保持更改的有序性,所以如果我在某个时候删除了一些东西,我可以说, Git,检查一下之前的点,然后我就可以回去修复我的东西了。

每个提交都有一个所有者,所以我们知道谁做了什么。我可以比较 Beta 版和 Alfa 版,看看有什么变化,更容易发现有什么新的变化。

Git 还允许我创建分支。所以我们在 doc 的第 17 个版本上,但是我想要尝试一些新的东西。我的朋友想继续,所以我创建了一个名为 MiTesoro 的分支,并开始着手于此。这现在是代码的一个单独的路径,而我的朋友继续原来的路径,这通常被认为是*主路径。*所以 Git 基本上允许多人访问通常是代码的中心部分,并对其进行修改,而不会踩到别人的脚趾。

Git 是什么?

Git 是一个成熟的、积极维护的开源项目,最初由 Linux 操作系统内核的著名创建者 Linus Torvalds 于 2005 年开发。数量惊人的软件项目依赖 Git 进行版本控制,包括商业项目和开源项目。使用过 Git 的开发人员在可用的软件开发人才库中有很好的代表性,它可以在各种操作系统和 ide(集成开发环境)上很好地工作。在这个技术介绍之后,让我们跳转来解释几个关于 Git 的词汇。

Git 中的分支是什么?

在 Git 中,有三个感兴趣的分支,本地分支、远程分支和跟踪分支,它们可能都指向不同的提交:

  1. 本地回购中,分行名为。这是我们工作和承诺的地方。这是当地的分公司。它在下图的左下方。
  2. 远程回购中,名为的分支。这是远程分支,位于下图的顶部。我们通常根本看不到它,因为它通常位于另一台计算机上,需要网络操作才能与之交互。
  3. 本地回购中名为起源/主的分支。这是跟踪分支,在图的右下方。我们自己从不修改跟踪分支。它是由 Git 自动为我们维护的。每当 Git 与远程 repo 通信并了解到一些关于远程主分支的部署情况时,它就会更新本地分支或 origin/master 以反映它所了解到的情况。

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

Understanding branching in Git.

Git 有哪些状态?

仔细阅读这篇文章,我亲爱的朋友。如果你想在 Git 中取得好的学习效果,这是关于 Git 要记住的主要事情。Git 有三种主要的文件状态:提交、修改和暂存。提交意味着数据安全地存储在您的本地存储库中,这是 git 提交的最终结果。 Modified 表示您已经更改了文件,但是还没有提交到您的数据库中。 Staged 意味着您已经在当前版本中标记了一个修改过的文件,以进入您的下一个提交快照。这是 git add 的最终结果。

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

Different states of Git.

Git 有哪些领域?

Git 目录是您的本地存储库,是 Git 存储项目的元数据和对象数据库的地方。这是 Git 最重要的部分,当您从另一台计算机上克隆一个存储库时,它就是被复制的内容。

工作目录是项目的一个版本的单次检出。这些文件从 Git 目录下的压缩数据库中取出,放在磁盘上供您使用或修改。

暂存区是一个简单的文件,通常包含在您的 Git 目录中,它存储了关于您下一次提交的内容的信息。它有时被称为索引,但是将它称为临时区域已经成为标准。

基本工作流程是什么?

基本的 Git 工作流程是这样的:

  1. 您可以修改工作目录中的文件。
  2. 您转移文件,将它们的快照添加到您的转移区域。
  3. 您执行一个提交操作,该操作将文件保存在临时区域中,并将快照永久存储到 Git 目录中。

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

Types of areas inside Git.

所以我希望你喜欢我们的文章,因为在接下来的故事中,我们将讨论 Git 的基本操作,以及还原和重置、拉取和获取、合并和重置之间的区别,Git 的不同工作流,以及如何解决合并冲突。

在 Udemy 上查看我们的免费课程。

感谢阅读。如果你喜欢这篇文章,请点击下面的按钮,这样我们就可以保持联系。

摆脱恐惧,不到五分钟就掌握 Git。第二部分

原文:https://towardsdatascience.com/get-rid-of-your-fear-and-conqueror-git-in-less-than-five-minutes-part-2-49b951cdb8d9?source=collection_archive---------23-----------------------

这是一个由七个部分组成的系列,作为理解 Git 分布式版本控制系统基础的指南。好奇 Git 是怎么工作的?本系列的第二篇文章很好地理解了 Git 中使用的基本命令。你可以在这里 阅读 Part One

在这一部分中,我们将深入了解 Git 的基本命令是如何工作的。在这个故事中,我们将有一个美好的旅程,经历 git 配置、git 初始化、git 添加、git 提交、git 克隆、git 远程、git 推送和 git 状态。如果你有几分钟的宝贵时间,并且你想提高自己,坐下来,和我们一起开始阅读和练习吧,我亲爱的朋友。

但是在进入 Git 的命令之前,我们先来看一下如何在 Ubuntu 18.04 上安装 Git。

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

How to install Git.

Git 配置

现在您的系统上已经有了 Git,您需要做一些事情来定制您的 Git 环境。在任何给定的计算机上,您应该只需要做一次这些事情;他们会在升级之间逗留。您也可以通过再次运行这些命令来随时更改它们。

你是谁?

首先要做的是告诉 Git 你是谁,自我介绍,互相认识,因为这是一个漫长的旅程,它是以朋友来衡量的,而不是以英里来衡量的。

$ git config --global user.name "nawter"
$ git config --global user.email [4772025+Nawter@users.noreply.github.com](mailto:4772025+Nawter@users.noreply.github.com)

你的编辑是什么?

现在 Git 知道您是谁了,您可以配置默认的文本编辑器,当 Git 需要您输入消息时,将会使用这个编辑器。如果没有配置,Git 使用系统的默认编辑器。如果您想使用不同的文本编辑器,如 Vim,您可以执行以下操作:

$ git config --global core.editor vim

小心这一步,如果你不这样设置你的编辑器,当 Git 试图启动它时,你会进入一个非常混乱的状态。Windows 系统上的一个例子可能包括在 Git 启动的编辑期间过早终止的 Git 操作。

你的设置是什么?

如果您不确定您的配置设置,您可以使用git config --list a 命令列出 Git 可以找到的所有设置:

$git config --list
user.name=nawter
[user.email=4772025+Nawter@users.noreply.github.com](mailto:user.email=4772025+Nawter@users.noreply.github.com)
credential.helper=cache --timeout=3600
http.postbuffer=1757286400
core.editor=vim

Git 初始化

我们到了这个部分,你的第一个想法是我的下一步是什么,我告诉你应该是git init。你正在编写一点代码来创建将改变世界的新视频游戏,或者你正在摆弄一些治疗癌症的新数据,你认为git init

让我们从创建您自己的项目的方法开始。

  • 创建一个新目录来包含项目。

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

Use of mkdir.

  • 进入新目录。
  • 类型git init

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

git init sample

  • 检查的内容。git 文件夹

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

The content of .git folder

  • 写一些东西,比如一个 README.md 文件,以纯文本或带 Markdown 内容的形式,谈论你的项目,这是一个免费的模板来做这件事。
  • 键入git add添加文件git add README.md
  • 类型git commit -m “my first commit”

让我们先检查一些数据,然后再移动到下一部分。如果我们键入git log,我们可以看到该信息,它指示了头部位置和我们的上次提交。

commit 7182a646f28f83767810ee751d50b9808bd62bf7 (HEAD -> master)
Author: nawter <[4772025+Nawter@users.noreply.github.com](mailto:4772025+Nawter@users.noreply.github.com)>
Date: Sun Apr 14 12:46:05 2019 +0100my first commit

最后但同样重要的是,如果我们再次运行tree .git并亲自检查结果,我们会看到目录和文件的数量有一些变化,从 9 个目录和 15 个文件变成了 15 个目录和 23 个文件。

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

The .git folder after changes.

Git 远程和 Git 推送

什么是远程存储库?

远程 URL 是 Git 对存储代码的地方的别出心裁的说法。那个 URL 可能是你在 Github 上的存储库,或者是另一个用户的分支,甚至是在一个完全不同的服务器上。Git 将一个远程 URL 与一个名称相关联,您的默认远程通常被称为origin

R 远程存储库可以在你的本地机器上。您完全有可能使用一个远程存储库,事实上,它位于您所在的同一台主机上。“远程”一词并不一定意味着储存库在网络或互联网上的某个地方,只是意味着它在某个地方。使用这样的远程存储库仍然会涉及到所有标准的推、拉和取操作,就像使用任何其他远程存储库一样。

如何连接到您的远程存储库?

现在您已经有了一个本地 Git 存储库。如果你愿意,你可以在本地使用 Git。但是如果你想让这个东西在 Github 上有一个家,那么做下面的事情。

  • 转到 Github 网站。
  • 登录您的帐户。
  • 点击右上角的新建存储库按钮。您可以选择用 README.md 文件初始化存储库。
  • 点击创建存储库按钮。

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

Connecting to our remote repository.

现在,遵循第二组指令,其中您可以看到**…或者从命令行推送一个现有的存储库。**

$ git remote add origin https://github.com/Nawter/LearningGit.git
$ git push -u origin master

这是我们将更改推送到终端中的新存储库后的结果。

Counting objects: 3, done.
Writing objects: 100% (3/3), 227 bytes | 227.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To [https://github.com/Nawter/LearningGit.git](https://github.com/Nawter/LearningGit.git)
 * [new branch] master -> master
Branch ‘master’ set up to track remote branch ‘master’ from ‘origin’.

结果显示在我们的网络浏览器中。

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

Result in the Github site.

你能在遥控器里看到什么?

如果你想看到更多关于特定遥控器的信息,你可以使用它们的git remote show <remote>命令。如果您使用一个特定的短名称运行这个命令,比如origin,您会得到如下结果:

$ git remote show origin
* remote origin
  Fetch URL: [https://github.com/Nawter/LearningGit.git](https://github.com/Nawter/LearningGit.git)
  Push  URL: [https://github.com/Nawter/LearningGit.git](https://github.com/Nawter/LearningGit.git)
  HEAD branch: master
  Remote branch:
    master tracked
  Local branch configured for 'git pull':
    master merges with remote master
  Local ref configured for 'git push':
    master pushes to master (up-to-date)

Git 克隆与 Git 初始化

命令git initgit clone很容易混淆。在高层次上,它们都可以用来初始化一个新的 git 库。然而,git clone是依赖于git init的。git clone用于创建一个现有存储库的副本。在内部,git clone首先调用git init创建一个新的存储库,然后调用git remote add ,然后使用git fetch从该 URL 获取所有分支到您的本地存储库,最后使用git checkout.签出一组新的工作文件

Git 状态

在教程的这一部分,我们将使用命令git status探索不同的真实场景

错误的地方

$ git status
fatal: not a git repository (or any of the parent directories): .git

如果我们得到这个错误,我们不在一个有 Git 库的目录中。在我们的终端中使用 cd 命令,或者参考 Git 设置文档来设置您的初始回购。

一切都干净了

$ git status
On branch master
Your branch is up-to-date with 'origin/master'.

nothing to commit, working directory clean

这是理想的 Git 状态消息。*与“源/主”保持同步。*表示没什么可推的。工作目录清理表示当前目录下的所有文件都由 Git 管理,并且文件的最新版本已经提交。

未跟踪的文件

如果git status提到未跟踪文件,我们可能需要添加一个或多个未跟踪文件。

$ git status
On branch masterNo commits yetUntracked files:
  (use "git add <file>..." to include in what will be committed)README.mdnothing added to commit but untracked files present (use "git add" to track)

在这种情况下,我们可能希望添加 README.md。一个好的规则是,如果我们直接用编辑器编辑该文件,该文件就属于它。

承诺还是不承诺

如果您看到消息Changes to commit:…,这意味着我们之前已经运行了git add,但是我们还没有运行git commit

$ git status
On branch masterNo commits yetChanges to be committed:
  (use "git rm --cached <file>..." to unstage)new file:   README.md

通过运行git commit 并附带一条短消息说明我们在文件中所做的更改来修复这个问题。

$ git commit -m "my first commit" 
[master (root-commit) 7182a64] my first commit
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 README.md

在修复提交之后。

$ git status
On branch master
nothing to commit, working tree clean

在 Udemy 上查看我们的免费课程。

感谢阅读。如果你喜欢这篇文章,请点击下面的按钮,这样我们就可以保持联系。

在 Azure Databricks 上开始使用 Apache Spark 和 TensorFlow

原文:https://towardsdatascience.com/get-started-with-apache-spark-and-tensorflow-on-azure-databricks-163eb3fdb8f3?source=collection_archive---------15-----------------------

现在在 Apache Spark framework 上可以使用 TensorFlow,但是如何开始呢?它叫做张量框架

TL;速度三角形定位法(dead reckoning)

这是一个关于如何在 Azure Databricks 上运行新的 Spark TensorFrame 库的分步教程。

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

大数据是一个庞大的主题,包含许多领域和专业知识。一路从 DevOps,数据工程师到数据科学家,AI,机器学习,算法开发者等等。我们都在与海量数据作斗争。当我们处理大量数据时,我们需要最好的头脑和工具。这就是阿帕奇火花张量流神奇 组合发生的地方,我们称之为张量框架

Apache Spark 接管了大数据世界,提供答案并支持数据工程师变得更加成功,而数据科学家则不得不设法绕过 Spark 提供的机器学习库 Spark MLlib 的限制。

但是现在,Apache Spark 用户可以使用 TensorFlow 了。这些工具的结合使数据科学家的工作更高效、更准确、更快速。从研究到开发再到生产,比以往任何时候都要快。

在我们开始之前,让我们先整理一下术语:

  • Tensor Flow 是 Google 创建的用于高性能数值计算的开源机器学习框架。它附带了对 AI 的强大支持:机器学习和深度学习。
  • Azure Databricks 是一个基于 Apache Spark 的分析平台,针对微软 Azure 云服务平台进行了优化。Azure Databricks 还充当软件即服务(SaaS) /大数据即服务(BDaaS)。
  • TensorFrames 是一个 Apache Spark 组件,它使我们能够在 Spark 集群上创建自己的可扩展 TensorFlow 学习算法。

-1-工作区:

首先,我们需要创建工作空间,我们正在使用 Databricks 工作空间,这里有一个教程用于创建它。

-2-集群:

有了工作空间之后,我们需要创建集群本身。让我们使用教程创建我们的 spark 集群,确保您的集群中有以下配置:

  • Apache Spark 的工作版本(2.4 或更高版本)
  • Java 8+
  • (可选)python 2.7+/3.6+如果要使用 python 接口。
  • (可选)python TensorFlow 包(如果要使用 python 接口)。关于如何获得 TensorFlow 的最新版本,请参见官方说明
  • (可选)如果要使用 python 接口,pandas >= 0.19.1

配置:

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

使用 Databricks 运行时版本或更高版本:

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

按 start 启动集群

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

-3-导入库:

Azure Databricks 下,进入常见任务,点击导入库:

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

TensorFrame 可以在 maven 资源库上找到,所以选择 maven 标签。在坐标下,插入您选择的库,现在,它将是:

databricks:tensorframes:0.6.0-s_2.11

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

点击创建按钮。

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

点击安装

你会看到这个:

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

嘣。您的 Databricks 集群上有 TensorFrame。

-4-笔记本:

我们使用笔记本作为我们的代码笔记本,在那里我们可以编写代码并直接在我们的 Spark 集群上运行它。

现在我们有了一个正在运行的集群,让我们运行一个笔记本:

点击新笔记本并选择您喜欢的编程语言(这里我们选择了 Scala)

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

这是 scala 代码在带有 TensorFrames 的笔记本门户上的外观:

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

代码示例来自 D atabricks git 仓库

您也可以在这里查看:

-结尾-

现在一切都已启动并运行,在 Apache Spark 集群中创建自己的使用 TensorFrame 的触发/调度作业。

还有…

既然你已经走到这一步了,请点击鼓掌按钮👏和在 MediumTwitter 上关注我,获取更多关于 Scala、Kotlin、大数据、干净代码和软件工程师挑战的帖子。干杯!

Python 面向对象编程入门:类和实例

原文:https://towardsdatascience.com/get-started-with-object-oriented-programming-in-python-classes-and-instances-2c1849e0b411?source=collection_archive---------20-----------------------

OOP 新手?了解如何用 Python 编写类和创建实例

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

目前有很多关于 Python 面向对象编程的文章。许多数据科学家,包括我自己,发现自己的角色专注于编写功能代码,通常是在小脚本或原型中。我已经做了 3 年的数据科学家(之前做过几年的数据分析师),到目前为止,我几乎没有接触过面向对象编程。

这在数据科学世界中似乎相当普遍——许多数据科学家在行业中工作多年,甚至不需要编写基于面向对象编程概念的代码。

也有相当多的反对实现 OOP 原则的论点。这些通常包括编写具有高维护开销的代码,这变得越来越复杂。

但随着行业的成熟,需要数据科学家编写生产就绪代码,并与工程团队更好地集成。对 OOP 有一些基本的了解,并且能够编写类和方法会非常有帮助。

此外,如果你曾经想为一个开源数据科学项目做贡献,你很可能会处理对象,并且需要一些 OOP 知识!

第一步:用 Python 写你的第一个类

OOP 背后的基本思想是用许多对象来管理简单的任务,所有这些组成了一个复杂的计算机程序。

OOP的起点是理解什么是类。一个广泛使用的关于类的定义是类是“创建对象的蓝图”。 类是数据和方法的逻辑分组(方法类似于函数)。

类通常基于我们在商业世界中发现的对象:客户、产品、员工。

作为一家金融服务公司,我们存储并处理客户信息。我们可以创建一个名为 customer 的简单类:

在 OOP 中,我们有关键字,数据科学家将熟悉功能等同的 def

def 用于定义一个函数(或方法,当它在一个类中的时候),类似的, class 用于定义一个类。

定义 customer 类实际上并没有创建任何客户,我们只是为创建 customer 对象绘制了一个蓝图。

在我们的客户类中,您首先会注意到的是 init 方法。 init 方法是 Python 类中的一个特殊方法,每当构造一个类时都会调用它。

init 是一个类的构造函数

每次你创建一个新的类,你将调用 init 方法,你也将使用 self 参数。

变量代表对象本身的实例。一些 OO 语言会将它作为隐藏参数传递给定义的方法,但是在 Python 中我们需要显式声明它。

自身的参数显式地表示对象的实例**

在我们定义了 init 方法并指定了 self 参数之后,我们列出了将在 init 方法中使用的其他参数/自变量。在这个例子中,这些是第一,最后,移动和每月。

我们现在已经创建了我们的类 customer ,并将继续创建该类的一些实例。

步骤 2:实例和方法

一个 实例 ,在面向对象编程(OOP)中,是任何对象的具体表示。一个 对象 是一个通用的东西,而一个 实例 是已经在内存中创建的单个 对象 。通常情况下,一个 实例 的属性会被赋值,以区别于 对象 类型的其他 实例

创建实例

下面的代码创建了一个名为 cust1 的实例。每次需要存储新的客户信息时,您都会这样做。

*cust1 = Customer('Emilee', 'Smith', '0821231234', 20000)*
  • cust1 是一个实例
  • 顾客是阶级

创建方法

方法类似于函数,除了它们在你的类中。在这个例子中,我们将在我们的客户类中编写一个简单的方法,名为年度。这将简单地获取为客户列出的月薪并计算年薪。

类中的每个方法自动将实例作为第一个参数,这意味着您传递括号中的 self 参数。如果你忽略了 self 参数,那么当你调用它的时候,你会得到一个错误。

要查看我们的年度方法中发生了什么,我们可以简单地打印出来:

*print(cust1.annual())
>> Emilee Smith 240000*

有用的提示:在 Python 中,如果你想调用一个属性,例如 customer 类中的“fullname ”,那么你可以简单地这样做:

*print(cust1.fullname)
>> Emilee Smith*

当你调用一个方法(而不是一个属性)时,你需要像我们调用 annual 时那样使用括号。

您现在已经创建了一个名为 customer、 的新类,一个名为 cust1 的实例和一个名为 annual 的方法。 这些是用 python 编写 OOP 代码的第一批实用的构建块!

如果你打算进一步学习 OOP 编程,你应该仔细阅读 OOP 的四个原则:封装抽象继承多态。这里有一个有用的资源:

* [## 如何向 6 岁的孩子解释面向对象的编程概念

你有没有注意到在求职面试中,同样的老生常谈的问题总是被一遍又一遍地问到?

medium.freecodecamp.org](https://medium.freecodecamp.org/object-oriented-programming-concepts-21bb035f7260)*

所以你想成为一名数据科学家?

原文:https://towardsdatascience.com/get-started-with-python-e50dc8c96589?source=collection_archive---------10-----------------------

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

PYTHON 入门

到底是什么阻止了你?下面是如何开始!

D 数据一直是做出明智且最终正确决策的关键。但是在过去的十年中,数据生成和数据利用率像前所未有的一样飞速增长。这种现象使得数据素养和数据分析成为几乎每个从事定量学科的人的必备技能。让我们面对现实吧,大多数工作正变得越来越量化和复杂。因为毕竟,平凡的日常工作正在被外包给机器,比我们更快更好。

你可能认为你精心磨练的 Excel 技能会让你退休。好吧,我不想打断你:但是如果你的 60 岁生日不在眼前,你很可能弄错了。

你可能会想:

我真的很想学习 Python,但是我甚至不知道从哪里开始!

他们说第一步总是最难的。但是跟着做,我向你保证,在 15 分钟内,你不仅会写出你的第一行代码,而且会在这个过程中学到一些关于快乐的东西!

**提醒一句:**为了简单起见,我将跳过并大大简化主题。然而,我们的目标不是让你成为一名成熟的程序员——至少现在还不是——而是让你继续前进!

1.设置 Anaconda

A naconda 是针对科学计算 ( 数据科学机器学习应用程序、预测分析等的 PythonR 编程语言的免费开源发行版。),旨在简化包管理和部署。包版本由包管理系统 康达 管理。超过 1500 万用户使用 Anaconda 发行版,它包含了超过 1500 个适用于 Windows、Linux 和 MacOS 的流行数据科学包

一种非常冗长的说法是:“Anaconda 安装 Python 和几乎所有它的基本包。”

我将带您在 Windows/Mac 上安装 Anaconda,但是它非常简单,甚至不需要截屏。然而,他们提出了一个观点。设置 Anaconda 又快又简单!

窗口:

所以我把生锈的(大约 10 年前的笔记本电脑)重新装上了最新的 Anaconda 版本。咔嚓,咔嚓,咔嚓,搞定!好吧,第六步花了 10 分钟左右,但这都怪我的笔记本电脑。安装对你来说无疑会更快。继续下载 Anaconda 这里(获取 3.7 版本)!这里没什么可怕的。

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

Installation of Anaconda on Windows

Mac:

我卸载了 Anaconda,在这里下载了最新版本(获得 3.7 版本)重新安装。没有任何打嗝,整个过程花了大约 2 分钟。

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

Installation of Anaconda on Mac

Unix/Linux:

你在这里做什么?导航您的操作系统比 Anaconda 要复杂得多!

2.开始你的第一个笔记本

安装 Anaconda 之后,打开 Anaconda Navigator。你就快到了!

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

Anaconda Navigator

点击笔记本(左上第二个)。将打开一个新的浏览器选项卡,如下所示:

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

Hit the “New” button and select Python 3

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

Congratulations, you have created your first Jupyter Notebook.

3.开始编码

进口

我们将从进口开始。将以下内容输入您的笔记本。

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

Imports in the notebook

导入告诉笔记本我们还需要什么模块(特性集合)。Pandas是数据操作,numpy是科学计算,datetime是日期时间相关的功能,matplotlibseaborn是绘图。as XYZ部分为模块定义了一个简短的名称(这样我们就可以通过键入 pd 来引用模块,而不是熊猫)。

现在,通过单击运行按钮或 shift+return 来运行单元。

嘭!你可能会想,这是一个好的开始。

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

我是故意这么做的,因为错误确实是一件好事,你应该对它们感到舒服。真正阅读和理解错误以有意义的方式解决它们是非常重要的。太多时候,人们在面对错误时会失去理智,尝试随机的事情,直到成功或沮丧地放弃。
例如,这个ModuleNotFoundError非常清楚地告诉我们没有名为 seaborn 的模块。尤普,这个我们能解决。似乎 Anaconda 没有提供这个模块。让我们通过跑步来纠正这一点

!pip install seaborn

在新的牢房里。然后重新运行导入单元格。

精彩!

**注意:**每当我写“在你的笔记本中运行一个命令”,这意味着你应该创建一个新的单元格,在那里键入命令并运行该单元格。

获取一些数据。它毕竟被称为数据科学

我们来看看《2019 世界幸福报告》中的一些数据。我通过抓取维基百科的一个页面,将各大洲添加到数据中。我还在下载中包含了抓取的代码,但是我将把弄清楚它是如何工作的(只有 15 行代码)留给好奇的读者作为练习。
一个 GitHub Repo 保存数据和代码。如果不熟悉 GitHub,还可以从这个 链接 **下载一个打包的 zip 文件!**解压文件并将内容(尤其是happiness_with_continent.csv)移动到 Jupyter 笔记本所在的文件夹中!

加载数据(在笔记本上运行以下内容):

data = pd.read_csv('happiness_with_continent.csv')

检查数据(在笔记本上运行以下内容):

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

data.head(x) previews the first x rows of the data

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

data.tail(x) previews the last x rows of the data

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

data.sample(x) previews x randomly selected rows of the data

爽!我们来做一些分析:

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

我们在这里做了几件事:

  1. 蓝色:groupby为提供的列创建多个组。例如,在这里,我们查看数据集中的每个年份/洲的组合。如果您来自 Excel,请将其视为数据透视表中的行。
  2. 紫色:我们选择感兴趣的列,在我们的例子中就是Life Ladder。如果您来自 Excel,请将其视为数据透视表中的列。
  3. Green:这里,我们应用了mean函数。还有其他功能,像maxminsumcount等等。在某些情况下,您还可以定义自己的自定义函数。如果您来自 Excel,请将其视为数据透视表中的值。
  4. Orange: reset_index按照它说的做,它重置索引,这意味着它展平表格并删除组。

从上一节中您已经知道了sample是做什么的。为了简单起见,我们将整个表达式的结果赋给一个名为grouped_by_year_and_continent的新变量,用于我们随后的绘图。

将数据可视化

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

运行以下代码以生成可视化效果:

Create a neatly looking line chart with seaborn

很酷吧。我想你可能通过阅读代码就能知道这里发生了什么。我喜欢 Python 的简单性!

好吧,但是如果没有一些直方图就不是数据科学了。所以让我们创造一些。我很想更好地理解一个大陆内部的变化。现在让我们按洲名和国名对数据进行分组,并取一段时间内的平均值。根据我们之前所做的,这对您来说应该不陌生。

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

现在让我们使用这些数据来绘制一些直方图:

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

干得好!为自己感到骄傲。你迈出了第一步!

今天到此为止。如果你想多练习一些,看看我的其他文章。

[## 用 Python 从各种工作表中提取数据

或者如何学习统一 Google 工作表、Excel 和 CSV 文件——代码指南

towardsdatascience.com](/replacing-sheets-with-python-f1608e58d2ca) [## 如何使用 Python 浏览和可视化数据集

或者如何学习用 Python——一个代码向导——创建漂亮而有洞察力的图表

towardsdatascience.com](/how-to-explore-and-visualize-a-dataset-with-python-7da5024900ef) [## 使用 Python 进行队列分析

或者如何可视化您的客户保持——代码指南

medium.com](https://medium.com/better-programming/cohort-analysis-with-python-e81d9d740a9b)

强化学习和 Python 入门:如何自动化仓库机器人

原文:https://towardsdatascience.com/get-started-with-reinforcement-learning-and-python-how-to-automatize-a-warehouse-robot-4f996bede325?source=collection_archive---------12-----------------------

在本教程中,我将向您展示如何使用强化学习来自动化自主仓库机器人,以找到不同位置之间的最佳路径。

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

Photo by Pixabay on Pexels.com

介绍

机器人技术的应用在每个商业领域都在不断扩大。自动化处理重复性任务,旨在消除人工输入,以优化流程和削减成本。

2012 年,亚马逊收购了开发仓库机器人和相关技术的公司 Kiva Systems,Kiva 以 7.75 亿美元被收购。此外,许多其他公司,如阿里巴巴、大众汽车或 Geek+ 不断实现机器人和相关技术。

对于初学者来说,开始这样的话题可能是一场斗争,这就是为什么我认为把事情放到背景中,然后开始深入细节是重要的。

范围

本指南的范围是关于强化学习如何在仓库自动化中使用的 Python 实用实践教程,例如亚马逊等公司。我邀请你打开你最喜欢的编辑器( Jupyter NotebookSpyder 等等……),跟着一起编码。以防你拿不到我的 Google Colab 笔记本。

让我们开始:

在本指南中,我将模拟自主仓库机器人需要采取的行动,以便以最佳方式收集交付的产品,同时考虑机器人的位置、中间位置和最终位置。

此模拟中使用的仓库由不同的 12 个点组成,其形状如下:

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

该系统需要实时排列在这 12 个位置收集产品的优先级。例如,在特定时间t,系统将返回以下排名:

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

在这个例子中,位置 G 具有最高优先级,机器人必须以系统计算的最短路线移动到这个位置。

此外,位置KL位于前 3 个优先级中,因此系统将通过在到达其最终最高优先级位置之前“步行”到一些中间位置来计算最短路线。

为了在 Python 中实现这一逻辑,有必要通过定义以下 3 个元素来将这一任务置于上下文环境中:

  • 美国
  • 动作
  • 奖励

状态是机器人在每个时间t可以处于的位置:

动作是机器人从一个位置移动到另一个位置时可能做的动作:

当然,当机器人在一个特定的位置时,有些动作它不能执行。这在模拟中通过奖励的矩阵以及通过对其不能执行的动作给予奖励 0 来指定。

奖励矩阵由状态和动作矩阵组成,0 代表机器人在该状态下不能执行的动作,1 代表机器人可以执行的动作。

A位置开始,根据仓库地图,机器人只能去A位置,而在B位置则有可能移动到ACF位置。

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

该系统采用奖励矩阵,并向最高优先级位置分配高奖励,返回该位置的最佳路径,该系统基于马尔可夫决策过程,该过程可表示为以下元组:

(S, A, T, R)

其中:

  • S是状态的集合
  • A可以进行的动作集合
  • T定义在时间 t 处于状态 s 的动作 a 将导致在时间t +1 处于状态 s’的概率的转移规则
  • R由于动作A,从状态 s 转换到状态`s``后接收到的奖励函数

系统包含一个策略函数,它给定一个状态S(t)返回动作A(t)

用π表示所有可能的策略动作的集合产生了最优化问题,其中最优策略π∫最大化累积奖励。

每一对动作(s, a)都关联有一个数值,记为Q-value;在t=0 处,当在时间t和状态s(t)处正在进行随机动作时,所有 Q 值被初始化为 0,其带来状态s(t) + 1和奖励R(s(t), a(t))

这个被称为 Q-Learning 的整个算法可以总结如下:

对于所有状态对s和动作对a,Q 值被初始化为 0。

初始状态是s(0),然后,执行一个随机的可能动作,并到达第一状态s(1)

对于每一个t1,直到某个数字(在本案例研究中为 1000 次),重复以下步骤:

这可以应用到我们的例子中,让我们看看到底发生了什么:

从可能的 12 种状态中选择一种随机状态s(t)

  • 播放导致下一个可能状态的随机动作a(t)
  • 到达下一个状态s(t) + 1,并且产生奖励R(s(t), a(t))
  • 时间差TD(t)(s(t); a(t)):计算如下:

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

  • Q 值通过应用贝尔曼公式进行更新:

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

实施:

在这一部分中,正在实施 Q-learning 过程以创建位置G的奖励矩阵。

虽然之前已经定义了动作位置-状态,但是现在有必要定义奖励矩阵和参数γ和α:

gamma = 0.75

alpha = 0.9

由于位置G具有最高优先级,因此可以如下定义奖励矩阵,给予位置G较高的奖励:

q 值由零矩阵初始化:

Q = np.array(np.zeroes([12, 12]))

然后实施 Q 学习过程,for 循环迭代 1000 次,重复 1000 次算法步骤:

位置 G 的 Q 值由算法计算,并且可以将它们可视化:

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

You can change the background color in a pandas dataframe by doing: df.style.background_gradient()

从图中可以看出,位置G的 Q 值最高,而远离G的位置 Q 值较低。

下一步是计算一个函数,该函数能够返回任意位置的最佳路线,而不仅仅是“硬编码”的G位置。

首先,有必要像之前在location_to_state中所做的那样,将每个状态映射到位置:

此时,要计算返回任意位置最佳路径的函数,需要重新定义R矩阵,删除硬编码的奖励:

现在,让我们将计算理想路线的逻辑封装到一个函数中:

以起始位置和结束位置作为参数调用此函数将返回所需的路径:

route("E", "G")

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

现在可以创建一个额外的函数best_route(),它将起始、中间和结束位置作为输入,它将调用route()函数两次,第一次在起始和中间位置之间,第二次在中间到结束位置之间:

best_route("E", "K", "G")

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

参考

进一步阅读

另外我想推荐一下这篇文章作者 neptune.ai : 最佳强化学习教程、范例、项目、课程

在他们的博客中,他们收集了一系列不同的资源来进一步激发你的兴趣,并开始强化学习!

**I have a newsletter 📩.** Every week I’ll send you a brief findings of articles, links, tutorials, and cool things that caught my attention. If tis sounds cool to you subscribe. *That means* ***a lot*** *for me.*

[## 米尔斯形式

编辑描述

无情-创造者-2481.ck.page](https://relentless-creator-2481.ck.page/68d9def351)

开始使用 TensorFlow 2.0 和线性回归

原文:https://towardsdatascience.com/get-started-with-tensorflow-2-0-and-linear-regression-29b5dbd65977?source=collection_archive---------3-----------------------

🤖深度学习

使用新的 TF 2.0 APIs 的线性回归模型

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

Photo by Joshua Earle on Unsplash

TensorFlow 2.0 是 TensorFlow 家族的重大突破。这是全新的和翻新的,也不那么令人毛骨悚然!我们将在 TensorFlow 2.0 中创建一个简单的线性回归模型来探索一些新的变化。所以,打开你的代码编辑器,让我们开始吧!

此外,打开本笔记本进行互动学习体验。

注意!TensorFlow 2.0 现已在稳定频道上线!

要查看一些基本概念及其更简单的解释,请参见,

让我们先从数学开始。

First impressions for Calculus

我们首先会得到一些关于线性回归的信息。在线性回归中,我们倾向于为您的数据找到最佳拟合线。

该线可在其斜率截距表中定义为:

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

The hypothesis function

mc 分别是斜率和 y 截距。其中 Wb 分别是 2ⁿᵈ方程的权重和偏差。

为了优化我们的参数 w 和 b,我们需要一个损失函数。这就是均方误差(L1 / MSE ) 出现的原因。

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

Mean Squared Error

其中 N 是批次/数据集中的样本数, y 是预测结果,而 y⁻ ( y-hat ) 是目标结果。

此外,我们需要均方误差函数的导数,如下所示:

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

The derivative of the Mean Squared Error function

其中 N 是批次/数据集中的样本数,y 是预测结果,而 y⁻ ( y-hat ) 是目标结果。

现在,进入梯度下降,通过它我们将更新我们的参数θ。

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

Gradient Descent update rule

其中 θ 是我们的参数, α 是学习率或步长,损失是我们的损失函数。

我们通过获得 w 和 b 相对于损失函数(MSE)的偏导数来优化 w 和 b。

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

Partial derivatives w.r.t loss function

其中 wb 是优化的参数, h 是假设函数, loss 是损失函数,*MSE’*是均方误差损失函数的导数。

钻研代码。获取一些数据!

TensorFlow 2.0!

我们将使用 Kaggle.com 大学研究生招生的数据。它包含 6 个连续特征和 1 个二元特征,总共有 7 个特征。标签或预期结果是学生的入学机会。这是我们的目标变量。

我们将下载数据集并将其解析成我们真正喜欢的东西——训练和验证数据集!

在 TF 2.0 中创建模型

我们使用 TensorFlow 的低级 API 定义了 3 种方法,用于:

  1. 均方误差函数
  2. 均方误差函数的导数
  3. 假设函数/回归函数

我们之前在原始数学中讨论过。

然后,我们初始化一些用于训练的超参数,并创建[tf.data.Dataset](https://www.tensorflow.org/versions/r2.0/api_docs/python/tf/data/Dataset)对象来高效地存储和批处理我们的数据。

注意到一个 TF 2.0 的变化?对于 TF 1.x 的早期版本,我们使用了tf.data.Dataset.make_one_shot_iterator()方法来创建迭代器。这已经改变了,现在我们用[tf.data.Dataset.__iter__()](https://www.tensorflow.org/versions/r2.0/api_docs/python/tf/data/Dataset#__iter__)

最后,我们用batch_size批量来训练num_epochs时期的模型,这使得num_samples/batch_size步长

变化:我们不需要通过一个tf.Session()对象运行 ops 和 tensors。TensorFlow 2.0 默认启用急切执行。为了得到一个tf.Tensor的值,我们只使用了tf.Tensor.numpy()方法。

此外,我们可以使用matplotlib.pyplt得到历元损失图,

import matplotlib.pyplot as pltplt.plot( epochs_plot , loss_plot ) 
plt.show()

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

现在为了评估我们模型的准确性,我们测量了平均绝对误差。

变化:tf.metrics现在返回一个 op(运算)而不是张量。不过那很好!

等等,还有呢!

仅此而已。

ope 这是对 TensorFlow 2.0 和线性回归的一个很好的介绍。谢谢大家,机器学习快乐!

开始使用 CNN+LSTM 进行预测

原文:https://towardsdatascience.com/get-started-with-using-cnn-lstm-for-forecasting-6f0f4dde5826?source=collection_archive---------5-----------------------

当您的数据粒度较低且具有循环本地模式时,应该考虑这种方法

预测趋势是一门古老的学科,但它从未失宠。无论是金融市场的股价、电力或能源消耗,还是企业规划的销售预测,一系列基于时间的数据点都可以成为世界在任何给定时刻如何思考的表征,这一直让我着迷。提前预见和反应的能力是在生活的许多方面取得成功的重要因素。

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

Photo from Unsplash

当数据具有明显的趋势性、季节性或自相关性时,时间序列模型非常有效。然而,现实世界的情况要复杂得多,受到多种因素的影响,包括经济现象、媒体效应、竞争对手的行为,甚至短期波动。这些因素在预测达到小时或分钟等粒度级别时尤为明显。LSTM(长短期记忆)是一种递归神经网络结构,已被用于时间序列预测。我一直在使用有状态 LSTM 进行我的自动实时预测,因为我需要模型在批次之间转移状态。最近,我发现在 LSTM 层上添加卷积层来捕捉本地的时间模式在某些情况下非常有用。在这篇文章中,我将用一个简单的例子来演示这个架构。我也强烈推荐 Jason Brownlee 的博文《时间序列的深度学习》。这个系列我个人受益匪浅。

  1. 数据

在这个演示中,我使用了来自 UCI 机器学习知识库的个人家庭电力消耗数据。我花了几个小时重新采集数据。在这篇文章中,我将重点放在全局活跃功率属性上,忽略其他变量。数据如下所示:

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

2。问题陈述

在这个问题中,我想使用前一天的 24 小时功耗来生成第二天的 24 小时数。数据是从 2006/12 年到 2010/12 年。我用前两年的数据作为训练,后两年的数据作为验证。所以本质上这是一个序列到序列的预测问题。

3。模型架构

我使用了一个 1D 卷积层,然后是一个最大池层,输出是平坦的,然后馈入 LSTM 层。该模型有两个隐藏的 LSTM 图层,后跟一个密集图层来提供输出。

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

CNN-LSTM structure

首先对数据进行整形和缩放,以符合 Keras 序列模型的三维输入要求。对于简单的单变量模型,输入形状将是具有 1 个特征的 24 个时间步长。在卷积层中,我没有进一步将序列分成多个子序列,而是将时间步长保持为 24。我选择内核大小为 3。致密层有 24 个神经元产生 24 个输出数。下面是详细的模型总结。

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

如您所见,我使用的批量输入大小为 24。这是因为,在这个问题中,这也是许多现实世界情况的情况,我想每天预测。批量大小的数目需要能被 24 整除。最后,我拟合了 20 个时期的模型,并输出损失。我用了均方误差损失函数和 Adam 优化(自适应矩估计)。

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

4。最终想法

你是否应该使用 RNN 或 CNN 或混合模型进行时间序列预测,这实际上取决于数据和你试图解决的问题。我会选择一个简单的模型,如果它符合目的并且不会有过度拟合的风险。这个例子旨在提供一个使用 CNN-LSTM 结构的简单指南。我相信这个特殊的数据可以用多元 LSTM 模型更好地拟合。

参考资料:

  1. https://machine learning mastery . com/how-to-develop-lstm-models-for-time-series-forecasting/
  2. https://www . business-science . io/business/2018/12/04/time-series-forecasting . html
  3. https://stack overflow . com/questions/51344610/how-to-setup-1d-convolution-and-lstm-in-keras
  4. https://jeddy 92 . github . io/jeddy 92 . github . io/ts _ seq 2 seq _ conv/
  5. https://github . com/amirrezaeian/Individual-household-electric-power-consumption-Data-Set-/blob/master/Data _ e _ power . ipynb

获取人工智能的 DL

原文:https://towardsdatascience.com/get-the-dl-on-ai-fda4d9b2fbeb?source=collection_archive---------33-----------------------

人工智能入门

以下是你需要了解的人工智能

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

Photo by Perfecto Capucine on Unsplash

你可能听说过人工智能(AI)、机器学习(ML)、深度学习(DL)、卷积神经网络(CNN)这些缩写词…现在,你希望了解更多,并理解为什么这些术语会在每个会议、每个新闻报道、每个播客中出现。下面是 AI 上的 3*(ish)*-分钟下载。

什么是人工智能?

受自然自身智能的启发,人工智能模仿认知行为,如学习和解决问题。

它由通过约束实现的算法组成,由支持以思考、感知和行动为目标的模型的表示公开。

呼!那是一口。让我们把这句话分解一下:

由算法组成— 在构建 AI 时,我们构建人工神经网络。这些受生物学启发的神经网络是一种构建算法的方法,这些算法能够学习并独立地找到数据中的联系。按照经典编程,每个神经元都有一组输入和输出值。

由约束启用,由表示公开 —在构建神经网络时,我们有激活和损失函数,允许我们调整和执行计算,以找到数据中的联系。激活函数计算其输入的加权和,加上偏差,然后决定它是否应该被激发,类似于人脑激发神经元的方式。另一方面,损失函数或误差函数是预测模型在预期结果方面做得有多好的度量。

支持以思维、感知和行动为目标的模型— 这些激活和损失函数的目标是更快地训练、减少过拟合和做出更好的预测。

这使得我们的系统和设备能够基于思考和感知做出数据驱动的行动。

人工、机器、深度学习

在这些术语的含义和差异之间存在很大的误解。深度学习(DL)是机器学习(ML)的一个子领域,机器学习(ML)是人工智能(AI)的一个子领域。总的来说:

人工智能融合了认知功能,比如学习和解决问题。这是一个可以思考、感知并从思考和感知中得出行动的系统。

机器学习涉及的算法可以改善你输入的数据越多,它随着时间的推移获得的上下文感知就越多。

机器学习模型旨在最小化预测和预期结果或基本事实值之间的损失或误差。

这些模型通过反复试验得到优化,直到您得到想要的结果。最大似然模型的好坏取决于它们被训练的数据集。因此,这些模型仅限于具有大量可用于训练的数据的问题。

*深度学习,*机器学习的一个子领域,涉及神经网络中的多个深层节点,这些节点增强了我们的预测模型,并克服了 ML 的缺点。

这些层自己直接从原始数据的隐式表示中学习。

它执行所谓的特征提取,即提取输入的属性,并基于这些特征对训练数据进行排序。例如,如果我正在创建一个系统来识别一个对象是否是哺乳动物,它可能会提取一些属性,如温血动物和处于生命周期某个阶段的毛发。因此,DL 克服了 ML 的一些限制,因为它的过程更复杂。

TL;博士

人工智能由通过约束实现的算法组成,通过支持以思维、感知和行动为目标的模型的表示来公开。深度学习是机器学习的一个子领域,机器学习是 AI 的一个子领域。

让你的电脑为机器学习做好准备:如何使用 Anaconda,Miniconda 和 conda,为什么要使用它们

原文:https://towardsdatascience.com/get-your-computer-ready-for-machine-learning-how-what-and-why-you-should-use-anaconda-miniconda-d213444f36d6?source=collection_archive---------2-----------------------

蟒蛇?我们在玩什么?蛇和梯子?不。我们正在为机器学习准备我们的电脑。

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

This big bad beast is what we’re going to cover in this article. Check the full interactive version here.

本文将介绍什么是 Anaconda,什么是 Minconda,什么是 conda,如果您是数据科学家或机器学习工程师,为什么应该了解它们,以及如何使用它们。

您的计算机能够运行许多不同的程序和应用程序。然而,当你想创建或编写自己的程序时,比如构建一个机器学习项目,以正确的方式设置你的计算机是很重要的。

假设您想使用一组患者记录来尝试预测谁有心脏病或没有心脏病。你需要一些工具来做这件事。

一个用于探索数据,另一个用于建立预测模型,一个用于制作图表以向他人展示您的发现,还有一个用于进行实验并将所有其他数据放在一起。

如果你在想,我甚至不知道从哪里开始,不要担心,你不是一个人。很多人都有这个问题。幸运的是,这就是 Anaconda、Miniconda 和 conda 的用武之地。

Anaconda、Miniconda 和 conda 是帮助您管理其他工具的工具。我们将很快讨论每一个的细节。让我们从它们为什么重要开始。

为什么 Anaconda,Miniconda,conda 很重要?

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

Anaconda, Miniconda and Conda help to create a shareable environment where you can conduct experiments so your colleague (or your future self) can reproduce them later.

很多机器学习和数据科学都是实验性的。你尝试了一些东西,但没有成功,然后你继续尝试其他的东西,直到有些东西成功了或者根本没有成功。

如果你自己在做这些实验,并且最终找到了有效的方法,你可能会希望能够再做一次。

如果你想分享你的作品,也是一样。无论是与同事、团队还是通过由机器学习系统支持的应用程序与世界交流。

Anaconda、Miniconda 和 conda 为您提供了共享您的实验所基于的基础的能力。

Anaconda、Miniconda 和 conda 确保如果其他人想要复制你的作品,他们会拥有和你一样的工具。

因此,无论你是独自工作,破解机器学习问题,还是与数据科学家团队合作,在互联网规模的数据集上寻找见解,Anaconda、Miniconda 和 conda 都为始终一致的体验提供了基础设施。

什么是蟒蛇,迷你蟒蛇,康达?

Anaconda 和 Miniconda 是软件发行版。Anaconda 提供了超过 150 个数据科学包,所有你能想到的都有,而 Miniconda 只提供了一小部分你需要的东西。

包是别人编写的一段代码,它可以运行,通常有特定的用途。您可以将包视为一种工具,用于您自己的项目。

包是有帮助的,因为没有它们,你将不得不写更多的代码来完成你需要做的事情。由于许多人都有类似的问题,你经常会发现一群人编写代码来帮助解决他们的问题,并将其作为一个包发布。

康达是一名包装经理。它通过处理安装、更新和删除来帮助你管理不同的包。

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

Anaconda contains all of the most common packages (tools) a data scientist needs and can be considered the hardware store of data science tools. Miniconda is more like a workbench, you can customise it with the tools you want. Conda is the assistant underlying Anaconda and Miniconda. It helps you order new tools and organise them when you need.

不止这些。还有 Pip,Pipenv 和其他人。但我们将重点放在蟒蛇,迷你康达和康达。它们足够让你开始了。

  • Anaconda 可以想到数据科学家五金店。它有你需要的一切。从探索数据集的工具,到为数据集建模的工具,再到将你的发现可视化的工具。每个人都可以访问五金店和里面的所有工具。
  • Miniconda 是数据科学家的工作台。每个工作台都是从最基本的必需品开始清洁的。但是随着项目的增长,工作台上的工具数量也在增长。它们被使用,被改变,被交换。每个工作台都可以按照数据科学家的意愿进行定制。一个数据科学家工作台可能与另一个完全不同,即使他们在同一个团队。
  • Conda 帮助整理所有这些工具。尽管 Anaconda 提供了许多现成的,但有时它们需要更改。康达就像盘点所有工具的助理。Miniconda 也是如此。

工具或软件包集合的另一个术语是环境。五金店是一个环境,每个单独的工作台是一个环境。

例如,如果您正在处理一个机器学习问题,并使用您环境中的工具(工作台)找到了一些见解,一位队友可能会要求您与他们共享您的环境,以便他们可以复制您的结果并为项目做出贡献。

应该使用 Anaconda 还是 Miniconda?

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

Downloading and installing Anaconda is the fastest way to get started with any data science or machine learning project. However, if you don’t have the disk space for all of what comes with Anaconda (a lot, including things you probably won’t use), you might want to consider Miniconda. See the full-size interactive version of this image here.

使用 Anaconda:

  • 如果你在寻找一种适合所有人的方法,这种方法对于大多数项目来说都是现成的,那么在你的电脑上要有 3 GB 的空间。

使用 Miniconda:

  • 如果您的计算机上没有 3 GB 的空间,并且希望设置只包含您需要的空间。

开始使用 Anaconda 或 Miniconda 时,您主要考虑的是计算机上的空间。

如果您选择了蟒蛇,请遵循蟒蛇的步骤。如果您选择了 Miniconda,请按照 Miniconda 的步骤操作。

**Note:** Both Anaconda and Miniconda come with Conda. And because Conda is a package manager, what you can accomplish with Anaconda, you can do with Miniconda. In other words, the steps in the Miniconda section (creating a custom environment with Conda) will work after you’ve gone through the Anaconda section.

使用 Anaconda 快速启动并运行数据科学项目

您可以将 Anaconda 视为数据科学工具的硬件商店。

把它下载到你的电脑上,它会带着你做很多数据科学或机器学习工作所需的工具(包)。如果它没有你需要的套餐,就像五金店一样,你可以订进来(下载)。

好消息是,遵循这些步骤并安装 Anaconda 也将安装 conda。

**Note:** These steps are for macOS (since that's my computer). If you're not using macOS, the concepts will be relevant but the code an images a little different.If you're on Windows, check out [this guide by Anaconda](https://docs.anaconda.com/anaconda/install/windows/).

**1。**进入蟒蛇分发页面

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

What you’ll find on the Anaconda distribution page. Choose the right distribution for your machine.

**2。**为您的计算机下载合适的 Anaconda 发行版(需要一段时间,取决于您的网速)。除非您有特定的原因,否则最好下载每个版本的最新版本(最高编号)。

在我的例子中,我下载了 macOS Python 3.7 64 位图形安装程序。命令行和图形安装程序的区别在于,一个使用你能看到的应用程序,另一个需要你写代码行。为了简单起见,我们使用图形安装程序。

**3。**下载完成后,双击下载文件以完成设置步骤,一切保持默认。这将在您的计算机上安装 Anaconda。这可能需要几分钟的时间,并且您需要多达 3 GB 的可用空间。

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

What the installer looks like on my computer (macOS). I’m installing it on my user account.

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

Once the installation is complete, you can close this window and remove the Anaconda installer.

4。若要检查安装,如果您在 Mac 上,请打开“终端”,如果您在另一台电脑上,请打开命令行。

如果成功,您会看到(base)出现在您的名字旁边。这意味着我们在base环境中,想象这是在五金店的地板上。

要查看你刚刚安装的所有工具(包),输入代码conda list并按回车键。别担心,你不会弄坏任何东西的。

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

Opening Terminal on a Mac and typing conda list and hitting enter will return all of the packages (data science tools) Anaconda installed on our computer. There should be a lot.

您应该看到的是四列。名称、版本、内部版本和频道。

名称是包的名称。记住,包是别人写的代码的集合。

版本是这个包的版本号,而版本是这个包的 Python 版本。现在,我们不会担心这些,但是你应该知道一些项目需要特定的版本和内部版本号。

通道是包来自的 Anaconda 通道,没有通道意味着默认通道。

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

The output of the conda list command. This show the name, version, build and channel of all the packages Anaconda installed.

5。你也可以通过在命令行输入python并按回车键来检查它。这将显示您正在运行的 Python 版本以及 Anaconda 是否存在。

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

If you downloaded and installed Anaconda, when you type python on the command line, you should see the word Anaconda somewhere appear. This means you’re using Anaconda’s Python package.

要退出 Python(T4),键入exit()并按回车键。

6。我们刚刚将数据科学工具(包)的整个硬件商店下载到我们的计算机上。

现在,它们位于名为(base)的默认环境中,这是在我们安装 Anaconda 时自动创建的。环境是包或数据科学工具的集合。稍后我们将看到如何创建我们自己的环境。

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

The current environment (work space). In our case, this indicates we’re using the base environment. (base) is the default environment which gets installed automatically when installing Anaconda.

您可以通过键入conda env list (env 是环境的缩写)来查看您机器上的所有环境。

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

Running the command conda env list returns all of the environments you have setup on your computer. In my case, I have the environment (base), which I’m in as indicated by the * and I have env, which is in the project_1 folder, we’ll look into this later.

好了,现在我们知道我们已经安装了 Anaconda,假设您的目标是为我们的项目做准备,用机器学习来预测心脏病。

在做了一些研究之后,您发现您需要的工具(包)是:

  • Jupyter 笔记本——用于编写 Python 代码、运行实验以及与他人交流您的工作。
  • 熊猫——用于探索和操纵数据。
  • NumPy —用于对数据进行数值运算。
  • Matplotlib —用于创建您的发现的可视化。
  • sci kit-learn——也叫 sklearn,用于构建和分析机器学习模型。

如果你以前从未用过这些,不要担心。重要的是要知道,如果您按照上面的步骤安装了 Anaconda,那么这些包也已经安装了。

Anaconda 自带了许多现成的最流行和最有用的数据科学工具。上面的也不例外。

7。为了真正测试,我们将启动一个 Jupyter 笔记本,看看上面的包是否可用。要打开 Jupyter 笔记本,请在命令行中键入jupyter notebook,然后按回车键。

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

A command you’ll get very familiar with running during your data science career. This will automatically open up the Jupyter Notebook interface in your browser.

8。您应该会看到 Jupyter 界面出现了。它将包含您当前目录中的所有文件。点击右上角的新建并选择 Python 3,这将创建一个新的 Jupyter 笔记本。

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

Once the Jupyter Interface has loaded, you can create a new notebook by hitting the new button in the top right and clicking Python 3.

9。现在我们来试试我们需要的其他工具。

您可以通过键入命令import pandas as pd并按 shift+enter 来查看 pandas 是否已安装(这就是 Jupyter 单元中代码的运行方式)。

如果没有错误,感谢 Anaconda,我们现在可以使用 pandas 进行数据操作。

10。使用以下命令对 NumPy、Matplotlib 和 scikit-learn 包执行相同的操作:

  • NumPy — import numpy as np
  • Matplotlib — import matplotlib.pyplot as plt
  • scikit-learn — import sklearn

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

Installing Anaconda means we’ve also installed some of the most common data science and machine learning tools, such as, Jupyter, pandas, NumPy, Matplotlib and scikit-learn. If this cell runs without errors, you’ve successfully installed Anaconda.

水蟒概述

这可能看起来像是许多开始的步骤,但它们将形成你作为数据科学家或机器学习工程师前进所需的基础。

  • 为什么——我们使用 Anaconda 访问其他人在我们之前编写的所有代码,这样我们就不用自己重写了。
  • What — Anaconda 提供了硬件商店价值的数据科学工具,如 Jupyter 笔记本、pandas、NumPy 等。
  • 我们从网上下载了 Anaconda 到我们的电脑上,并通过一个例子展示了如何开始使用基本工具。

我们采取的步骤:

  1. 从网上下载了巨蟒。
  2. 在我们的电脑上安装了蟒蛇。
  3. 使用conda list在安装终端中测试,它向我们展示了我们安装的所有包(数据科学工具)。
  4. 加载了一个 Jupyter 笔记本(工具之一)。
  5. 通过将 pandas、NumPy、Matplotlib 和 sklearn 导入 Jupyter 笔记本来执行最终检查。

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

The steps taken in this section. See the full-size interactive version of this image here.

使用 Miniconda 和 conda 创建自定义环境

使用 Anaconda,数据科学工具的整个硬件商店是一个很好的开始。但是对于长期的项目,您可能想要创建自己独特的环境(工作台),其中只有项目所需的工具,而不是所有的东西。

有几种方法可以用 Conda 创建自定义环境。对于这个例子,我们将下载 Miniconda,它只包含最少的数据科学工具。然后,我们将在项目文件夹(文件夹也称为目录)中创建一个自定义环境。

为什么这样?

在每个项目开始时创建一个新的项目目录是一个好主意。然后在这个目录中,保存该项目的所有相关文件,比如数据、代码和您使用的工具。

在接下来的步骤中,我们将建立一个名为project_1的新项目文件夹。在这个目录中,我们将创建另一个名为env(环境的简称)的目录,其中包含我们需要的所有工具。

然后,在env目录中,我们将建立一个环境来处理与上面相同的项目,预测心脏病。所以我们需要 Jupyter 笔记本,熊猫,NumPy,Matplotlib 和 scikit-learn。

这样做可以在将来方便地与他人共享您的项目。

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

The typical steps you might take when starting a new machine learning project. Create a single project folder and then store all of the other relevant files, such as environment, data and notebooks within it. We’ll go through created an environment folder in this section.

**Note:** If you already have Anaconda, you don’t need Miniconda so you can skip step 1 and go straight to step 2\. Since Anaconda and Miniconda both come with Conda, all of the steps from step 2 onwards in this section are compatible with the previous section.
  1. 首先,我们从 conda 文档网站下载 Miniconda。选择一个适合你的。由于我使用的是 Mac,所以我选择了 Python 3.7,64 位 pkg 版本。

下载完成后,请完成安装步骤。因为 Miniconda 不具备 Anaconda 的所有功能,所以它占用的磁盘空间要少 10 倍(2.15 GB 对 200 MB)。

当安装完成时,您可以在命令行上使用which conda来检查它的安装位置。

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

Downloading and installing Miniconda means installing Conda as well. You can check where it’s installed using which conda on the command line. In my case, it’s stored at /Users/daniel/miniconda3/bin/conda.

**2。**在桌面上创建一个名为project_1的项目文件夹。在实践中,我们使用这个项目文件夹来完成我们所有的工作,这样就可以很容易地与他人共享。

要在桌面上创建一个名为project_1的文件夹,我们可以使用命令mkdir desktop/project_1mkdir代表制作目录,desktop/project_1表示制作desktop上的project_1

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

We’re creaitng a new project folder called project_1. Whatever files we use for the project we’re working on will go in here. That way, if we wanted to share our work, we could easily send someone a single file.

**3。**我们将使用cd desktop/project_1切换到新创建的项目文件夹。cd代表变更目录。

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

It’s good practice to have separate project folders and environments for each new project. Keeping things separate prevents mixups in the future.

4。进入项目文件夹后,下一步是在其中创建一个环境。

该环境包含我们项目所需的所有基础代码。因此,如果我们想在以后复制我们的工作或与他人分享,我们可以确保我们未来的自己和他人有和我们一样的基础。

我们将创建另一个名为env的文件夹,在这个文件夹中会有所有相关的环境文件。为此,我们使用:

$ conda create --prefix ./env pandas numpy matplotlib scikit-learn

--prefix标签和/env前的.表示将在当前工作目录下创建env文件夹。在我们的例子中是Users/daniel/desktop/project_1/

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

This line of code says, ‘Hey conda, create a folder called env inside the current folder and install the pandas, NumPy, Matplotlib and scikit-learn packages.’ New Conda environments come with a few tools to get started but most of the time, you’ll have to install what you’re after.

运行上面的代码行后,会询问您是否要继续。按下y

当代码完成时,现在在project_1文件夹中会有一个名为env的文件夹。使用ls可以看到一个目录中所有文件的列表,它是 list 的缩写。

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

We’ve now created a project_1 folder and an env folder. The project_1 folder will contain all of our project files such as data, Jupyter Notebooks and anything else we need. The env folder will contain all of the data science and machine learning tools we’ll be using.

**5。**环境设置完成后,终端窗口中的输出会告诉我们如何激活新环境。

我的情况是conda activate Users/daniel/desktop/project_1。您可能想在某个地方写下这个命令。

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

Once an environment is created, it can be activated via conda activate [ENV] where [ENV] is the environment you want to activate.

这是因为我已经在project_1文件夹中的desktop上创建了env文件夹。

运行上面的代码行激活我们的新环境。激活新环境会将(base)更改为(Users/daniel/desktop/project_1),因为这是新环境所在的位置。

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

When an environment is active, you’ll see its name in brackets next to your command prompt. Activating an environment gives you access to all of the tools stored in it.

**6。**现在我们的环境已经激活,我们应该可以访问上面安装的包了。让我们看看是否可以像上一节那样启动一个 Jupyter 笔记本。

为此,我们在命令行上运行命令jupyter notebook,激活新环境。

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

When we created our env folder, we forgot to install the jupyter package. This means we can’t run the jupyter notebook command. Not to worry, Conda makes it easy to install new packages with conda install.

7。糟糕…我们忘记安装 Jupyter 了。这是第一次设置新环境时的常见错误。但还是有办法解决的。例如从模板(或 YAML 文件)设置环境。我们将在扩展部分看到如何做到这一点。

要安装 Jupyter 包和使用 Jupyter 笔记本,可以使用conda install jupyter

这类似于我们之前运行来设置环境的内容,除了现在我们关注一个包,jupyter

这就像说,‘嘿,康达,把jupyter包安装到当前环境中’。

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

If your environment is missing a package, you can install it using conda install [PACKAGE] where [PACKAGE] is your desired package.

运行此命令将再次询问您是否要继续。按下y。然后 Conda 会将jupyter包安装到您激活的环境中。在我们的例子中,它是project_1中的env文件夹。

8。现在我们已经安装了 Jupyter,让我们再次尝试打开笔记本。我们可以使用jupyter notebook来实现。

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

We’ve just installed the jupyter package into our environment, so now we’ll able to run the jupyter notebook command.

9。漂亮,Jupyter 界面加载完毕,我们可以通过点击新建并选择 Python 3 来创建一个新的笔记本。

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

The Jupyter Interface shows you the files and folders in your current directory. In this case, you should be able to see the env folder you made. And since we’re in the project_1 folder, any new files you create with the New button will be stored within the project_1 folder.

然后为了测试我们的其他工具 pandas、NumPy、Matploblib 和 scikit-learn 的安装,我们可以在第一个单元格中输入下面几行代码,然后按 shift+enter。

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

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

We can check if our environment has successfully installed the tools we’re after by trying to import them in our Jupyter Notebook.

10。若要停止 Jupyter 笔记本的运行,请在运行它的终端窗口中按 control+c。当它询问您是否要继续时,按下y

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

When you want to close your Jupyter Notebook, be sure to save it before stopping it running within the terminal.

11。要退出您的环境,您可以使用conda deactivate。这将带您回到(base)环境。

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

Deactivating your current environment allows you to activate another environment or perform any changes using Conda outside of your environment.

12。要回到您的环境,运行您之前写下的conda activate [ENV_NAME]命令,其中[ENV_NAME]是您的环境。

然后,要重新访问 Jupyter 笔记本,运行jupyter notebook命令。这将加载 Jupyter 接口。

在我的例子中,代码如下所示:

(base) Daniels-MBP:~ daniel$ conda activate \ /Users/daniel/Desktop/project_1/env
(/Users/daniel/Desktop/project_1/env) Daniels-MBP:~ daniel$ jupyter notebook

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

When you want to resume work on a previous project, the practice is to reactivate the environment you were using and then continue working there. This ensures everything you do is contained in the same place.

Miniconda 概要

这看起来有很多步骤,事实也的确如此。但是了解这些技能很重要。

确保你有一个良好的基础工作环境将有助于在未来节省大量时间。

想象一下在你的工具棚里工作,但是所有的东西都被放错了地方。你可能知道东西在哪里,但是一旦有人来帮忙,他们就会花几个小时去找合适的工具。相反,现在他们有了一个工作环境。

  • 为什么 —当我们不需要 Anaconda 提供的所有东西时,我们使用 Miniconda,并创建我们自己的定制环境,以便与他人共享。
  • 什么 — Minconda 是 Anaconda 的缩小版,conda 是一个完全可定制的包管理器,我们可以用它来创建和管理环境。
  • 如何做 —我们从网上下载了 Miniconda 到我们的电脑上,里面有 conda。然后我们使用 Conda 为project_1 创建了自己的定制环境。

我们设置定制 Conda 环境的步骤(这些步骤也适用于 Anaconda):

  1. 从网上下载了迷你康达。
  2. 在我们的电脑上安装了迷你康达。
  3. 使用mkdir project_1在桌面上创建一个名为project_1的项目文件夹,然后使用cd project_1将其改变。
  4. 使用conda create --prefix ./env pandas numpy matplotlib scikit-learn创建一个名为env的环境文件夹,其中包含 pandas、NumPy、Matplotlib 和 scikit-learn。
  5. 使用conda activate /Users/daniel/Desktop/project_1/env激活我们的环境
  6. 尝试使用jupyter notebook加载 Jupyter 笔记本,但是没有成功,因为我们没有这个包。
  7. 使用conda install jupyter安装 Jupyter。
  8. 使用jupyter notebook启动了一个 Jupyter 笔记本,并通过将 pandas、NumPy、Matplotlib 和 sklearn 导入到 Jupyter 笔记本中来执行最终检查。

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

Steps we took in this section, downloading, installing and setting up Miniconda. Then we created a project folder as well as a custom environment for our machine learning project. See the full-size interactive version of this image here.

康达摘要

重要的是要记住,Anaconda 和 Miniconda 都是 conda 自带的。所以不管你下载哪一个,你都可以对每一个执行相同的步骤。

其中 Anaconda 是数据科学工具的硬件商店,Miniconda 是工作台(软件分发),conda 是助手(包管理器),帮助您获得新工具和定制您的硬件商店或工作台。

以下是一些你需要记住的有用的 Conda 命令。

扩展:将 Conda 环境导出为 YAML 文件

如果您已经完成了上述所有工作,那么下一步您将想去的地方是如何将您的环境共享为 YAML 文件。YAML 文件是一种常见的文件类型,可以方便地共享和使用。

要将我们之前在/Users/daniel/Desktop/project_1/env创建的环境导出为名为environment.yaml的 YAML 文件,我们可以使用命令:

$ conda env export --prefix /Users/daniel/Desktop/project_1/env > environment.yaml

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

Exporting your environment to a YAML file is another way of sharing it. You might do it this way if sharing everything in the project_1 folder wasn’t an option.

运行 export 命令后,我们可以看到新的 YAML 文件存储为environment.yaml

一个示例 YAML 文件可能如下所示:

name: my_ml_env
dependencies:
  - numpy
  - pandas
  - scikit-learn
  - jupyter
  - matplotlib

实际的 YAML 文件会因环境名称和环境内容的不同而有所不同。

将环境导出为 YAML 文件后,您可能希望与队友共享该文件,以便他们可以重新创建您工作的环境。他们可能会运行下面的命令,使用您发送给他们的environment.yaml文件来创建env2

$ conda env create --file environment.yaml --name env2

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

Creating env2 like this ensures it will have all of the same tools and packages available within env. Which means your teammate will have access to the same tools as you.

一旦env2被创建,你的队友将能够通过使用conda activate env2激活它来访问其中的工具。

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

Since env2 has all the same packages and dependencies as env, activating it will mean you’ll have access to the same tools as before.

资源

对于 Anaconda、Miniconda 和 conda,您还可以做更多的事情,本文只是触及了皮毛。但是我们在这里介绍的内容已经足够开始了。

如果你想了解更多,我建议查阅文档。通读它帮助我写了这篇文章。

如果你一开始不明白某件事,不要担心,试一试,看看是否可行,如果不行,再试一次。

为帮助我理解蟒蛇、迷你蟒蛇和康达,向下面的人大声呼喊。

用四个步骤让你自己的网站上线

原文:https://towardsdatascience.com/get-your-own-website-online-in-four-steps-adef65abe8bd?source=collection_archive---------16-----------------------

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

使用 R Blogdown 的简单指南

我喜欢收集设计精美或主题有趣的博客网站。吸引我的不仅是网站本身,还有建网站的人。我很佩服他们花时间设计自己的网站,不断发布内容。我总是想象如果有一天我能为自己建一个博客网站该有多好。然而,我总是害怕 HTML、CSS、PHP 和 JavaScript 这些复杂的知识。最近,我重访了 Yihui Xie 的一篇博客,他是 RStudio 的一名活跃的软件工程师,也是许多流行 R 包的作者,包括我们在这篇文章中将要介绍的一个包blogdown。我被他的一句话深深打动了,这句话是他从卡洛斯·沙伊德格中提炼出来的。

“我网,故我在”

我对这个短语的理解有两个文件夹:1)拥有你的个人网站使你跟踪你做了什么和想了什么,因为你网站上的所有内容都在你自己的控制之下。2)最重要的是,这在很大程度上扩大了人们了解你的机会。你可以更有效地向未来的雇主展示你的工作。这对寻找科技相关工作的人非常有帮助。综合来看,我认为是时候把我的长期想象变成现实了。

在这篇文章中,我将分享我在使用blogdown创建我的个人网站时的笔记,这是一个用来显著简化从创建网站到更新网站的整个过程的工具。这篇文章主要由四部分组成:

Github→在RStudio→使用Netlify→自定义域名

在 Github 上创建新的回购

由于 Netlify (一种静态网站服务)将通过 github 源代码库自动呈现您的网站,我们需要首先为您的 github 帐户创建一个新的库来托管您网站的所有源文件。

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

Create a public repository for your website

之后,让我们在您的机器上创建这个存储库的本地版本。这叫做克隆。为此,单击存储库站点中的绿色“克隆或下载”按钮,然后单击复制图标将存储库 URL(使用 SSH 克隆)复制到剪贴板缓冲区。然后,返回到终端(我使用的是 Mac),并导航到您希望存储库的本地版本所在的目录。在终端中运行以下命令:

git clone <repository_URL>

您应该会看到一个带有您的存储库名称的新文件夹出现。因此,在我的例子中,我应该看到在输入ls后出现博客站点。为了能够从您的机器上与 GitHub 通信,我假设您已经配置了 ssh 密钥并将其添加到您的 Github 帐户中。如果你以前从未使用过git,这里的是一个关于如何建立仓库并克隆它的详细教程。

在 RStudio 中建立一个网站

现在,让我们切换到 R studio(R 的免费 IDE)。我们需要安装blogdown包,然后安装hugo(开源静态站点生成器)。

## Install from CRAN
install.packages("blogdown")
## Or, install from GitHub
if (!requireNamespace("devtools")) install.packages("devtools")
devtools::install_github("rstudio/blogdown")blogdown::**install_hugo**()

然后,让我们在 RStudio 中为您的网站创建一个新项目。选择File > New Project > Existing Directory,然后浏览到 GitHub 库所在的目录,点击创建项目按钮。

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

Create a R project in RStudio

RStudio 将使用这个新创建的项目打开一个新会话。我们现在需要编辑.gitignore文件。您可以在 RStudio 的文件查看器面板中找到它(通常位于右下面板,Files选项卡)。单击该文件,在 RStudio 中打开它,并按如下方式编辑内容:

.Rproj.user
.Rhistory
.RData
.Ruserdata
blogdown
.DS_Store # if a windows user. Thumbs.db instead
public/ # if using Netlify

一切就绪后,我们就可以开始使用blogdown::new_site()函数来构建我们的网站了(只需在 R 控制台中简单地键入这个即可)。然而,正如这里的详细说明所建议的那样,我们最好现在就决定主题,而不是以后。而且,我们最好从一个简单的主题开始,而不是复杂的,尤其是当你不熟悉 HTML,CSS,或者 JavaScript,没有 Hugo 主题或者模板的经验的时候。我选择了学术主题,因为它处于主动维护中,并且非常灵活地进行定制。只需键入:

blogdown::new_site(theme = "gcushen/hugo-academic", theme_example = TRUE)

您会发现示例网站出现在 RStudio 的Viewer选项卡中,并且会在 blog-site 文件夹中自动创建几个文件夹。这些都是网站运行的文件。

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

New folders will be created automatically

接下来,我们需要根据这里的建议更新项目选项。Tools > Project Options。基本上,取消选中这两个框。

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

Updating project options

现在是时候把样本网站变成我们自己的了,按照这里的指示编辑配置。如果你使用的是学术主题,一个快速定制样本网站的方法是进入blog-site > content > home文件夹,所有内容都存储在content子目录下的 markdown ( md)文件中。目录结构反映了站点结构。从那里,有不同部件(即网站上显示的部分)的配置文件。我们可以根据您自己的目的通过将active值更改为false来关闭它们。美化网站和给每个部分添加相应的内容是非常耗时的,为了能够现在在线启动我们的新网站,你可以只让about.md处于活动状态,这意味着你现在只需要为about页面填充内容。一旦这些部分的内容准备好了,我们就可以打开其他小部件。

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

Markdown file for demo section

使用 Netlify 部署网站

about页面一切正常时,我们可以提交更改并将存储库从您的机器推送到 GitHub,然后联机到 Netlify

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

Git tab in RStudio

从 RStudio 中选择Git选项卡,然后选择Commit。从那里,选择所有已更改的文件,并在Commit message窗口中写下一些消息以保留记录,例如,“关于页面的第一次更改”。然后点击CommitPush。现在,GitHub 中的存储库已经更新。

我们需要向 Netlify 注册,使用您的 GitHub 帐户免费使用其服务。登录后,选择New site from Git -> Continuous Deployment: GitHub,从这里选择包含网站文件的 GitHub 库。然后我们需要配置构建。记得为你用来创建网站的 hugo 版本创建一个新的变量。在终端中输入hugo version。我的hugo版本是 0.61.0,所以这是我输入的。

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

HUGO_VERSION setting page

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

Build setting page

完成所有这些设置后,Netlify 将在几秒钟内部署网站,并为其分配一个随机的子域名。这是我网站的域名,[objective-wright-b68557.netlify.com](https://objective-wright-b68557.netlify.com/)。你可以随意更改域名,但需要以netlify.com结尾。现在,我们在网上有了自己的网站。

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

My first website

自定义域名

如果你的域名是“yourname.com ”,而不是隶属于其他域名,你肯定会看起来像个极客。因此,我更进一步,花了大约 20 美元从一家 DNS 提供商那里购买了我自己的域名(【junye0798.com】)。这使我能够拥有两年的域名。为了保持中立,我不打算在这里为 DNS 提供商提出建议。你会很容易找到一个好的。然后我在 Netlify 中更新了我自己的域名信息,按照它的指示这里。如果你想了解更多关于域名注册的知识,请阅读谢一辉的文章部分,你会被说服拥有自己的域名。

以下是我用来建立网站的一些好资源:

和往常一样,我欢迎反馈、建设性的批评以及倾听您的数据科学项目。我可以在 LinkedinLinkedin上找到我,现在也可以在我的网站上找到我。

让一台机器帮我做英语作业

原文:https://towardsdatascience.com/getting-a-machine-to-do-my-english-homework-for-me-5d339470fe42?source=collection_archive---------6-----------------------

使用递归神经网络生成文本

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

Photo by Sharon McCutcheon on Unsplash

我一直不喜欢高中英语课。

可能是作业总是超级主观的事实吧。也许是因为我们被迫读的书又长又无聊。也许是因为莎士比亚是用另一种语言写的。

或者也许我只是不擅长写论文。😢

因为我真的不喜欢英语课,所以最终发生的事情是,我不再注意我的老师在说什么,我不读我们应该读的书。结果,我在作业和考试中得了一个糟糕的分数,我的分数下降了。

所以现在我需要挽回我的平均水平,我能做的两件事是:

  • 上课专心听讲,做老师布置的工作
  • 想办法让我摆脱用人工智能写无聊的文章

此时,第二种选择听起来更酷。

递归神经网络

我以前学过一点关于神经网络的知识,你可以看看我关于卷积神经网络用于图像识别的文章,或者我关于应用 CNN 对皮肤病变进行分类的文章。无论如何,神经网络一直在努力解决的一个问题是顺序数据和时间数据。传统的神经网络需要有固定的输入输出大小。

这就像如果你有一个人从楼梯上摔下来的视频,你想训练一个神经网络来对视频中发生的事情进行分类。一个常规的神经网络可能能够判断出这个人在视频的第一帧是站着的。然后,它可能会查看中间的帧,直到它看到视频的最后一帧,它看到一个人摔倒了。但是一旦到了那里,它就忘记了这个人一开始是不是站着的。

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

Ouch

由于它们的工作方式,递归神经网络将有助于解决这类问题。从更高的层面来看,rnn 通过相互循环来工作。神经网络进行前向传递,然后在第二次前向传递时,它从第一次迭代中获取一些信息,以获得更多的上下文来进行第二次预测。

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

A diagram showing an “unfolded” RNN with information being transferred between iterations.

从一开始,信息就可以在整个网络中传递。现在我们的网络可以了解是否有人实际上从楼梯上摔了下来!

递归神经网络的类型

正如我之前提到的,rnn 很酷,因为它们不需要固定的输入或输出,它们可以接受输入并产生序列的输出。

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

Different types of Recurrent Neural Networks from Andrej Karpathy’s blog post.

  1. **一对一:**这基本上是一个常规的神经网络。它接受固定的输入并提供固定的输出。
  2. **一对多:**这种 RNN 接受一个输入,提供多个输出。你可以做的是将第一个输出反馈到神经网络,以生成另一个输出,将结果反馈到神经网络,等等。这被称为对神经网络进行采样,通过这样做,你可以生成全新的序列。
  3. **多对一:**接收多个输入并给出单个输出的 RNN。这用于像情绪分析这样的应用,你给神经网络提供一段文本,并从中预测情绪或情绪。输出序列可以是句子中的单词,输出可以是神经网络对情感的预测。
  4. **多对多:**这种类型的 RNN 接收多个输入序列并产生多个输出。实际上有两种类型的多对多 rnn。**当两个序列不一定长度相同时,使用第一种类型。**对于诸如机器翻译的应用,输入可以是英语或任何其他语言的句子,输出可以是法语或其他语言的句子。在这种情况下,输入和输出的字数可以不同,这使得这种多对多网络非常有用。**当输入和输出同步时使用第二种类型。**如果我们要标记视频的每一帧,我们可以输入一帧,输出一个标签,然后继续处理视频的其余部分。

递归神经网络的问题

到目前为止,rnn 看起来很完美,对吧?我们使用这种新型网络对数据序列进行操作,其方式比我们使用传统网络要好得多。但是 RNNs 的一个问题是消失/爆炸梯度问题。

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

Representation of the vanishing gradient problem from Anish Singh Walia’s article.

当你使用反向传播更新你的模型并计算损耗的梯度时(你的模型是多么的错误),梯度会越来越小。**这基本上意味着网络的层数越多,训练的效率就越低。**爆炸梯度基本上是相反的,如果梯度非常大,它会像雪崩一样反向传播,并且由于 rnn 经过许多序列和迭代,所以存在消失/爆炸梯度的问题。

长短期记忆

这个问题的一个解决方案是使用 LSTMs,即长短期存储单元。它包含一系列数学公式,帮助 RNNs 解决消失梯度问题,并使预测更加准确。当使用 LSTM 时,想象有四种信息:长期记忆、短期记忆、事件和输出。LSTM 单元基于事件提供输出,并在进行预测时考虑长期记忆和短期记忆。

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

A diagram showing an example of how information might be updated in an LSTM cell. Source.

从概念上讲,LSTM 包含四个门:遗忘门、学习门、记忆门和使用门。长期记忆进入遗忘门,不需要的信息被遗忘,短期记忆和事件进入学习门,有用的信息被保留。LTM、STM 和事件在记忆门中连接,然后存储在更新的 LTM 中,这三条信息也传递到使用门,在那里进行预测(STM)。

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

A diagram showing the structure and arrangement of gates in an LSTM cell. Source.

当然,这都是超级简化的。但是主要的收获应该是 LSTMs 在与 rnn 一起工作时非常有用。

用递归神经网络生成论文

现在我们对 RNNs 的工作原理有了基本的了解,让我们回到最初的问题:我如何摆脱做英语作业?

实现这一点的一种方法是利用一对多 RNN。我们可以在一堆不同的文章上训练神经网络,并对模型进行采样,以生成我们从未见过的新文章!

让我们使用 Keras,一个开发深度学习模型的高级 API。这遵循了 Keras Github repo 中使用 LSTMs 生成文本的示例代码。

我们将从导入所有必要的库和模块开始。

任何文本语料库都可以,但对于我的项目,我将使用尼采的著作。我们将导入文本文件,进行一些预处理,并对值进行矢量化。

现在是实际模型的时候了。它由一个 LSTM 组成,并使用 Adam 优化器。

现在定义两个函数,sample:这是一个帮助函数,用于从概率数组中对索引进行采样,on_epoch_end:这是一个函数,在每个 epoch 结束时调用,并打印模型生成的文本。

我们快到了!最后,我们将编写回调函数,在回调函数中我们将看到文本输出,并使模型适合数据。

仅此而已。在我的笔记本电脑上训练所有这些花费了大约三个小时,你也可以在 Google Colab 上用 GPU 运行时训练模型。理论上,生成的文本应该在大约 30 个时代后开始听起来连贯,所以让我们看看模型的一些输出。

“首先培养的是我们的耐心——我们的感觉,即过程的世界对敬畏是同样的形式,是综合的主宰,感觉的节奏也是同样的节奏,是一切驯服的事物,是存在的矛盾的自由的例外——这并不是说,道德和对所有道德领域的人的位置的缺乏”,排除了灵魂对善的追求,总是对他的立场具有对超的危险的恐惧”

“甚至可以把
仇恨的情绪,或做的行为,和一个实例有一个很好地进入灵魂中的宗教状态,压抑和相应,可以是所有宗教的感情和意识的斗争很好地理解站在和可以满足他的主题的灵魂的行为,并依赖于宗教不是作为一种感情谁凌驾于神圣的感觉”

嗯……肯定不惊艳。但这一切都是由神经网络生成的,这难道不酷吗?毫无疑问,有了更好的架构和更广泛的数据,您可能会得到与人类所写的难以区分的结果。

尽管我可能还不能让一个神经网络为我写出我的英语论文,但我认为只要多做一点试验和测试,我就能至少在我的作业的部分中作弊。

一些关键要点

在我看来,自然语言处理目前正在取得一些令人敬畏的突破,并且摆弄文本生成实际上非常有趣。但是如果有什么要点你应该记住的话,下面就是:

  1. 递归神经网络不同于传统神经网络,因为它们能够保留来自先前迭代的数据,以进行更好的预测。
  2. 有许多不同类型的 rnn——包括一对一、一对多、多对一和多对多——每一种都适合特定的任务。
  3. 长短期记忆(LSTM)门用于解决 RNNs 中的消失梯度问题,也用于连接神经网络中的长期信息。

感谢阅读!如果您喜欢,请:

  • 在 LinkedIn 上添加我,关注我的媒体,了解我的旅程
  • 留下一些反馈或者给我发邮件(alex@alexyu.ca)
  • 与你的网络分享这篇文章
Python毕业设计-基于Python的人脸识别系统 深度学习 (源码+文档),个人经导师指导并认可通过的高分设计项目,评审分99分,代码完整确保可以运行,小白也可以亲自搞定,主要针对计算机相关专业的正在做大作业的学生和需要项目实战练习的学习者,可作为毕业设计、课程设计、期末大作业,代码资料完整,下载可用。 Python毕业设计-基于Python的人脸识别系统 深度学习 (源码+文档)Python毕业设计-基于Python的人脸识别系统 深度学习 (源码+文档)Python毕业设计-基于Python的人脸识别系统 深度学习 (源码+文档)Python毕业设计-基于Python的人脸识别系统 深度学习 (源码+文档)Python毕业设计-基于Python的人脸识别系统 深度学习 (源码+文档)Python毕业设计-基于Python的人脸识别系统 深度学习 (源码+文档)Python毕业设计-基于Python的人脸识别系统 深度学习 (源码+文档)Python毕业设计-基于Python的人脸识别系统 深度学习 (源码+文档)Python毕业设计-基于Python的人脸识别系统 深度学习 (源码+文档)Python毕业设计-基于Python的人脸识别系统 深度学习 (源码+文档)Python毕业设计-基于Python的人脸识别系统 深度学习 (源码+文档)Python毕业设计-基于Python的人脸识别系统 深度学习 (源码+文档)Python毕业设计-基于Python的人脸识别系统 深度学习 (源码+文档)Python毕业设计-基于Python的人脸识别系统 深度学习 (源码+文档)Python毕业设计-基于Python的人脸识别系统 深度学习 (源码+文档)Python毕业设计-基于Python的人脸识别系统 深度学习 (源码+文档)Python毕业设计-基于Python的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值