TowardsDataScience 博客中文翻译 2016~2018(二百零七)

TowardsDataScience 博客中文翻译 2016~2018(二百零七)我经历过 CSV ASN 1 SGML XML 和各种风格的定制数据格式 无法在这里充分表达我对 JSON 的热爱

原文:TowardsDataScience Blog

协议:CC BY-NC-SA 4.0

我的强化学习之旅——第二部分:多臂强盗问题

原文:https://towardsdatascience.com/my-journey-to-reinforcement-learning-part-2-multi-armed-bandit-problem-eefe1afab73c?source=collection_archive---------7-----------------------

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

GIF from this website

目前,我正在研究强化学习,我想解决著名的多臂强盗问题。(既然这个问题已经非常有名,我就不详细解释了,希望你没问题!).下面是我们将用来解决这个问题的不同类型的解决方案。

请注意,这篇文章是关于我的学习过程的,因为我学习的方式是向自己解释概念,这篇文章就是这样。

问题介绍(多臂土匪)

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

Image from this website

现在这个问题已经很出名了,因为我不擅长英语(lol),我已经链接了我朋友(Michael)关于这个问题的解释。如果你想阅读它,请点击这里,或者如果你想阅读更多内容,请点击这里。然而,我将集中讨论解决这个问题的不同方法。(因为我在研究中发现,确实有多种方法可以解决这个部分信息序贯决策问题。)

解决方案 1)ε-贪婪代理

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

Image from this website

上面的等式是行动-价值函数,它衡量在某个状态下有多好,采取什么行动。然而,在我们的问题中,我们只有一个国家,我们选择哪个国家武装土匪拉,因此我们可以删除符号 s。(这就是为什么我们看不到它的原因。)

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

如上所述,经过一些扩展和替换,我们可以得到一个更简单的方程。等式的另一种格式可以在下面看到…

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

Image from this website

我们现在可以将动作函数写入 python,如下所示。

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

如果我们运行代码,我们可以得到如下所示的结果。

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

如上所述,一些百分比是关闭的,然而谢天谢地,我们的代理人正确地预测,土匪# 9 有最高的概率。(归功于这个解决方案 michaelpacheco 和 Anson Wong )

解决方案 2)政策梯度

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

Image from this website

这种方法非常简单,在我们进入更深层次的神经网络之前,让我们只使用简单的对数似然及其导数来选择最佳水平。(有关该解决方案的更多深入解释,请点击此处。)

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

实验的设置与前一个完全相同,但是现在我们要更新代理的权重。正如上面所看到的,当在 numpy 中实现时,我们将需要执行衍生我们自己。下面是结果……

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

如上所述,代理对每个概率的猜测与实际的真实概率有些接近。(归功于这个解决方案亚瑟·朱利安尼

解决方案 3)政策梯度(多层网络)

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

如上所述,我们可以很容易地创建两个完全连接的网络,使用这种方法,我们可以扩展解决方案 2),而不是直接获得我们想要拉的土匪,我们可以训练一个神经网络来计算最佳土匪。(使用反向传播)

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

如上所述,在摆弄网络本身的时候,我不得不剪切梯度以防止它增加 log()的无效输入。(log(0)未定义)。下面是结果……

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

如上所述,代理能够猜测每个强盗相似的概率,然而,出于某种原因,它从来没有想要拉最左边的强盗。

解 4)线性奖励无为

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

Image from this website

这种方法比使用神经网络更简单,我们只是要增加在给定的概率分布中选择最佳 bandit 的概率。

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

如上所述,我们只有在收到强盗的奖励时才会更新。当我们没有任何奖励时,我们不会更新任何东西。

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

代理人对每个杠杆的最终概率实际上是相当准确的。(归功于这个解决方案迈克尔·帕切科)

解 5)线性奖励惩罚

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

Image from this website

现在,让我们简单地扩展前面的解决方案,如上所述,当我们没有得到某些土匪的奖励。我们只是要降低那个强盗在下一轮被选中的概率。

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

添加一条 else 语句,增加几行代码来降低概率,可以得到如下结果。

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

几乎完美地预测了每一个强盗的概率。(归功于这个解决方案迈克尔·帕切科)

交互代码

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

对于 Google Colab,您需要一个 Google 帐户来查看代码,而且您不能在 Google Colab 中运行只读脚本,因此请在您的游戏场上制作一份副本。最后,我永远不会请求允许访问你在 Google Drive 上的文件,仅供参考。编码快乐!

要访问解决方案 1 的代码,请点击此处。
要访问解决方案 2 的代码,请点击此处。 要访问解决方案 3 的代码,请点击此处。
要访问解决方案 4 的代码,请点击此处。
要访问解决方案 5 的代码,请点击此处。

最后的话

我想把下面的幻灯片/论文包括进来,作为一个例子来说明这个问题有多么复杂和基本……

Image from this website

Paper from this website

Paper from this website

如果发现任何错误,请发电子邮件到 jae.duk.seo@gmail.com 给我,如果你想看我所有写作的列表,请在这里查看我的网站。

同时,在我的推特上关注我这里,访问我的网站,或者我的 Youtube 频道了解更多内容。我还实现了广残网,请点击这里查看博文 pos t。

参考

  1. NumPy . random . uniform—NumPy v 1.14 手册。(2018).Docs.scipy.org。检索于 2018 年 6 月 28 日,来自https://docs . scipy . org/doc/numpy/reference/generated/numpy . random . uniform . html
  2. NumPy . set _ print options—NumPy v 1.13 手册。(2018).Docs.scipy.org。检索于 2018 年 6 月 28 日,来自https://docs . scipy . org/doc/numpy-1 . 13 . 0/reference/generated/numpy . set _ print options . html
  3. 百分比,R. (2018)。真实 Python 随机百分比。堆栈溢出。检索于 2018 年 6 月 28 日,来自https://stack overflow . com/questions/15613041/real-python-random-percentage
  4. 分布,G. (2018)。生成具有给定(数字)分布的随机数。堆栈溢出。检索于 2018 年 6 月 28 日,来自https://stack overflow . com/questions/4265988/generate-random-numbers-with-a-given-numerical-distribution
  5. 迈克尔·帕切科。(2018).Michaelpacheco.net。检索于 2018 年 6 月 28 日,来自 https://www.michaelpacheco.net/blog/RL-multi-armed-bandit
  6. 反正切函数。(2018).Rapidtables.com。检索于 2018 年 6 月 28 日,来自https://www.rapidtables.com/math/trigonometry/arctan.html
  7. NumPy . arctan—NumPy 1.14 版手册。(2018).Docs.scipy.org。检索于 2018 年 6 月 28 日,来自https://docs . scipy . org/doc/numpy/reference/generated/numpy . arctan . html
  8. 导数表。(2018).Math.com。检索于 2018 年 6 月 28 日,来自http://www.math.com/tables/derivatives/tableof.htm
  9. @,D. (2018)。numpy dot()和 Python 3.5+矩阵乘法@的区别。堆栈溢出。检索于 2018 年 6 月 28 日,来自https://stack overflow . com/questions/34142485/difference-between-numpy-dot-and-python-3-5-matrix-乘法
  10. Atan(反正切)函数。(2018).Communityviz.city-explained.com。检索于 2018 年 6 月 28 日,来自http://community viz . city-explained . com/community viz/s 360 web help 4-2/formulas/function _ library/atan _ function . htm
  11. 学习率。(2018).Users.ics.aalto.fi 于 2018 年 6 月 28 日检索,来自http://users.ics.aalto.fi/jhollmen/dippa/node22.html
  12. “1E+09”是什么意思?—使用修改过的库存零件。(2013).克巴尔空间计划论坛。检索于 2018 年 6 月 28 日,来自https://forum.kerbalspaceprogram.com/index.php?/topic/36897-what-quote 1e 09 quot-mean-playing-a-moded-stock-part/
  13. 自然对数的导数。(2018).Oregonstate.edu。检索于 2018 年 6 月 28 日,来自https://oregonstate . edu/instruct/mth 251/CQ/stage 6/Lesson/log . html
  14. 对数的导数—log(x)’。(2018).Rapidtables.com。检索于 2018 年 6 月 28 日,来自https://www . rapid tables . com/math/algebra/logarity/logarity _ derivative . html
  15. [在线]请访问:https://www . quora . com/What-is-the-multi-arm-bandit-problem-What-is-some-of-its-implications[2018 年 6 月 28 日访问]。
  16. 解决多臂强盗问题-走向数据科学。(2017).走向数据科学。检索于 2018 年 6 月 28 日,来自https://towards data science . com/solving-the-multi-armed-bandit-problem-b 72 de 40 db 97 c
  17. 迈克尔·帕切科。(2018).Michaelpacheco.net。检索于 2018 年 6 月 28 日,来自https://michaelpacheco.net/
  18. 解决多臂强盗问题-走向数据科学。(2017).走向数据科学。检索于 2018 年 6 月 28 日,来自https://towards data science . com/solving-the-multi-armed-bandit-problem-b 72 de 40 db 97 c
  19. NumPy . clip—NumPy 1.14 版手册。(2018).Docs.scipy.org。检索于 2018 年 6 月 29 日,来自https://docs . scipy . org/doc/numpy/reference/generated/numpy . clip . html
  20. (2018).Cs.cornell.edu。检索于 2018 年 6 月 29 日,来自https://www . cs . Cornell . edu/people/TJ/publications/yue _ joachims _ 09a . pdf
  21. 兰福德,j .,,张,T. (2008)。带边信息的多武装匪徒的历元贪婪算法。papers . nips . cc . 2018 年 6 月 29 日检索,来自https://papers . nips . cc/paper/3178-the-epoch-greedy-algorithm-for-multi-armed-bottoms-with-side-information
  22. 交叉熵和对数似然。(2018).Awebb.info .检索于 2018 年 6 月 29 日,来自 http://www.awebb.info/blog/cross_entropy
  23. Tensorflow 中的简单强化学习:第 1 部分—双臂土匪。(2016).中等。检索 2018 年 6 月 29 日,来自https://medium . com/@ awjuliani/super-simple-reinforcement-learning-tutorial-part-1-FD 544 fab 149

我与 TensorFlow 的旅程

原文:https://towardsdatascience.com/my-journey-with-tensorflow-371bc31c2dbf?source=collection_archive---------6-----------------------

是的,不要读这个

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

  • 对 OpenAI 健身房的环境有一个基本的了解。值得注意的是,env.observation_space.shapeenv.action_space.n
  • 理解 Q-Learning 是一个马尔可夫决策过程。你有状态,这对于有连续输入空间的东西来说很棘手。
  • 实际上,要明白几乎每个强化学习问题都是一个 MDP。甚至那些或多或少具有无限状态/动作空间的仍然被视为 MDP。您可以将这些空间转换为功能空间,使它们更易于管理。

老实说,我对过去几年的整个神经网络运动非常感兴趣。我尤其对强化学习及其在游戏中的应用感兴趣(参见 OpenAI Gym )。凭借我在大学时对机器学习和微积分的基本了解,我现在正走在一条构建一些很酷的东西的道路上。

卑微的开始

“好艺术家借,大艺术家偷”
链接

我想我会把下面这篇文章和 OpenAI 健身房的 CartPole-v0 结合起来。这个想法是从一个“更简单”的算法(Q-Learning)开始,然后转移到神经网络进行一些比较。

[## 使用 Tensorflow 的简单强化学习第 0 部分:使用表格和神经网络的 Q 学习

在我的强化学习系列的这个教程中,我们将探索一个叫做 Q……

medium.com](https://medium.com/emergent-future/simple-reinforcement-learning-with-tensorflow-part-0-q-learning-with-tables-and-neural-networks-d195264329d0)

在对观察空间的大小和一些被否决的函数有一点困惑之后,我意识到 Q-Learning 不适合 CartPole,因为观察是连续空间而不是离散空间。幸运的是,TensorFlow 有一个 很棒的初学者指南使用 MNIST 数据集!

这给了我们代码,但是我们仍然需要把这个分类算法变成一个学习算法。Github gist为 CartPole 示例的“奖励模型”提供了一些背景。Github gist提供了一种非统计方法来“解决”问题。这很好,因为我们基本上想要“学习”手动方法。这个来自 tflearn 的 Github repo 的例子很好地模拟了我们正在做的事情,只是我们没有这么大的输入空间。

因此,过一段时间后,您可能会看到以下内容:

inputs = tf.placeholder(tf.float32, [
  **None**,
  action_repeat,
  env.observation_space.shape[0]    ])
net = tflearn.fully_connected(inputs, 4, activation='relu')
q_values = tflearn.fully_connected(net, env.action_space.n)

基本上,我们在我们的网络中存储了历史的样本。理想情况下,我们的网络将能够根据连续的帧来判断杆子朝哪个方向落下。

如果我们记录直到失败的迭代次数,我们可以看到如下结果:

took 51 iterations
took 46 iterations
took 51 iterations
took 29 iterations
took 33 iterations
took 38 iterations
took 73 iterations

没有明确的迹象表明我们的算法正在收敛到一个解。😦

后退几百步

在这一点上,很明显,即使对强化学习有很高的理解,也不足以构建一个算法。我把这比作使用网络浏览器和构建网络服务器。

我花了一点时间看了大卫·西尔弗的强化学习课程。我从第三课开始,虽然我真的应该从头开始。直到第七讲,演员批评的方法才被提出来。(此外,看起来还有另一个参考大卫·西尔弗讲座的综合信息这里)。

这篇博客文章我已经读过一百万遍了。它有很多有用的信息,但我认为如果没有基本面,大部分信息都没有意义。

以下是我收集的一些信息:

  • 你可以把一个强化学习问题分解成两个步骤:奖励函数和策略函数。
  • 有两种类型的问题:预测和控制。参见本讲座中的第 21/22 张幻灯片。一方面,我们可以专注于建立预测

我还发现了这篇关于 CartPole-v0 的一些非常简单的策略的博文。我认为这在建立政策梯度方面做得最好。如果你理解了随机搜索和爬山是怎么做的,你就会对政策如何运作有一个直觉。

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

Sample Rewards for my implementation of Hill Climbing

爬山很容易实现。如果您想获得 TensorFlow 构建模块(摘要、占位符、会话、随机初始化)的经验,这是一个可靠的算法。我犯了一个错误,在“step”循环中添加了占位符。基本上,我们在我们的会话图中增加了新的操作(矩阵乘法),这(我认为)使得图的评估更加复杂。因此,性能会降低并最终停止。

未来几周,我将深入探讨政策梯度。请在这里随意查看我的一些示例代码:

[## jgensler 8/my-tensor flow-journey

我的张量流之旅——开放健身房的一些实验

github.com](https://github.com/jgensler8/my-tensorflow-journey)

我在大会数据科学训练营的最后一周

原文:https://towardsdatascience.com/my-last-week-of-general-assemblys-data-science-boot-camp-67342686e7d3?source=collection_archive---------5-----------------------

我余生的第一周

“如果我们有数据,让我们看看数据。如果我们只有意见,那就用我的吧。”

网景公司前首席执行官吉姆·巴克斯代尔

如果你看过我的第一篇博文,你就知道我上过总会的数据科学训练营,被称为数据科学沉浸式。这是一个为期 12 周的项目,主要是为那些想在数据科学领域迈出第一步的人设计的;但它的构建方式也是为了让你为任何(入门级和初级)数据科学工作做好准备。在这个项目中,我们有超过 100 个小时的讲座,被要求做 40 个关于我们刚刚学到的内容的练习\作业(也称为实验),做五个项目和一个顶点项目,在非技术要求中,写十篇博客文章(九篇博客文章和另一篇关于期末项目的文章,那篇文章很快就会出现😊 ).这是我“不得不”(或被要求)在项目博文之前写的最后一篇博文。

但是,正如我在这个项目中学到的,仅仅因为我不“必须”做某事,并不意味着我不应该做这件事!起初,我害怕每周写一篇博客,尤其是当英语不是我的第一语言时,但我最终真的很喜欢它(我当然希望你也喜欢我的帖子!)—这给了我一个机会来复习我在课堂上学到的东西,并尝试向世界解释它,从而巩固我对材料的掌握。它开始只是一个额外的任务,最终对我来说成了一个很好的学习(也有人会说是教学)工具。这绝对是我要继续做的事情!

虽然在过去的 12 周里我学到了很多,但我主要是学会了如何学习和如何不断获取新工具。我的一位导师将我们项目中的学习定义为“用消防水管喝水”大多数时候,这就是我的感觉。但随着时间的推移,感觉更容易控制了。这让我更加好奇,更加渴望了解更多。我学到了很多,但我意识到我是多么需要(和想要)学习更多。作为一个没有任何数据科学背景的人,我知道这个程序基本上只是在试探我的脚趾(好吧,可能不仅仅是我的脚趾!)在数据科学的世界中——我真的很兴奋能继续沉浸在这个领域中!

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

It’s still drinking from the firehose — but it’s a little more manageable!

这是我第一篇博文中的一段话:

现在,我在华盛顿特区的 General Assembly 启动了一个数据科学项目。这可能是我一生中做过的最困难的事情,而且这只是项目的头几周。有些时候,我真的很兴奋,因为我想到要学习某些主题,而有些时候,我会想,“我在这里做什么?”

在那篇文章之后的几周里,这个项目并没有变得更容易,实际上变得更难了,但我想这有点像那句名言(或陈词滥调,取决于你如何看待它)“生活不会变得更容易,你只会变得更强大。”我并不总是感觉更强壮,但是我就要完成这个项目了,所以我想我会的。“我在这里做什么?”我肯定有答案了这正是我应该做的!我现在知道这是我职业生涯的一个伟大方向,来到大会是一个伟大的选择,我不后悔。尽管我对未知有点紧张,但我对即将到来的伟大事情感到兴奋。

行为克隆:让汽车自动驾驶…

原文:https://towardsdatascience.com/my-learning-from-udacity-sdc-nanodegree-do-we-really-need-a-complex-cnn-and-hours-of-training-4f80e28af90b?source=collection_archive---------5-----------------------

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

Driving Car on Simulator Provided By Udacity

是的,像往常一样,我从几十个卷积层和六个密集层的复杂 CNN 架构开始,因为 Keras(感谢 Keras 团队让 tensorflow 变得如此简单)使创建神经网络变得更容易。我是开玩笑的:-)我刚开始使用类似于 NVIDIA 的架构,它有五个卷积层和三个完全连接的层,以及大量的训练数据,通过放大左、右相机拍摄的每幅图像等。顺便说一下,我已经使用 Udacity 提供的数据集来训练我的模型。

是啊,看起来像是我完成了一件大事,对吧?但是,我们需要像 NVIDIA CNN 架构这样的复杂 CNN 架构吗?NVIDIA CNN 架构用于现实生活场景、数小时的培训时间和大量数据,以便在 Udacity 为该项目提供的模拟器上运行我们的汽车?

我们来讨论一下…

我们需要什么来确定可驾驶区域和预测转向角度,以便我们的车辆在模拟器上平稳行驶而不会出现任何故障?

对于识别转向角度的汽车,我们需要像道路边缘这样的特征。在 CNN 中,这样的高级特征是在初始层提取的。

记住这一点,我开始减少我的 NVIDIA CNN 模型的层数。我尝试了三个卷积层和三个致密层。然后我尝试了两个卷积层和两个致密层,最后一次尝试是一个卷积层和一个致密层。使用最后一种配置,我能够在大约五分钟的较短训练时间内达到与我以前的试验相似的性能。

我这个项目的最终模型由单一卷积层,然后是下降层,最大池层和单一密集层组成,如下所示

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

Model used for training CNN for project 3

  • 正在生成数据集:-

为了生成这个模型的数据集,我通过使中心图像的原始转向角的转向角为-ve,拍摄了所有的中心摄像机图像及其翻转的对应物。翻转图像是为了平衡数据集,以便模型不会偏向任何特定条件。为了将恢复数据添加到我的数据集,我通过将左相机图像的转向角偏移 0.4 并将右相机图像的转向角偏移-0.3 来拍摄所有的右和左相机图像。我生成的数据集的分布如下所示

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

Steering angle distribution of generated dataset

我们可以看到数据集几乎是平衡的。由于我们的大部分赛道是直的,我保留了更多 0°转向角的样本。

  • 处理图像:-

下图包含了每台相机拍摄的一些图像样本

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

Image samples from each camera

为了训练我们的模型,我们不需要上面图像中的所有细节,比如自然风景,天空,环境等等。我遵循的第一条基本原则是向网络提供你想让它看到的细节。为了去掉多余的细节,我从顶部裁剪了 80 像素,从底部裁剪了 20 像素。

裁剪后的图像示例如下

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

Cropped Images

然后我把图片的大小调整到 32 X 32,因为这将使模型更快,我们在这个场景中不需要低层次的细节。在对调整过大小的图像进行标准化之后,这些图像被作为输入传递给 CNN。

  • 过度拟合:-

在训练模型时,我发现该模型在训练集上具有低的均方误差,但是在验证集上具有高的均方误差。这意味着模型过度拟合。

为了克服过度拟合,我添加了 dropout 层和 maxpooling 层,然后是卷积层,并将 epoches 数减少到 2。

有了这个模型,我可以在一号赛道和二号赛道上驾驶车辆。

我在模型中使用的参数

  • 历元数= 2
  • 使用的优化器- Adam
  • 学习率-默认值为 0.001
  • 验证数据分割- 0.2
  • 生成器批量= 32
  • 修正系数- 0.4 和-0.3
  • 使用的损失函数- MSE(均方差,因为它对于回归问题是有效的)。
  • 激活函数- RELU
  • 下降- 40%(在第一个激活层之后,以 combact 过度拟合)
  • 使用的数据集-由 Udacity 提供(除原始数据集外无其他图像)。

自主模式下的轨道 1 视频:-

Track 1

自动模式下的轨道 2 视频:-

Track 2

该模型能够在第二条赛道上驾驶,而无需为第二条赛道重新训练。因此,我们可以说,这是足够普遍的,而不是过度拟合。

链接到该项目的 github 库。

我和 JSON 的恋情

原文:https://towardsdatascience.com/my-love-affair-with-json-edaca39e8320?source=collection_archive---------0-----------------------

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

Photo by Glenn Carstens-Peters on Unsplash

对我来说, JSON (JavaScript 对象符号)是一种令人愉快的数据共享/传输格式。使用和阅读都很简单。处理起来非常快。它也是更容易阅读的 YAML 的子集。

我已经发展了个人的最佳实践,用于处理以 JSON 为核心的数据,我将在下面分享。这些最佳实践是我从他人那里学到的,也是我在处理生物制药数据时的个人经验,这些数据虽然一般不是很大,但往往是非常异构的,数据格式也不是很稳定。我不想建议您对所有事情都使用 JSON。例如,出于性能原因,有时需要二进制格式。

对于大多数语言来说,它的序列化和反序列化速度非常快,这意味着它可以轻松快速地发送到另一个进程,保存到磁盘/文件和检索。您可以将数据对象作为 JSON 保存到磁盘,然后将该文件发送给使用不同语言的其他人,通常他们选择的编程语言中有一个库/包,可以轻松地将它从 JSON 数据对象反序列化为数据结构变量。

序列化意味着转换为磁盘上的文件,例如,将变量(数据对象、列表或字典/哈希)从应用程序转储到磁盘。反序列化则相反,将文件读入应用程序变量。

javascript 对象、python 字典、perl 散列或关联数组基本上是相同的概念,尽管我用 javascript 对象扩展了一下。任何使用键、值格式的数组,如 fruit_colors[‘apple’] = 'red '。此后,我将把这个数据结构称为散列。

最佳实践 1——JSON 适用于所有事情

尽可能使用 JSON 在应用程序和数据科学家之间共享结构化数据。为了以最大的通用性轻松做到这一点,在使用 ISO 日期格式保存到 JSON 之前,请始终将日期转换为字符串。我没有在我的 JSON 包中添加定制的 JSON 格式化程序来处理日期和其他非 JSON 的简单格式(例如,字符串、数字、数组、散列),我通常只是将其转换为字符串表示,并在反序列化时将其从字符串转换回日期。

JSON hash and array example:{
  "key": "value",
  "example_array": [
    "one",
    "two"
  ]
}

我通常将 JSON 序列化到带有缩进和换行的数据文件中,以使其更容易阅读,但您不必这样做。您可以将所有内容都放在一行中,没有多余的空格或换行符,以使其更小,尽管我发现这通常没有什么影响,因为如果 JSON 数据非常大,在存储或传输到另一个服务器时,您总是希望对其进行压缩。对于 REST API 服务器传输 JSON,你总要在 webserver 上开启 压缩

最佳实践 2 — JSONSchema

使用 JSONSchema 来描述你的数据集。即使您只是自己使用它,它也可以帮助您思考您存储的内容,并提供描述属性,以便于记录您的格式。这是描述易于共享的 JSON 数据的最佳标准方式,大多数编程语言都可以用它来验证数据集。

在 JSONSchema 中,并不是数据集验证的每个方面都可以被捕获,有些东西需要放到代码中,但是它可以捕获数据结构定义的大多数方面。

我将经常构造我的 JSONSchema 定义,以使用 JSON 数组 JSONLines(下面解释)格式——这里的例子是。

如果您认为 JSONSchema 文件具有更广泛的公共利益,那么 JSON Schema Store 是发布 JSON Schema 文件的好地方。

我已经开始在我的 JSON 数据中添加 JSONSchema 定义的 url,这样我就有了用于该数据的模式定义的引用——特别是如果它是一个长期演化的数据集。

最佳实践 3——YAML 是

使用 YAML 进行 JSONSchema 定义。是的,JSONSchema 定义的 YAML。一般来说,要使用 JSONSchema 验证 JSON,您必须首先将 JSONSchema 定义文件加载/反序列化到您的应用程序中进行验证,因此使用什么格式并不重要。YAML 允许评论(JSON 不允许),对人类来说更容易阅读。

# You can have comments in the YAML file like this
key: value
example_array:
  - one
  - two

有一个很好的 python 包叫做 json2yaml ,它很好地完成了 json 和 yaml 文件之间的来回转换,同时保持了散列的顺序。如果您将 YAML/JSON 用于配置或者有标准的数据顺序,那么保持它的自然顺序会很方便。大多数 JSON/YAML 转换器将按字母数字顺序对数据进行排序。当来回转换时,你会丢失 YAML 的评论,所以我倾向于使用 YAML 作为真实的原始来源,并根据需要转换成 JSON。

我更喜欢将 YAML 用于人类可读的、可维护的配置文件。这种模式的一个例子是使用 YAML 编写 BEL 语言规范文件,然后将它转换成一个增强的 JSON 文件,为了方便起见,还以编程方式生成了附加部分。

最佳实践 4 — YAML 第一

除非您已经检查了 YAML 解析器的性能,否则不要将 YAML 用于与性能相关的任务。我没有意识到 Python 中的 YAML 解析器比 JSON 慢这么多。在 Python 3.4+中, JSON 的执行速度几乎与任何内置序列化格式(例如 pickle) 一样快。

读入大约 1000 行长的 BEL 规范 YAML 文件大约需要 150 毫秒。读入该文件的增强 JSON 版本大约需要 6 毫秒,这个版本大约长了 50%。YAML 是一种比 JSON 更复杂的解析结构,而且它也没有那么受欢迎,所以性能调整较少。

因此,YAML 非常适合在需要大量人工交互和编辑的地方使用,并且不会造成瓶颈,因为它必须在高吞吐量的数据管道中反复解析。

最佳实践 5 — JSONLines

JSONLines 是一种将较小的 JSON 数据一起存储到单个数据集的好方法,当您想要减少处理的内存开销或能够处理流数据时。JSONLines 的概念是数据文件的每一行都是一个单独的 JSON 对象,如下所示。

JSONLines - each line below is a separate JSON object{"key": "value1", "key2": "key2value"}
{"key": "value2", "example_list": [1, 3]}
[1, 5, 10]

我处理术语数据集中的术语(BEL 名称空间),这些术语可能有数百万个条目。如果我使用一个像下面这样的顶级数组,我必须将所有这些项读入内存来处理它们。因为我一次只需要处理一个术语,所以我可以使用 JSONLines 格式一次读取一行(一次读取一个术语),并使我的内存开销降低几百万倍。

JSON array of objects:[
  {
    "key": "value1"
  },
  {
    "key": "value2"
  }
]

如果我在一个 JSONLines 文件中有多种类型的数据对象,我将添加一个顶级键来标识每种类型。一个例子是:

{"metadata": {"author": "William Hayes", "date": "20180101", ...}
{"nanopub": {"id": 1, "citation": {...}, "assertions": {...} }
{"nanopub": {"id": 2, "citation": {...}, "assertions": {...} }

处理 JSONLines (*)的一些小技巧。jsonl)文件。我将较大的 JSONLines 文件进行了 gzip 压缩,并使用了基于以下内容的自定义 bash 函数:

gunzip -c $1 | jq . | more;

要 gunzip 到 STDOUT,使用 jq 使用缩进/换行格式化每个 line/JSON 对象,并一次查看一页。我个人发现 gzip/gunzip 在速度/压缩方面是一个很好的平衡。Bzip2 压缩效果更好,但速度慢得多。你的需要可能与我的不同。

最后的想法

谢谢你,谢谢你,谢谢你道格拉斯·克洛克福特指定 JSON 并帮助它取得今天的成功。我经历过 CSV、ASN.1、SGML、XML 和各种风格的定制数据格式,无法在这里充分表达我对 JSON 的热爱。各种语言的 JSON 解析器、JSONSchema、YAML 等的创建者对 API、数据科学和信息学产生了巨大的影响,但这种影响还没有得到充分的认识。

我的大脑只是一个神经网络

原文:https://towardsdatascience.com/my-mind-is-just-a-neural-net-769fb82f39c1?source=collection_archive---------9-----------------------

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

Photo by Drew Graham on Unsplash

但是什么是神经网络……我的思想是什么?

哲学应该和数据科学成为更好的朋友。需要明确的是,数据科学也应该更好地与哲学合作。当分析大数据引发的伦理困境时,很明显,道德哲学对于改善数据科学至关重要。不过这是另一天的讨论。今天,是时候讨论相反的情况了;数据科学如何改善哲学?

本文将解决的问题:

  • 什么是神经网络?
  • 人的心灵是什么,我的思想是什么?
  • 自由意志存在吗?
  • 我的思维可以分解成数学算法吗?
  • 强 AI 真的可能吗?
  • 看起来像人类的机器人能像我们一样感受情感吗?
  • 明天的中奖号码是多少?

好吧,也许不是最后一个。但你的关注给了我一个+分。

为了讨论大脑与神经网络的关系,我想确保每个人都在同一页上。不需要成为专业的数据科学家或者哲学家国王才能参与。我将在高层次上解释神经网络和身心问题,这样概念就不会掩盖潜在的顿悟。系好安全带,打开你的思想,坚持你的倾向;我向你呈现:身心问题

我是我的思想吗?我是我的身体吗?它们是一样的吗?

二元论对一元论

有两种选择。要么我们的身体和我们的思想是两个不同的实体[二元论],要么它们是同一的[一元论]。自从宗教创立以来,哲学家们就一直在争论这个问题。如果思想和身体是分离的,那么有可能存在一个永恒的灵魂能够比腐朽的尘世自我活得更久。如果思想是身体,我们的思想、信仰和记忆将和我们的碳生命同时死亡。

你的一分钟心灵哲学速成班

  • 二元论认为我们的头脑是由一个独立的东西组成的,而不是大脑。问问勒内·笛卡尔、基督徒或任何相信灵魂不朽的人。
  • 消除主义是一种理论,认为任何精神状态实际上都是它的科学对应物。例如,如果我感到疼痛,消除师会说我只是在体验我的 c 纤维燃烧
  • 行为主义暗示精神状态=在特定环境下以特定方式行事的倾向。(又名:我们只不过是刺激和反应的生物)。
  • 功能主义是行为主义和二元论的伪结合。功能主义者认为,人类的思想是刺激、反应和某种介于 和 之间的东西。
  • 大脑的计算理论(CTM) 是一种认为人类大脑是一台计算机的理论。想想图灵机。
  • 连接主义认为 CTM 没有准确地捕捉到人类的思想。相反,连接主义者认为人类的大脑是一个神经网络。这将是一个重要的理论焦点。

你的神经网络速成课程

为了将神经网络从一个时髦词汇变成可理解的词汇,考虑一下这个煎饼比喻。假设我是一个假设的煎饼鉴赏家。每个星期天,我都会拿出酪乳和煎锅,试图做出完美的令人垂涎欲滴、黄油融化、感官超负荷的烙饼。但是,经过多年的练习,我似乎还是做不出比脆饼更好的东西。

我决定唯一合理的解决方案是外包我的煎饼制作能力;我要训练一个神经网络来帮我做这件事。我需要一些东西:

  • **训练数据集:**指定输入特征及其相关结果的表格。对于我的煎饼,桌子可能看起来像这样:

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

(Real training data usually consists of MANY more trials than this example)

  • 神经网络层:神经网络由三层组成。输入层、隐藏层和输出层。对于我的第一个煎饼创作试验,它看起来像这样:

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

暂时不要过于关注隐藏的东西,我们会仔细研究的。注意红线的意义。一层中的每个单元都连接到下一层中的每个单元。

  • **重量:**每条红线都有一个相关的重量。首先,这些权重是任意的,通常只是随机数。这些将向前传播到隐藏层,给隐藏层中的每个单元一个权重。请看下面的视觉帮助:

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

The numbers in the hidden stuff aren’t exactly correct yet, but we’ll go over that next.

通常最简单的连接权重是介于-1 和 1 之间的数字,但是对于这个例子,连接权重被随机选择为 8、2 和 1。这是“第二面上的分钟”功能的首次试用输入。

  • 激活函数:这个函数告诉我们可以在隐藏层中放置什么。对于上图,激活函数将是连接权重乘以单位权重的和。∑( 连接权重 x 单位权重)。让我们称之为 x。通常,激活函数只是使用 x 作为它的输入。

例如,假设激活函数= f,那么 f(x)会告诉我们在“隐藏的东西”中放入什么数字(记住 x 是所有输入权重的总和)。文字令人困惑,所以看一下这个视频来澄清一下:

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

This is our pancake neural net with two input units. [f is our activation function]

神经网络各层的工作方式是,这个过程将贯穿所有隐藏层。这被称为正向传播。最后,输出单元的激活函数将导致神经网络吐出“好煎饼”。

为了让视觉效果更容易理解,我把“好煎饼”放在了输出单元的内部。实际上,输出单位看起来更像 f(5.4)。然后,基于一些算法( ReLU 是常见的)f(5.4)=‘好煎饼’。

请记住,可能有更多的输出单元。也许是 f(5.4),f(1.2),f(3),等等…然后算法会考虑所有这些输出单位,并吐出“好煎饼”。为了简单起见,我们现在坚持使用一个输出单元。

  • **训练我的神经网络:**在第一个视觉中,神经网络猜测六个提供的输入导致“好煎饼”输出。但是如果它猜错了呢?神经网络最显著的特征之一是它能够学习。比方说,我的第一次煎饼试验实际上是一个可怕的,干燥的,烧焦的烙饼。然后神经网络猜错了。

那么我们如何解决这个问题呢?通过称为反向传播的过程,神经网络能够修改连接权重,以便它在未来更有可能猜出正确答案。理论上,随着我提供更多的训练数据,神经网络应该从它的错误中学习,直到它变得尽可能准确。

唷,那是许多技术术语。现在我们明白了我们的思维可能是什么,以及神经网络是如何工作的……但是我的思维是如何工作的呢?

连接主义

仔细想想上面的例子。基于许多试验,神经网络最终将能够非常准确地确定哪些因素导致了“好煎饼”,哪些因素导致了“坏煎饼”。

人类不就是这样学习的吗?如果我决定不把我的烹饪技能外包给神经网络会怎么样?下面是将会发生的情况:

根据我的第一次试验,我用锅上的黄油做一个薄饼,在第一面放一分钟,翻转一下,在另一面放 30 秒。我咬了一口。这煎饼不错。正向传播。

在第二次试验中,我感觉有点冒险。我锅里不加黄油,煎饼第一面放两分钟,翻面,另一面放一分钟,用锅铲压平,咬一口。不需要火箭科学家就能发现我咬了一口难吃的煎饼。焦了,平了,干了。

现在我知道了,从试验一到试验二,我至少改变了一件事,导致我的煎饼从好变坏。也许在我的第三次试验中,我会做和第一次试验一样的事情,但是我只会改变其中一个制作煎饼的属性。反向传播。我又做了一个好吃的煎饼。

最终,如果我做得足够多,理论上我会成为一名煎饼制作专家。我将创建一个非正式的心理算法,它能理解热量、每一面的烹饪时间和抹刀展平的哪一个可变性会带来好的煎饼;哪种组合会导致糟糕的煎饼。也许我的朋友会开始信任我的厨艺。看起来我的大脑就像神经网络一样工作。或者更确切地说,我的大脑像一个联结主义网络一样工作。

除了煎饼混合物,还有其他一些支持连接主义的引人注目的论点。其中一个最大的论点是神经网络擅长我们擅长的事情,而不擅长我们不擅长的事情。我说的是面部识别、心算、记忆等。神经网络和我们的大脑一样面临着同样的问题。他们也非常擅长从人群中识别熟悉的面孔。

在这一点上,连接主义者的论点看起来有点前途。但是,如果我的思想可以被演绎成一个算法…我甚至能对自己的决定负责吗?自由意志存在吗?

生命的意义

为了回答关于自由意志的问题,我们必须回到我们的老朋友笛卡尔那里。对于二元论的支持者来说,自由意志的存在是因为我们的思想(灵魂)与我们的大脑(身体)是分离的。对于几乎所有其他事物的支持者来说……我们的思维只是一种行为,一种计算,或者是加权特征的组合。

对一个联结主义者来说,如果我相信天空是蓝色的,我的思想可以被推导为一个输入的特征,它引导我去相信它。我对蓝色和天空的知识与我的视觉皮层相结合,通过我的神经递质(类似于上面的图表)并行发送,直到我达到 f(5.7)。或者说,f(5.7) =我对天空是蓝色的信念。

还有两个问题需要解决:

  1. 强 AI 真的可能吗?
  2. 看起来像人类的机器人能像我们一样感受情感吗?

理论上,随着神经网络变得越来越高效和精确,它们变得越来越像人脑。尽管联结主义似乎是逻辑上最有前途的身心理论,但上述问题只有在与心灵的计算理论(CTM)相关时才能得到回答。弱人工智能每天都围绕着我们,但强人工智能还没有被制造出来。

记住 CTM 类似于图灵机。它解释了人类的思维是如何缩小到 0 和 1 的微小集合的。有了 CTM,世界的句法(就像煎饼煎到一边的时间)与我们的神经递质结合,创造了世界的语义(我的烤焦的煎饼味道很差)。语法是可观察的信息,语义是这些信息对我们的实际意义。

过去,人类认为强人工智能和人工智能中的情感理解将源于语义理解。现在,机器人、聊天机器人和人工智能代理只能处理信息。没有任何迹象表明更高层次的理解正在形成。

为了进一步解释,想象一下这个思想实验(被称为中文室)。在这个实验中,有一个人在一个堆满文件柜的房间里。从理论上讲,这些柜子里堆满了如何用中文回答问题的英文说明。当房间里的人得到一个塞在门下的中文短语时,他们会查找如何回答给定问题的说明,写下新的汉字,然后塞回门下。

在旁观者看来,这个房间里的人中文很流利。他们能够看到中文问题,并提供中文回答。这个人会通过图灵测试。但是,房间里的人真的懂中文吗?他们已经学会了如何根据书面汉字的语法做出反应,但他们对教室外的语言一无所知。这里不涉及任何语义。

同样的论点也适用于人工智能。即使机器人很可能会通过图灵测试,看起来好像它们能理解我们,但它们的机器人大脑真的能理解我们吗?如果人工智能是使用基于指令的解决方案创造的,那么机器人的理解能力将会和中国房间里的人一样差。虽然人工智能代理可能会告诉我它“感到悲伤”,但这种说法只是一种编码反应,还是它真的感到悲伤?真正的强人工智能似乎更适合像神经网络这样的东西。

在这一点上,消除主义者会认为语义学根本不存在。人类被我们自己的大脑欺骗了,就像我们在炎热的日子里在沙漠中看到海市蜃楼一样。我们认为我们在比语法更高的层次上理解世界,但是我们没有。我们的大脑实际上只不过是一组指令,或者说是一个连接网络。

等一下

哇…所以根据 CTM 和联结主义,心灵只是一些科学上可观察的实体。我的思想不存在形而上学的、神圣的维度。人生毫无意义。哲学和数据科学终于在沙盒里一起玩了,但我不知道我是否还想让它们玩下去!

别担心。现在还不到否认自由意志的存在并屈从于悲观的、决定论的人生观的时候。是的,神经网络正在变得更好,但这并不一定意味着连接主义是强人工智能的一站式商店。

反对连接主义的论点

首先,神经网络的学习时间比人类长得多。长度在这里不一定指时间,而是指审判。虽然网络通常需要数十万个样本才能有效学习,但人类可以在明显更少的试验中学习类似的任务;而且通常更准确。

二、神经网络纠结于 合理性、系统性、和结构 。基本上,这意味着人类在语言方面更擅长逻辑和结构。以这句话为例:

“如果丹尼尔剪了头发,约翰会哭的。丹尼尔剪头发。”

作为人类,我们可以从逻辑上推断出约翰现在会哭。然而有趣的是,神经网络与这个概念有冲突。同样,如果丹尼尔理发,神经网络倾向于认为约翰会而不是哭。正如命题逻辑已经证明的那样,不一定是真的。

现在怎么办?

这取决于你。哲学家们就这个问题争论了数百年是有原因的。神经网络和弱人工智能正在慢慢填补一些有前途的理论中的漏洞。这并不意味着它们是唯一的答案。

二元论和决定论将永远处于战争状态。不能被观察到的事物(比如:思想)提供了科学知识的空白(比如:“什么是思想?”).在历史上,宗教充当了一个“神的缺口”。它填补了科学知识的空白。随着科学的进步,越来越少需要宗教来解释。在人工智能领域,科学的空白在历史上一直被哲学填补。正如宗教的情况一样;似乎随着科学越来越好,某些哲学理论陷入了困境。

我的建议?尽量不要想太多。我们的语义就是我们对它们的理解。也许我的心灵是一个无意识的存在,可以自己做决定,有自己的信仰。也许我的脑子里只有 0 和 1。不管我的想法是真实的还是海市蜃楼,我要继续过我的生活;我只能做到这样了。

我叫伊尼戈·蒙托亚。一个与语音识别应用共情的案例。

原文:https://towardsdatascience.com/my-name-is-inigo-montoya-a-case-for-empathizing-with-speech-recognition-apps-622a4b8c4ea1?source=collection_archive---------3-----------------------

你好。我的名字叫蒙古朋友。叹气。靛蓝拉托亚。Grrrr。伊尼戈蒙托亚

有时候,在使用语音识别应用程序时,你需要竭尽全力保持冷静。对我们许多人来说,名字是最糟糕的压力源。

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

credit: rabbittooth

我住在旧金山湾区,所以我在一个大熔炉里工作和玩耍,这里的多样性是一个美妙的现实。涉及到人名的时候更是如此。事实上,没有比湾区更好的名字识别试验场了。

作为一名听写超级用户,我每天都在滥用谷歌、苹果和亚马逊的助手。在过去几年中,我发现语音识别引擎准确识别姓名的能力差别很大:

☀️ 完美无瑕。苹果和谷歌在听写过程中都能很好地识别我朋友的名字。他们总是毫不费力地“得到”像乔纳森、多琳、乔斯和迈克这样的名字。

🌤**适中。*一大堆名字被认出来了 iff 我努力把名字念得太多了:Siobhán,Valeriu,Cynan,Margot,Rajeev,等等。如果这不起作用,我绝对必须过度“英国化”或过度“美国化”他们的发音,以加快名字识别的速度。像这样的名字足够独特,即使我的发音不完美(事实并非如此),将它们与我的地址簿中的条目进行匹配也应该相当简单。

🌧惨不忍睹。此外,还有“其他”的名字,如 Ritesh、Andrei、Karuna、Jernej、Tudor、薛、Rohit,当然还有我自己的名字:Lucian。后者是荒谬的,因为所有这些服务在任何时候都知道用户是谁。即使我/我们每天都提供数量惊人的个性化训练数据,这些名字还是被屠杀、变形或完全遗漏了。有时这样的打嗝很好笑,但绝对不是当你试图完成工作的时候。

自动语音识别(ASR)算法一直在改进,虽然我毫不怀疑这些打嗝会消失,但与此同时,这让我们用户感到非常沮丧。为什么 speech2text 应用程序会犯这些错误并不明显,所以我认为有必要探究一下导致这些错误的一些因素。如果你想深入了解 ASR 的工作原理,请阅读我的《懒狗入门》:

[## 语音识别:懒狗初级读本

我和一个好朋友最近在吃饭时聊起了语音识别应用。是的,我们就是那些人。的…

medium.com](https://medium.com/towards-data-science/speech-recognition-a-lazy-dog-primer-6504ab4dccaf)

从大卫到 Uvuvwevwevwe

作为数据科学家和软件工程师,我们的第一直觉是改进系统、发展架构和创建更好的算法。这不是一个愚蠢的努力:提出精细的语言模型、聪明的深度学习算法和花哨的优化技术有重大的好处。

然而,我是一个大风扇追求低挂水果第一。我们都这么说。在这种情况下,唾手可得的成果就是理解你的用户:他们是谁,他们的交流模式是什么,他们的背景是什么,等等。所有这些必须告知您如何收集和使用训练数据,如何个性化您的应用程序,以及如何通过上下文调整语音识别。

考虑到这一点,让我们来看看在姓名的准确语音识别中可能产生影响的关键因素。

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

credit: Roy Jones

1.口音

英语口语变化很大。取决于你在哪里长大,你会强调不同的音节,强化某些辅音,偏向某些元音,并且经常使用不同的单词和表达。仅在美国就有大量的方言:从新奥尔良的 Yat 方言到波士顿特有的说话方式。我在匹兹堡的时候,我喜欢它的地区语言特色:“尹兹来了吗?

如果你缩小视野,听听来自世界各地的母语人士,比如英国、加拿大、新西兰和印度,英语语音模式的差异会更大。然后,进一步扩展,考虑非英语母语者和他们无数的口音——我应该知道!

2.发音

人类既古怪又有缺陷。当我们的大脑失灵时,我们经常或偶尔发错单词的音。我们希望语音识别应用程序能够处理轻微的语言障碍,但这并不容易。根据美国国家卫生研究院的数据,每 12 名 3-17 岁的美国儿童中就有 1 名患有与语言相关的疾病。最后,这是一个统计和收集足够的训练数据来覆盖角落情况的游戏。

疲劳是你发音不佳的另一个原因。我不知道你是怎么想的,但是当我连续 48 小时不睡觉时,我的语言能力会大大下降——我评估这个事实的能力也是如此。

最后,你可能是全国拼字比赛冠军,但有时你会被难念的名字绊倒。你见过 Uvuvwevwevwe 吗?

3.名称频率

常用名字对于语音识别 app 来说很容易。他们看到的有这个名字的人越多,他们积累的训练数据就越多,从而有助于更好的机器学习识别模型。然而,近几十年来,父母们已经对现有的名字池产生了明显的不满,并开始为他们的孩子引入新的、独特的名字。

当人工智能助手第一次遇到像 Finola、Pippa 和 Tanaquil 这样的名字时,他们只能做这么多。低频名字很难准确识别,但我希望应用程序集成和深度个性化能让我们做到这一点。例如,如果我一天和 Finola 说两次话,一天和 Tanaquil 发 20 次短信,那么期望这两个名字的识别是完美的,这并不是不合理的。

4.姓名拼写

在给孩子起名时,数百万父母也想出了极具创意的拼写方法,这无疑是为了欺骗语音识别应用程序。

有些名字与现有的名字或它们的近邻在语音上完全相同,但拼写却完全不同。你只需看看 Alexzandre、Braedyn 或 Izobel 就能感受到虚拟助手的痛苦。

5.多语言环境

随着全球流动性的增加,世界变得更加多样化。毫不奇怪,人们倾向于混合多种语言:例如他们的母语和他们居住国家的语言。

My kids are comfortable with a mixture of English, Romanian, and a smidge of beginner Chinese peppered in for good measure. “What do you think of the supă cu găluște? 好吃吗?“ They won’t bat an eye if they hear that, but for now virtual assistants still have trouble with “can you play 听妈妈的话”

这种现象在名字上最为明显,人们使用英语等主要语言,但用他们的母语正确地读出他们家人和朋友的名字。

试试这个:告诉你的虚拟助理给你的朋友里卡多发短信。发出命令时使用清晰的英语,但随后改用你最好的葡萄牙口音,发出“里卡多”的音。我会等的。

回到移情

我们生活在一个混乱的世界。我们随时都在应对不确定性,我们与身边的每个人和每件事谈判,以把事情做好。我们相互交流和沟通的方式就是如此。演讲是一个完美的不完美交流的例子,它只拥有足够的信号来传达预期的意思。知道了这一点,语音识别领域已经达到这种质量水平,真是不可思议。

每当我抱怨听写质量有多差时,我都会后退一步,看看我现实生活中的星际旅行通讯器、三录仪和通用翻译一体机,迫不及待地想看看明天会带来什么。


如果你喜欢这个涂鸦,点击👏在下面,所以其他人可以在媒体上阅读并享受它。

卢西恩·利塔 是 Yoyo Labs 的创始人,之前是 BlueKai、Intuit 和西门子医疗保健公司 Level Up Analytics 和 data leader 的创始人。

如果你喜欢这篇文章,点击💚以便其他人可以在媒体上看到它。

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

我的侄子 vs 曼梯·里

原文:https://towardsdatascience.com/my-nephew-vs-ml-9e4519af499a?source=collection_archive---------1-----------------------

我 4 岁的侄子 Yali 现在非常喜欢口袋妖怪。他有多个口袋妖怪玩具和一些 TCG(训练卡游戏)卡。

前几天,亚力发现了我藏起来的恶心的 TCG 牌,现在他的牌多得数不清了。

问题是雅丽太小了,还不知道如何玩真正的游戏,所以现在他发明了自己的游戏。游戏的目的是根据卡片的类型(口袋妖怪、能量和教练卡)对卡片进行分类。

他没有问我怎么知道卡是什么类型的,他拿了几张卡,问我是什么类型的。在我回答了几个问题后,他能够根据卡片的类型(有多个错误)来区分它们。

那一刻我意识到,我的侄子基本上是一个机器学习算法,我作为叔叔的任务是为他标记数据。

作为一个极客大叔和机器学习爱好者,我开始编写一个将与 Yali 竞争的程序。

这是典型的口袋妖怪卡片的样子:

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

source: pkmncards

对于一个知道如何阅读的成年人来说,辨别卡片的类型是很容易的,因为它就写在卡片的顶部。但是亚力才 4 岁,他不知道怎么读书。简单的 OCR 会很快解决我的问题,但我不想做任何假设。所以我照原样拿着这张卡,用 MLP 算法把它扔给一个神经网络。

获取数据非常简单。多亏了 pkmncards ,我可以下载多张卡片的图片,这些图片已经被分成了 Yali 的类别。

机器学习算法需要特征,而我的特征就是图像像素。使用 RGB 彩色图像,我将三种颜色转换成一个整数。

由于图像大小不同,我不得不将它们标准化。在找到数据的最大宽度和高度后,我给小图片添加了零填充。

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

真正交易前的快速质量保证周期。我随机抽取每种类型的两张卡片,然后进行预测。每一类只用了 100 张卡片,拟合速度惊人的快,预测也很糟糕。然后,我为每个类别抽取了 500 个样本(不包括能源类型,它只有 130 个样本),并让拟合运行。

内存不足异常。在云中运行拟合代码应该可行,但我想找到一种使用更少空间的方法。最大的图像尺寸是 800x635,这太大了。调整图像大小解决了我的问题。

对于真正的测试,除了常规的卡片,我还添加了我在上面画画、剪成两半、画上形状、从我的手机(它的相机很差)上拍一张照片以及其他特殊效果的卡片。重要的是,我没有用这些卡片训练网络。

我试过一千多种型号(准确的说是 1533 种)。不同的图像尺寸、隐藏层数(最多 3 层)和层长度(最多 100 层)、图像颜色、读取类型(全图、上半部分、每隔一个像素等)。

在对所有模型进行了几个小时的拟合后,最好的分数是 25 张卡中的 2 个错误(少数模型有这个分数,但每个模型在不同的卡上都失败了。所有这些都是图像的灰度版本)。

1533 个模型中有 9 个出现了 2 个错误。

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

如果我将我的阈值设置为高于 44%的一致,模型的组合将给我 1 个错误的分数。对于测试,我将使用 50%的阈值。

让雅丽玩了一个月,我回来测试。

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

赢了!23 个给机器,21 个给人类。

如你所见,错误只发生在能量卡上。pkmncards 只有 130 张能量卡,而不是其他类型的数千张。可供学习的样本更少。

问雅丽他是怎么认出一些卡片的,他告诉我他在电视节目或书中看到过一些口袋妖怪。这就是他如何认出雷丘的耳朵或者知道蒸汽是水的原因。我的程序没有那种数据,我仅有的数据是卡片。

当我们的英雄在口袋妖怪挑战赛中击败雅丽并获得 ML 徽章时,他开始了他的下一次冒险。

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

从 webdev 到计算机视觉和机器学习

原文:https://towardsdatascience.com/my-next-two-years-de448d3141a?source=collection_archive---------6-----------------------

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

在过去的四年里,我一直有一个想法,那就是我要创办一家公司。潜在的感觉是,我想做一些我能热情地承担全部责任的事情。虽然这一直是我的愿望,但我还没有采取具体措施来实现它。相反,我开发了一个职业写作软件,并学习承包市场。我没有制定商业计划和试图筹集资金,而是建立并发布了许多副业项目。每个项目都让我对感兴趣的技术或领域有了更多的了解。

我已经积极地投入到任何摆在我面前的任务和机会中。因此,我能够在媒体、艺术、技术和社会公益领域遇到无数才华横溢、令人惊叹的人。

大约在移动开发变得重要的时候,我开始了 web 开发。我看到 JavaScript 从与 html 和 css 互补的技能组合,发展成为理解似乎永无止境的框架融合所需的主要语言。

我所听到的有趣的项目都与建立新的社交网络或建立现有的社交网络有关。移动定位技术风靡一时,但尚未完全成熟,照片共享服务的影响力也在不断增长。我甚至自己制作了一个基于照片的 iOS 应用程序,同时非常有意识地努力避免不必要的重新创建 Instagram。

下一步是什么

最近,我对地图技术和更多实时相关应用的出现感到非常兴奋。当我注意到 Hadoop 和 Spark 等“大数据”开源项目的流行时,我并不觉得自己有什么可以尝试的。我尝试创建一个在线市场平台网站。我看到了 X 月箱服务的兴起,并考虑到创建一个有价值的物流服务有多难,这种服务可能属于 X 月箱或更有吸引力的 uber-for-X。我甚至玩起了物联网设备的可能性,以及如果我验证了一个值得制造的想法,我可能会如何着手生产一些东西。我研究了蓝牙规范、能量传输机制,并想知道我能把哪些有趣的艺术导向的应用程序拼凑起来。总的来说,我从来没有投入足够的精力去充分看到我探索的成果。然而,所有的过程对我自己的成长都是有价值的。

现在,感觉好像有更多的东西需要探索,虽然我不知道如何探索,但我可以清楚地感觉到前进的道路将会更大。

我对区块链、机器学习和新的增强/虚拟现实感到兴奋。在所有新兴技术中,我花了最多的时间试图理解和利用机器学习的实际用途。虽然我在理论上理解区块链,但我对该产品没有任何深厚的感情。我没有被反体制/支持主权的意识形态所驱使,这些意识形态助长了加密文化。我也不觉得 AR 或 VR 领域像我认识的那些“全押”进去的人那样有趣。我喜欢用虚拟层补充物理空间的想法,但还没有任何“啊哈!”关于如何执行流程的时刻。

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

计算机视觉

图像分析和可以通过机器学习提取的看似有趣的数据继续激起我的兴趣。此外,交通领域的变化让我确信,实时位置相关图像分析数据将变得越来越重要。

学术界

我觉得学术界和私营部门在这两个领域都做了有趣的工作。在学术领域,我以前看到一些著名的大学做了很多形象导向的工作,但并没有立即引起人们的兴趣。围绕压缩、颜色等高度理论化的工作对我没有吸引力。围绕医学图像分析的工作似乎是一个很大的领域,但在我看来完全没有吸引力。我看到了许多围绕 2D 图像到 3D 空间转换领域的研究项目。在一项孤立的研究中,这些 image-to-X 项目并不有趣,但这些研究在现实世界中的应用似乎值得探索。

我想花大量的时间来充分了解正在进行的图像相关研究的学术前景。我认为回顾美国和世界各地的顶尖大学对我自己和我可能做的任何事情都有很大的启发。

我试图确定回学校继续深造攻读硕士学位是否值得。从我有限的接触来看,我还没有找到为什么这很重要的原因,但是我可以想象固定的时间专注于一个孤立的话题会非常有益。和志同道合的人在一起的机会似乎是值得的。

私营部门

我一直着迷于将相机用作多用途传感器的想法。现有的面向软件的计算机视觉任务似乎很少被探索。这是我想花更多时间为自己规划的事情。较新的有趣应用,如自动驾驶汽车,以及围绕物体识别的改进令人着迷。我知道还有很多其他领域的兴趣让这个领域值得探索。我想了解一切,从卫星到安全摄像头,从广告到房地产,从自动驾驶车队到增强现实摄像头。

从“看看 20 年后可能存在的东西,问问自己如何把它应用到今天”的角度来看,这似乎是我最感兴趣的领域。我希望投入大量时间来了解未来的机会、生态系统以及应用于现实世界问题时该领域的优势/劣势。

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

除了技术曝光,一个没有隐私的社会的哲学含义是可怕的。实际的商业价值感觉像是一个将继续发展到未来的领域,随着它,公众的理解。正如加里·周(Gary Chou)简明扼要地指出的那样,与其等待爱德华·斯诺登(Edward Snowden)相机技术的大数据时代,还不如消除社会理解和监管界限。也就是说,摄像头将不可避免地无处不在,来自摄像头的数据将被私营公司挖掘。我想站在决定这里能创造的积极价值的一边。

位置

测绘技术继续激起我的兴趣。当我在涂鸦时,我开始想了解更多,并想知道如何避免被抓住。“作家”会谈论警察如何使用地图技术来锁定艺术家。流传的笑话是,一个艺术家最大的粉丝是警察。他们有最多的照片和一个人所做的所有工作的最大记录。我记得城市是如何通过从一个人身上找到所有被报道的“标签”来抓住艺术家的。通过绘制位置图,通常可以推断出艺术家的家附近,整体调查范围明显缩小。这是 15 年前。我不知道这种数据分析的官方流程叫什么,但我肯定从那以后它有所改进。

我可以想象将同样的分析模式应用于任何其他数据集的价值,无论是社交媒体数据还是商业行为。我想加深对这一领域的了解。我想,围绕自然资源勘探中常用的地理空间分析,有很多东西需要学习。我想更多地了解如何利用卫星。这是一个在过去永远无法接触到的超级大国,除非你是一个民族国家。对冲基金现在通过分析世界各地的停车场和运输车辆,使用卫星图像来分析零售业的供求关系。这里与其他行业的相似之处似乎同样无穷无尽且尚未开发。随着地面上到处都采用摄像机,我想象随着时间的推移,同样的分析手段将非常有价值。

我想投入更多的时间来理解随着时间的推移围绕地理空间数据的整体问题。我想象,随着时间的推移,当这与实时图像分析相结合时,会有很多机会。我想进一步了解私营部门的应用和最适合实施这些技术的学术领域。

全部的

我滑入编程的时候,让我有可能比当时的在职者领先一步。我觉得现在,再一次,我在一个地方,我过去的经验给了我独特的见解,我可以进一步探索。特别感兴趣的领域,影像分析和地理空间数据,似乎值得理解,而且现在和以前一样容易接近。鉴于我的个人生活和事业在经济上有保障,我将在接下来的两年里亲自探索和了解这些领域。我的目标是加深我的能力,看看这些领域如何被用于商业收益。我将把我的视野深化到学术研究的前沿,私营部门的实践。理想情况下,通过这一探索过程,我可以为那些也发现自己感兴趣但不确定如何进一步探索这些领域的人记录我的发现。

感谢 Gary Chou 建议写这篇文章并帮助综合想法。感谢 Jihii Jolly 修复了剪辑噩梦。

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

我对带有交互式代码的奇异值分解的笔记(彼得·米尔斯)

原文:https://towardsdatascience.com/my-notes-for-singular-value-decomposition-with-interactive-code-feat-peter-mills-7584f4f2930a?source=collection_archive---------2-----------------------

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

GIF from this website

我想更深入地了解奇异值分解,它是如何完成的,以及我们如何用 python 来实现。

请注意,这篇帖子是为了帮助我理解机器学习背景下的线性代数。具体来说就是奇异值分解。

线性代数简单概述/Numpy/Scipy 用户警告

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

Image from this website

如果有人想重温线性代数的知识,请点击这里阅读一篇的博文。这篇文章的作者在解释线性代数的基本机制方面做了大量工作。

Paper from this website

对于 Numpy / Scipy 用户,请注意我上面链接的 pdf。那篇论文的作者在为什么使用 Numpy 计算特征值可能不稳定的原因上做得很好。(我将在这篇文章的后面部分讨论这个问题,但是使用 Numpy 的结果可能不稳定。)

奇异值分解理论综述

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

Image from this website

对于奇异值分解的理论解释,请查看这篇博文的,它实际上是关于奇异值分解的最好的博文之一。在这些博客文章中,我想尝试解决一些彼得给我们例子。(但首先我们需要看一些给定的等式,彼得把 SVD 表示为 A = USV。t)

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

Image from this website

虽然我不能 100 %确定这些答案是否正确,但下面是我解决给定问题的尝试。

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

S 之所以是正数,是因为它是平方的。在继续之前,我想谈一谈一个领域。就是这个问题"表明如果 m < n 最多会有 m 个非零奇异值。”。在实践中,我发现情况并非总是如此,因为在 python 实现中,我能够获得比矩阵 a 中较小维数更多的非零特征值。(下面是一个例子。)

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

作为上面的例子,对于给定的数据,当我计算每个矩阵(dot(A.T,A)和 dot(A,A.T))的非零元素的数量时,我能够观察到在某些情况下非零特征值的数量并不完全匹配。然而,非常小的值确实匹配成相同的数字。我怀疑这是由于 numpy 如何计算特征值。目前,我将 SVD 理解为在一个坐标系中表示原始数据 A,其中 U 矩阵度量每一行如何与其他行相关,V 矩阵度量每一列如何与其他列相关,而 S 度量这种相关的强度。最后,我想提一个真正帮助我的额外材料。

Paper from this website

请注意,我将遵循上述论文以及 Peter 博客文章中介绍的方法。

小矩阵奇异值分解

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

简单地说,我已经创建了一个(2,3)矩阵,如上所示,使用 numpy 线性代数库,我们可以很容易地计算矩阵 dot(A,A.T)和 dot(A.T,A)的特征向量。

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

下一步是按降序排列特征值,并相应地改变特征向量矩阵。同样,我们可以注意到非零特征值的数量彼此不匹配。然而,-2e-15 是一个很小的数字,我们可以丢弃它。

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

最后,使用创建的矩阵 U S 和 V,我们可以通过点积重建原始数据。我们可以将重构的矩阵缩放(减 1)以匹配原始数据,当我们创建一个相关矩阵时,我们可以看到如下所示。

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

通过查看前两行,我们可以观察到我们已经成功地重构了原始矩阵。

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

此外,我们可以采用 Peter 博客文章中介绍的方法,得到相同的结果。

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

大矩阵奇异值分解

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

接下来让我们在一个更大的矩阵上应用 SVD,特别是来自 load_boston 的数据。乍一看,我们可以看到我们有 506 个例子,每个例子有 14 列。

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

上面是生成的相关矩阵以及目标与 LSTAT(具有最高相关值的属性)的散点图。)

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

按照同样的模式,我们可以计算给定矩阵 a 的特征向量和值。

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

一个不幸的事实是非零特征值的不匹配,这似乎是使用 numpy 时重复出现的问题。

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

最后,我们可以计算重构矩阵,但是有一个问题。

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

重建的矩阵丢失了很多信息,如上所述,相关矩阵与原始数据集以及散点图不匹配。

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

然而,当我们使用彼得在他的博客中介绍的方法时,我们可以得到如下结果。

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

与原始值完全相同的相关矩阵和散点图。所以到目前为止,我认为通过 Peter 的方法执行 SVD 是一个更好的主意。

交互代码

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

对于 Google Colab,您需要一个 Google 帐户来查看代码,并且您不能在 Google Colab 中运行只读脚本,因此请在您的操场上创建一个副本。最后,我永远不会请求允许访问你在 Google Drive 上的文件,仅供参考。编码快乐!

有关小型矩阵的代码,请点击此处。
关于大型矩阵的代码请点击此处。

遗言

线性代数确实是一个很好的研究课题。

参考

  1. 线性代数直观指南-更好的解释。(2018).Betterexplained.com。检索于 2018 年 7 月 5 日,来自https://betterexplained.com/articles/linear-algebra-guide/
  2. 奇异值分解。(2018).YouTube。检索于 2018 年 7 月 5 日,来自https://www.youtube.com/watch?v=mBcLRGuAFUk
  3. 模块:数据—浏览 v0.15.dev0 文档。(2018).Scikit-image.org。检索于 2018 年 7 月 15 日,来自http://scikit-image.org/docs/dev/api/skimage.data.html
  4. sk learn . datasets . load _ Boston-sci kit-learn 0 . 19 . 1 文档。(2018).Scikit-learn.org。检索于 2018 年 7 月 15 日,来自http://sci kit-learn . org/stable/modules/generated/sk learn . datasets . load _ Boston . html # sk learn . datasets . load _ Boston
  5. 绘制交叉验证预测-sci kit-学习 0.19.1 文档。(2018).Scikit-learn.org。检索于 2018 年 7 月 15 日,来自http://sci kit-learn . org/stable/auto _ examples/plot _ cv _ predict . html # sphx-glr-auto-examples-plot-cv-predict-py
  6. Faces 数据集分解-sci kit-学习 0.19.1 文档。(2018).Scikit-learn.org。检索于 2018 年 7 月 15 日,来自http://sci kit-learn . org/stable/auto _ examples/decomposition/plot _ faces _ decomposition . html # sphx-glr-auto-examples-decomposition-plot-faces-decomposition-py
  7. 框架,N. (2018)。规范化熊猫数据框的列。堆栈溢出。检索于 2018 年 7 月 15 日,来自https://stack overflow . com/questions/26414913/normalize-columns-of-pandas-data-frame
  8. seaborn . heat map-seaborn 0 . 8 . 1 文档。(2018).Seaborn.pydata.org。检索于 2018 年 7 月 15 日,来自 https://seaborn.pydata.org/generated/seaborn.heatmap.html
  9. matplotlib?,H. (2018)。如何改变用 matplotlib 绘制的图形的大小?。堆栈溢出。检索于 2018 年 7 月 15 日,来自https://stack overflow . com/questions/332289/how-do-you-change-the-size-of-figures-drawn-with-matplotlib
  10. Python,H. (2018)。如何在 Python 中指定绘制数据帧的 x 轴和 y 轴?堆栈溢出。检索于 2018 年 7 月 15 日,来自https://stack overflow . com/questions/45738773/how-to-specify-x-y-axis-for-plotting-data frame-in-python
  11. 法,一.(2018)。使用 pandas plot 方法设置图形大小时不一致。堆栈溢出。检索于 2018 年 7 月 15 日,来自https://stack overflow . com/questions/42215252/consistency-when-setting-figure-size-using-pandas-plot-method
  12. 熊猫。data frame . plot-pandas 0 . 23 . 1 文档。(2018).Pandas.pydata.org。检索于 2018 年 7 月 15 日,来自http://pandas . pydata . org/pandas-docs/version/0.23/generated/pandas。DataFrame.plot.html
  13. NumPy . linalg . EIG—NumPy 1.14 版手册。(2018).Docs.scipy.org。检索于 2018 年 7 月 15 日,来自https://docs . scipy . org/doc/numpy/reference/generated/numpy . Lina LG . EIG . html
  14. NumPy . sort—NumPy 1.14 版手册。(2018).Docs.scipy.org。检索于 2018 年 7 月 15 日,来自https://docs . scipy . org/doc/numpy/reference/generated/numpy . sort . html
  15. 新泽西州 python(2018 年)。Python,numpy 排序数组。堆栈溢出。检索于 2018 年 7 月 15 日,来自https://stack overflow . com/questions/14875248/python-numpy-sort-array/14875366
  16. 订单?,E. (2018)。高效地对 numpy 数组进行降序排序?。堆栈溢出。检索于 2018 年 7 月 15 日,来自https://stack overflow . com/questions/26984414/efficiency-sorting-a-numpy-array-in-descending-order
  17. VanderPlas,J. (2018)。排序数组| Python 数据科学手册。jakevdp . github . io . 2018 年 7 月 15 日检索,来自https://jakevdp . github . io/python datascience handbook/02.08-sorting . html
  18. NumPy . diag—NumPy 1.14 版手册。(2018).Docs.scipy.org。检索于 2018 年 7 月 15 日,来自https://docs . scipy . org/doc/numpy/reference/generated/numpy . diag . html
  19. 复杂?,H. (2018)。如何让特征值和特征向量保持实数而不是复数?。堆栈溢出。检索于 2018 年 7 月 15 日,来自https://stack overflow . com/questions/48695430/how-to-make-the-features-and-features vectors-stay-real-that-of-complex
  20. 矩阵特征向量计算器。(2018).Symbolab.com。检索于 2018 年 7 月 15 日,来自https://www . symbol ab . com/solver/matrix-特征向量-计算器/特征向量% 20% 5C begin % 7bp matrix % 7D 10% 260% 262% 5C % 5C % 200% 2610% 264% 5C % 5C % 202% 264% 262% 5C cend % 7bp matrix % 7D
  21. [仅适用于 Numpy ]在 Numpy 中使用交互式代码体验特征值/向量的乐趣。(2018).走向数据科学。检索于 2018 年 7 月 15 日,来自https://towards data science . com/only-numpy-having-fun-with-eigen-value-s-vectors-with-interactive-code-in-numpy-80d 3443 DFD 22
  22. 在 Numpy 和 Tensorflow 中使用交互式代码通过梯度上升进行独立分量分析。(2018).走向数据科学。检索于 2018 年 7 月 15 日,来自https://towards data science . com/independent-component-analysis-via-gradient-ascent-in-numpy-and-tensor flow-with-interactive-code-98 B9 a73 e5d 19
  23. 谷歌合作实验室。(2018).Colab.research.google.com。检索于 2018 年 7 月 15 日,来自https://colab . research . Google . com/drive/1 vdozsx 3 ckcgmywmutmiutr 4 phfjkaz 2 # scroll to = w5 nfpzyb 6 jfs
  24. Anon,(2018)。[在线]可在:https://www . research gate . net/publication/281455336 _ NumPy _ SciPy _ Recipes _ for _ Data _ Science _ eigen values eigen vectors _ of _ 协方差 _ matrics查阅【2018 年 7 月 15 日】。
  25. 奇异值分解教程。(2018).Web.mit.edu。检索于 2018 年 7 月 15 日,来自http://web . MIT . edu/be . 400/www/SVD/Singular _ Value _ decomposition . htm
  26. sk learn . datasets . load _ Boston-sci kit-learn 0 . 19 . 1 文档。(2018).Scikit-learn.org。检索于 2018 年 7 月 15 日,来自http://sci kit-learn . org/stable/modules/generated/sk learn . datasets . load _ Boston . html
  27. (2018).Datajobs.com。检索于 2018 年 7 月 15 日,来自https://data jobs . com/data-science-repo/SVD-Tutorial-[Kirk-Baker]。pdf

我的数据科学之路

原文:https://towardsdatascience.com/my-path-to-data-science-b66c1538bb7e?source=collection_archive---------9-----------------------

(以及给任何刚开始学习的人的一些建议)

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

首先简单介绍一下我自己:
嫁给 Yonit&Yahav&Arbel
的父亲作为一名数据科学研究员 @Grid4C
与 Shlomo Kashani
共同创立了“深度学习训练营”【巅峰时期】在超过 80,000 名活跃的 Kaggle 竞争者中排名第 175
【自学成才并且非常(!)好奇
·拥有 BGU 大学经济学学士学位和企业家研究 MBA 学位

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

  • 每天驾驶 230 公里,我寻找利用时间的最佳方式…
  • 一路上开始听讲座
  • 决定每天投入 1 小时来实践我所学的
    (很快发现自己投入了更多……)

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

然后我认识了 ka ggle……(这只是我参加过的比赛的一部分)

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

Kaggle 是我实践学习的最重要的枢纽,实践知识比理论知识更稀缺,这是获得经验和展示你所学知识的好方法——更多关于我对 Kaggle 为什么如此伟大的想法,你可以在这里找到这里和稍微不同的更通用的更新版本这里

我从与我领域相关的 kaggle 竞赛开始,我甚至成功地将我的一些解决方案应用到日常工作过程中的竞赛中。但是,很快我就尝试了大部分提供的竞赛,不管它们来自哪个领域

我多年来开发的一个数据科学项目的总体方案如下所示:

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

在我的旅程中,我发现有几件事要么推动我们前进,要么拉动我们前进

  • 我们不断地互动
  • 挑战那我们就 激情 去解决/应对
  • 内容我们 /听/(观?)
  • 行动我们T42【采取
  • 思想我们 关心

我们经常交往的人:
是我们生活中的人在挑战我们,在我们需要时提供帮助,在我们能给予帮助时寻求帮助。他们激励我们,帮助我们以自己独特的方式发光。他们在那里倾听&如果我们幸运的话,我们也会在那里支持他们。
这些是在我的人生道路上帮助过我的人,我非常感谢在我的生命中拥有他们!

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

The main people who took part in my journey to data science

作为团队的一员,伟大的目标更容易实现:

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

我们热衷于解决/应对的挑战:

  • 所以我们已经在 上看到了一些,但是还有更多…
  • 工作挑战(大部分都是我自己想出来的)
    关于这类挑战,我的最佳建议是“找一个除了你之外的人,他也会致力于挑战
  • 数据黑客马拉松——对我来说是作为参与者的数据黑客,以及作为发起者和共同组织者的 BGU 黑客。黑客马拉松是展示你所学技能和个性的好方法。它们也是结识其他优秀专业人士的好地方
  • 其他比赛 —查看本次回购了解一些想法
  • 医疗挑战、商业挑战、技术挑战,以及其他…

我们读/听/看的内容——好奇心是我们最好的朋友:

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

我们采取的行动:

  • 养成一个习惯,交付比你承诺的更多的东西
  • 在一切事物中寻找机会——问"为什么这很棒?
  • 对机会说“是”——这很难,但是值得!
  • 为他人做好事,不求回报
  • 承担你能承受的风险——不承担风险会更糟糕
  • 寻找别人在你身上看到的、你自己还看不到的东西,并据此采取行动

我们关心的想法:

  • 我所关心的事情过去是,现在仍然是我的动力— 热爱你所做的事情
  • 始终回馈的重要性
  • 教别人——双重受益每个人都学得更多
  • 什么是我们独特的贡献 —我们都是特别的,但如何特别?

就是这样。正是这些东西&这些人让我的数据科学之旅成为迄今为止最伟大的旅程(现在依然如此)。我希望你喜欢读它,并且它帮助一些读者。

我很乐意阅读关于其他人道路的相似和不同之处,并加入你的建议和你一路上学到的东西。

https://github.com/nathanie

https://www.linkedin.com/in/nathaniel-shimoni-16b11081

【https://www.kaggle.com/interesting

https://www.facebook.com/nathaniel.shimoni

我的手机使用数字和图形

原文:https://towardsdatascience.com/my-phone-use-in-numbers-and-graphs-886d040519f8?source=collection_archive---------1-----------------------

Moment 应用数据的洞察力和可视化

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

Image credit.

在过去的几个月里,我一直对注意力经济感兴趣,现代技术如何劫持我们的思想来获取更多的利润。我还就这个话题写了一篇十页的文章,作为我的教员科目成绩的一部分。在研究过程中,我遇到了一个名为花好时间的运动,它希望“改变注意力竞赛,使其符合我们的最佳利益”。他们的网站还提供帮助你节省时间而不是浪费时间的应用程序。其中之一就是时刻。

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

Moment app.

Moment 应用

Moment 是一个自动跟踪并帮助您管理手机使用时间的应用程序。Moment 的免费版本显示您每天使用手机的时长。付费版帮你打,限制使用。还有一款家庭版。

它可以选择导出 GPS 位置(纬度和经度)、日期、时间和会话持续时间。我使用这些数据进行了以下段落中的分析。

概观

我在 12 月初开始使用 Moment,直到最近才忘记它。当然,这个应用程序是独立运行的。下图显示了我每天和每个位置的手机使用情况。我计算了纬度和经度的加权平均值。让我提醒你,你可以点击图片或图表下方的超链接来获得互动图。

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

See the interactive plot.

最近的一项研究显示,年轻人使用手机的时间略多于 5 小时,平均每天查看 85 次。让我们把这个和我的结果比较一下。我平均用了 3 小时 10 分钟,每天检查 60 次。我仍然觉得我在这上面浪费时间…

平均日

这就是我平常的一天,用我每分钟打电话的概率表示的样子。

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

See the interactive plot.

每一分钟的概率都很嘈杂,所以我应用了中值滤波器来减少噪音。不幸的是,由于我‘自由’的生活方式(记住,我是在伊拉斯谟交易所),你无法从剧情中学到很多东西。

平均会话

现在是时候更仔细地看看这些会议了——它们的持续时间——并将它们与之前提到的研究结果进行比较。

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

See the interactive plot.

我的 中位数 **会话时长 95 秒。**他们的,不到半分钟。我认为这是由于两个原因:

  • 我一般会关掉移动数据或者 wifi。因此,每次我想在网上查看一些东西时,我都必须再次打开它,这需要一些时间。
  • 我通常不使用推送通知。当我想查看社交媒体通知时,这需要额外的时间——尤其是当我沉迷于永不停息的新闻提要时。

最喜欢的地点

你可以从手机数据中获得比电话使用更多东西。例如,最喜欢的位置(用于使用我的手机)。我将这些限制在格但斯克,并决定将它们聚集在一起,组成前七名。标记区域与花在手机上的时间成正比。

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

My top 7 places (for using phone) in Gdansk.

最大的标记(93 小时)代表交换期间我的家。上面的点,我的大学。右边的标记,美丽的古镇。索波特,一个聚会的地方…

编码和编写

我想让这篇文章尽可能的简短有趣——不要讲太多细节(这篇文章是面向大众的)。让数字和图表自己说话。最初的计划还包括 t 测试,以比较我在清醒时使用和不使用特定社交媒体应用程序和分发的情况。最后,由于上面提到的原因,我决定不考虑他们。

我使用 Jupyter Notebook 用 Python 编程语言实现了代码。对于数据可视化(不包括地图),我用了 plotly 。

我的数据科学快速入门 Docker 图片

原文:https://towardsdatascience.com/my-quick-start-docker-image-for-data-science-6bffb5dbac31?source=collection_archive---------2-----------------------

TL;DR:设置是通用的,但是本教程的目标读者是那些有兴趣将数据分析从笔记本电脑转移到云中的读者。只需在数字海洋上点击几下,在终端上输入几个命令,您就可以拥有 RStudio 服务器、具有多个内核的 Jupyter 笔记本和 Neo4j 数据库。

更多的数据库后端即将到来。

本·哈默最近在 Quora 上写了一篇关于可复制性的文章。我鼓励你阅读他的文章,因为它是这篇文章背后的基本原理。这些见解如下:

https://www . quora . com/What-is-best-practices-for-cooperation-between-data-scientists。

可重复的行动让我们节省时间,并讨论真正重要的事情,即我们工作的产出。在这种情况下,当我有空闲时间时,我一直在玩docker,因为在分析项目中复制我们的发现的能力将过程从讨论中移除,并允许我们专注于输出。

虽然我对容器的概念非常陌生,但我确信我的设置反映了我所知甚少。无论如何,它确实允许我们在远程机器上开始一个良好的数据科学设置,只收取每小时几分钱的费用。

如果您有一个您认为涵盖核心基础的数据科学设置,请随时联系。这是拼凑起来的,但却激发了我在任务中解析、管理、存储/组织和建模数据所需的工具集。

在数字海洋上创建个人分析服务器

首先,如果您没有数字海洋帐户,您可以使用下面的链接创建您的帐户并开始使用。注意,这是一个推荐链接,如果你最终在网站上开发,我会得到信贷。

[## 数字海洋:为开发者设计的云计算

DigitalOcean 是一个简单而强大的云计算平台,专为开发人员设计。

m.do.co](https://m.do.co/c/d5dcbcabc6d3)

一旦您创建了您的帐户,您将需要创建您的 droplet,或者我们可以控制的远程服务器。选择One-click Apps选项卡,并选择显示的 docker 的最新图像。截至 4 月 2 日,这是我看到的情况:

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

向下滚动并选择标准实例和每小时花费 1.5 便士的服务器。

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

以这个价格,你可以获得 1 GB 的内存、30GB 的固态硬盘和 2 TB 的数据传输。这对我们的任务来说绰绰有余。还值得注意的是,你应该货比三家其他供应商。

我更喜欢 Digital Ocean 的易用性和不断增加的功能,但我相信您可能会找到一个能为您的需求提供更好价格的提供商。

就我而言,我在东北,所以我将选择纽约的数据中心。

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

现在不要担心其他的选择。向下滚动到“完成并创建”部分。

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

我们只想启动一台服务器,所以将设置保留为 1 droplet,然后单击 Create。

您应该会看到一个屏幕,显示您的个人服务器的创建进度。

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

完成后,将鼠标悬停在您的个人数据科学服务器的 IP 地址上,以复制远程机器的 IP 地址。

**最后,**检查您用来设置试用帐户的电子邮件帐户。

数字海洋将向您发送一封电子邮件,告知您服务器的最终详细信息。您应该会看到一封类似以下内容的电子邮件…

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

此时,您将在此电子邮件中看到服务器的临时密码。

因为我假设你在 Macbook 或类似的 UNIX 机器上,你可以简单地使用终端ssh进入你的个人服务器。

在我的情况下…

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

对您将看到的类似屏幕说

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

此时,将提示您输入通过电子邮件发送给您的临时密码,之后您将创建一个新的 root 密码。

在这一步中设置root密码是没有意义的。如果您打算启动机器来分析公开可用的数据,然后立即销毁它们,这通常是可以的。

如果您打算在未与您的 IT 和安全团队沟通的情况下将个人或公司数据存储在远程服务器上,请不要使用这种方法。

完成密码提示后,您现在已登录到您自己的个人数据科学服务器!

快速回顾一下我们所拥有的

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

在上面,我键入了ls命令,以确保在我的~目录中没有文件或目录。

你现在拥有的是一张白纸:

  • 具有root访问权限的 Linux 服务器使用不受笔记本电脑限制的资源。也就是说,启动一台可以变得相当大的服务器很简单,只需按小时为这些资源付费。
  • 我们使用ssh远程访问服务器,并直接在那台机器上发出命令。
  • 已经预先配置好运行 Docker 的 Ubuntu Linux 服务器
  • git是预装的,它允许我们使用版本控制来处理项目

在收集我们的工具集之前,我们应该用下面两个命令更新我们的服务器。

$ apt-get update
$ apt-get install

最后,让我们来设置数据科学

首先,通过在远程服务器的终端会话中键入以下命令来克隆我的基本设置。

git clone https://github.com/Btibert3/datasci-docker.git

您应该会看到类似这样的内容

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

切换到远程服务器上新创建的目录

cd datasci-docker/

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

并使用ls -l 命令确认您有这样的东西

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

你都准备好了。

使用以下命令启动您的分析堆栈。

docker-compose up

通过运行上面的命令,我们将使用 repo 中的docker-compose.yml文件来构建各种容器,这些容器通常用于各种数据科学任务。这些文件将被下载到服务器(第一次运行该命令时),并设置一些配置选项,以确保各种工具可以共享相同的数据。

重要!当你完成你的工作后,在你正在使用的终端会话中键入ctrl+c,以终止正在运行的设置。键入exit终止远程ssh会话。在数字海洋网络应用程序中,从感兴趣的液滴的更多菜单选项中点击销毁,这样您就不会为您的一次性分析堆栈产生额外的每小时费用。

在此阶段,我鼓励您探索其他可用的选项,包括远程连接到服务器以及数字海洋提供的大量选项。如果不为别的,设置 SSH 密钥,这样你就可以ssh root@<machine-ip-here>认证进入你的机器,避免使用电子邮件步骤来共享密码。

快速确认你所有的工具都准备好了

如果您接触过 Jupyter、RStudio Server 或 Neo4j,您就会知道这些工具会暴露给定机器上的各种端口。在本地使用这些工具时,您将使用localhost连接到这些工具。

过程与**完全相同,**但是我们只是提供一个 ip 地址,而不是连接到localhost,

让我们运行一些基本命令来确保您的工具集启动并运行。

创建新的终端会话

打开第二个终端会话,并再次进入您的远程机器。我们这样做是因为我们的第一个会话允许我们监视正在运行的 docker 会话。

登录 RStudio 服务器

在新的终端会话中,只需访问浏览器窗口中的ip-address:8787查看登录屏幕,即可登录远程 RStudio 服务器。

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

您可以在这两个字段中使用rstudio登录您的 R 设置。

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

您现在使用的是云中的 RStudio IDE,而不是在笔记本电脑上进行本地开发。

点燃一台 Juptyer 笔记本

使用通过ssh连接到远程机器的原始会话返回到您的终端。作为输出的一部分,您应该会看到如下所示的部分。

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

请注意,NotebookApp 为您的会话输出一个令牌。要访问您的笔记本,只需导航至ip-address:8888?token=<your-token-here>

这样做时,您应该会看到一个类似的屏幕,其中突出显示了您可以使用的各种内核,包括 Julia、Python 2/3 和 r。

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

选择 Python 3 试用笔记本。

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

访问 Neo4j 浏览器工具

只需在浏览器中转至ip-address:7474,您应该会看到以下内容:

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

我还没有看到一个工具能为他们的数据库后端提供更好的现成的 web 界面。

通过在 webapp 内的内置终端中输入命令call apoc.help('apoc')来确认您已经安装了apoc

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

值得注意的是,docker 允许您在启动 neo4j 数据库栈之前设置变量和选项。有关更多信息,请查看以下 url:

[## 2.5.码头工人-第 2 章。装置

本文涵盖了在 Docker 容器中运行 Neo4j。Docker 不能在 OS X 或 Windows 上运行。对于跑步…

neo4j.com](http://neo4j.com/docs/operations-manual/current/installation/docker/)

在设置过程中,我将 neo4j 的一些卷映射到主机上,特别是 neo4j 的import文件夹映射到我们主机的datasets directory.

让我们将一个数据集保存到我们的个人分析服务器上的/datasets目录中(该服务器现在运行 docker containers ),并确认 neo4j 可以访问它。

cd ~/neo4j/import
wget [https://vincentarelbundock.github.io/Rdatasets/csv/datasets/iris.csv](https://vincentarelbundock.github.io/Rdatasets/csv/datasets/iris.csv) 

这应该揭示了

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

直观证明这是一个数据集

cat iris.csv | head -5

退一步说,我们所做的是将数据保存到主机上的~/neo4j/import路径,但是这个卷也被映射到 docker 容器中,允许我们快速引用文件,如下所示。

LOAD CSV WITH HEADERS FROM "file:///iris.csv" as row 
WITH row
LIMIT 1
RETURN row

生产

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

摘要

这是一篇相当长的文章,但是使用 Digital Ocean 和 docker 容器让机器启动并运行起来真的很简单。这篇文章的目的是作为一个视觉指南,帮助你旋转我倾向于使用的堆栈。正如开始时提到的,我将在未来包括更多的数据库后端。

我的秘方是在卡格尔比赛中名列前 2%

原文:https://towardsdatascience.com/my-secret-sauce-to-be-in-top-2-of-a-kaggle-competition-57cff0677d3c?source=collection_archive---------1-----------------------

实践教程

在 kaggle 比赛中竞争是有趣和令人上瘾的!在过去的几年里,我开发了一些标准的方法来探索功能并建立更好的机器学习模型。这些简单但强大的技术帮助我在 Instacart 市场篮子分析比赛中获得了前 2%的排名,我也在 kaggle 之外使用它们。所以,让我们开始吧!

在数字数据上构建任何监督学习模型的最重要的一个方面是很好地理解特征。查看模型的部分相关图有助于理解模型的输出如何随任何特征而变化。

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

source

但是,这些图的问题在于,它们是使用经过训练的模型创建的。如果我们可以直接从训练数据中创建这些图,它可以帮助我们更好地理解基础数据。事实上,它可以帮助你做以下事情:

  1. 特征理解
  2. 识别嘈杂的特征(最有趣的部分!)
  3. 特征工程
  4. 特征重要性
  5. 功能调试
  6. 泄漏检测和理解
  7. 模型监控

为了使它更容易访问,我决定将这些技术放入 python 包 featexp 中,在本文中,我们将看到它如何用于特性探索。我们将使用 Kaggle 上家庭信用违约风险竞赛的应用数据集。比赛的任务是利用给定的数据预测违约者。

  1. 功能理解

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

Scatter plot of feature vs. target doesn’t help

如果因变量(目标)是二进制的,散点图不起作用,因为所有点不是在 0 就是在 1。对于连续目标,太多的数据点使得难以理解目标与特征的趋势。Featexp 创建了更好的图来帮助解决这个问题。我们来试试吧!

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

Feature vs. target plot of DAYS_BIRTH (age)

Featexp 创建数值要素的相等人口箱(X 轴)。然后,它计算每个箱中目标的平均值,并将其绘制在上面的左侧图中。在我们的例子中,target 的平均值只不过是违约率。该图告诉我们,DAYS_BIRTH 负值高(年龄较大)的客户违约率较低。这是有道理的,因为年轻人通常更有可能违约。这些图有助于我们了解该功能告诉客户什么,以及它将如何影响模型。右边的图显示了每个箱中的客户数量。

2。识别噪声特征

噪声特征导致过度拟合,识别它们并不容易。在 featexp 中,您可以通过一个测试集,并在训练/测试中比较特性趋势,以识别有噪声的特性。这个测试集不是实际的测试集。这是您的本地测试集/验证集,您知道目标。

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

Comparison of feature trends in train and test

Featexp 计算两个指标,显示在这些图上,有助于测量噪声:

  1. 趋势相关性(在测试图中可见):如果一个特性在训练集和评估集之间不具有相同的趋势 w.r.t .目标,则可能导致过度拟合。发生这种情况是因为模型正在学习一些在测试数据中不适用的东西。趋势相关性有助于了解训练/测试趋势的相似程度,并使用训练&测试中箱的平均目标值进行计算。上述特征具有 99%的相关性。好像不吵!
  2. 趋势变化:趋势方向的突然和重复变化可能意味着噪音。但是,这种趋势变化也可能发生,因为该仓位在其他特征方面具有非常不同的总体,因此,其违约率实际上不能与其他仓位相比较。

以下特征未保持相同的趋势,因此趋势相关性较低,为 85%。这两个度量可以用来丢弃噪声特征。

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

Example of noisy feature

当有许多要素并且它们彼此相关时,丢弃低趋势相关性要素效果很好。它导致较少的过拟合,并且其他相关特征避免了信息损失。同样重要的是不要放弃太多重要的特性,因为这可能会导致性能下降。此外,你不能使用特征重要性来识别这些噪声特征,因为它们可能相当重要,但仍然非常嘈杂!

使用不同时期的测试数据会更好,因为这样你就可以确定特性趋势是否会随着时间的推移而保持。

featexp 中的***get _ trend _ stats()***函数返回一个数据帧,其中包含每个特征的趋势相关性和变化。

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

Dataframe returned by get_trend_stats()

让我们实际尝试删除数据中趋势相关性较低的特征,看看结果如何改善。

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

AUC for different feature selections using trend-correlation

***我们可以看到,下降特征的趋势相关性阈值越高,排行榜(LB) AUC 越高。*不丢弃重要特征进一步将 LB AUC 提高至 0.74。同样有趣和令人担忧的是,测试 AUC 的变化没有 LB AUC 那么大。获得正确的验证策略,使本地测试 AUC 遵循 LB AUC 也很重要。完整的代码可以在 featexp_demo 笔记本中找到。

3。特征工程

通过查看这些图获得的见解有助于创建更好的功能。仅仅对数据有更好的理解就能带来更好的特性工程。但是,除此之外,它还可以帮助您改进现有的功能。我们来看另一个特性 EXT_SOURCE_1:

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

Feature vs. target plot of EXT_SOURCE_1

EXT_SOURCE_1 值高的客户违约率低。但是,第一个仓位(约 8%的违约率)并没有跟随特征趋势(先涨后跌)。它只有-99.985 左右的负值,人口众多。这可能意味着这些是特殊值,因此不要遵循特征趋势。幸运的是,非线性模型在学习这种关系时不会有问题。但是,对于像逻辑回归这样的线性模型,此类特殊值和空值(将显示为一个单独的条柱)应使用具有类似违约率的条柱中的值进行估算,而不是简单地使用特征均值进行估算。

4。特征重要性

Featexp 还可以帮助您评估特性的重要性。DAYS_BIRTH 和 EXT_SOURCE_1 都有不错的走势。但是,EXT_SOURCE_1 的人口集中在特殊值箱中,这意味着大多数客户的特征具有相同的信息,因此不能很好地区分他们。这说明它可能没有 DAYS_BIRTH 重要。基于 XGBoost 模型的特征重要性,DAYS_BIRTH 实际上比 EXT_SOURCE_1 更重要。

5。功能调试

查看 Featexp 的图有助于您通过做以下两件事来捕获复杂特征工程代码中的错误:

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

Zero variation features show only a single bin

  1. 检查要素的人口分布是否正确。我个人曾无数次因小错误而遇到类似上述的极端情况。
  2. 在看这些图之前,总是假设特征趋势会是什么样子。特征趋势看起来不像你所期望的,可能暗示着一些问题。坦白地说,这种假设趋势的过程让构建 ML 模型变得有趣多了!

6。泄漏检测

从目标到特征的数据泄漏导致过度拟合。泄漏特征具有很高的特征重要性。但是,理解特征中为什么会发生泄漏是困难的。查看 featexp 图可以帮助您解决这个问题。

下面的功能在“空值”箱中的默认率为 0%,在所有其他箱中的默认率为 100%。显然,这是一个极端的泄漏案例。只有当客户违约时,此功能才有价值。根据该特性是什么,这可能是因为一个 bug,或者该特性实际上只是为默认者填充的(在这种情况下,应该将其删除)。了解泄漏特性的问题所在有助于更快地调试。

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

Understanding why a feature is leaky

为了更精确地检测泄漏,我发布了另一个 python 包‘leak-detect ’,它实现了一个使用 NANs 和复数来完成这项任务的新技巧。看看我在最后链接的另一篇文章。

7 .。模型监控

因为 featexp 计算两个数据集之间的趋势相关性,所以它可以很容易地用于模型监控。每次重新训练模型时,可以将新的训练数据与经过充分测试的训练数据(通常是第一次构建模型时的训练数据)进行比较。趋势相关性可以帮助您监控特征及其与目标关系是否发生了变化。

做这些简单的事情总是帮助我在现实生活中和 kaggle 上建立更好的模型。使用 featexp 只需 15 分钟就能看到这些图,绝对值得,因为之后你就不会盲目飞行了。

您还发现了哪些对探索特性有用的技巧和提示?我总是在寻找反馈。请在评论中告诉我,或者通过 abhayspawar@gmail.com 联系我。如果你想继续收到我的消息,请在推特上关注我(【https://twitter.com/abhayspawar】T2)

如果你喜欢这个,你可能会喜欢我关于使用 ML 进行算法交易的系列文章。它讲述了我如何能够获得比基准高出 100%的回报:

* [## 战胜市场的交易策略的机器学习模型

如何看待训练和利用 ML 模型进行算法交易?

abhayspawar.medium.com](https://abhayspawar.medium.com/machine-learning-models-for-market-beating-trading-strategies-c773ba46db66)*

我自创的人工智能硕士学位

原文:https://towardsdatascience.com/my-self-created-ai-masters-degree-ddc7aae92d0e?source=collection_archive---------1-----------------------

大学之路太贵了,所以我决定自己开一条。

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

Who’s teaching who?

本文的上半部分是更新。真正的事始于一两卷卷轴。

注: 本文是一项进行中的永久性工作,截至 2019 年 5 月 17 日。

2019 年更新 2: 有很多关于机器学习、数据科学和人工智能的伟大资源。我把一些我最喜欢的放在一个容易导航的位置。点击查看。

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

Some of the best machine learning, AI and data science resources in one neat little package.

**2019 更新:**我增加了一些更多的课程和其他资源(学习如何学习课程和 100 页的机器学习书籍)。他们都还在按顺序完成。

**2018 更新:**进入我的课程 9 个月后,我被布里斯班的一家科技公司 Max Kelsen 聘为机器学习工程师!

15 秒后见

我住在澳大利亚的布里斯班。

我是 2015 年毕业的,食品科学与营养学双学位。我花了五年时间读了三年本科。

我以为我想成为一名医生。可能是因为我在追随我朋友的做法,而不是创造自己的道路。

我是一个健身迷。我喜欢食物。将我对食物和健康的热爱与我的学习结合起来是我做过的最好的事情之一。

我在大学五年里学到的最有价值的一课是,如果你真的对你所学的东西感兴趣,学习就不再是一件苦差事。

我学会了如何学习。

如果你在开始上大学之前告诉我这个智慧,我会听,会理解,但不会付诸行动。我仍然认为学习永远是一项痛苦的任务。智慧必须学习而不是教授。

为什么要研究人工智能?

人工智能(AI)的整个革命让我着迷。人工智能,加上其他技术,有能力让世界变得更美好。它也有力量把世界变得更糟。我支持好的一面。

人工智能的进步已经发生了几十年。计算能力只是在最近才达到这样一个阶段,它足以让像我这样的人在我的卧室里研究这些技术。

2017 年初,我决定开始了解这种范式转变,而不是袖手旁观,看着它发生而不完全理解它。

我的目标

  1. **足够危险,把 AI 作为给世界带来价值的工具。**我不是为了学习而学习这些技术。我要用我所学到的去建造一些史诗般的东西。
  2. **将人工智能与我的健身和营养知识结合起来,帮助世界动起来,吃得更好。**我知道我永远不会成为人工智能、健身或营养这三个单一学科的世界领先专家,但我可以成为这三个学科交叉的领导者。
  3. 激励他人踏上自己的学习之旅。通过写下我的旅程并分享我所学到的东西,我想鼓励其他人选择自己并创造自己的道路。

我的课程

当我开始学习时,我走的是相反的方向。我一头扎进了深水区(真的),报名参加了一个深度学习课程,却从未写过一行 Python 代码。

我把自己吓得够呛我给支持部门发了电子邮件询问我是否有资格获得退款。幸运的是,我没有接受退款。

在对这个领域有了更多的了解后,我变得成熟了一点,并开始对我想在哪里学习有了一个想法。更多的想法开始进入我花时间的地方。

我不想成为最好的人工智能工程师或最受欢迎的人。我关注的是我可以用来建造东西的知识基础。

我的课程不像它应该的那样强大,相反,它是在飞行中建立的,学习我需要知道的东西以进入下一步。

如果你对我有任何建议,包括我应该看的课程或我应该努力的技能,请随时在评论中告诉我,我的电子邮件或推特。

  • ✅ =课程全部完成
  • ✳️ =课程部分完成或正在进行
  • 没有数学或书籍的符号

基础课程

  • ✅uda city python 编程基础【免费】
  • ✅ CS50 【免费】
  • ✅ 树屋巨蟒赛道[费用]
  • ✅ Udacity 数据科学简介[免费]
  • ✅ DataCamp 的数据科学课程 Python 简介 [Cost]

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

Two incredible resources for starting to learn Computer Science and programming. Sources: Treehouse, Harvard CS50

为什么是这些?

2017 年初,我对数据科学是什么一无所知,更别说 AI 了。我在二月份写了我的第一行 Python 代码。这些课程将为我提供 Python 编程、计算机科学和数据科学方面的基础。

高级课程

  • ✅ Andrew Ng 在 Coursera 上的机器学习[免费]
  • ✅ Udacity 深度学习纳米学位基础[成本]
  • ✅ Andrew Ng 在 Coursera 上的 deeplearning.ai 课程 [Cost]
  • ✅ Udacity 人工智能纳米学位[费用]
  • ✅ Fast.ai 深度学习课程(第一部分)【免费】
  • ✳️ Fast.ai 深度学习课程(第二部分)【免费】
  • ✳️ 在 coursera【cost】上用 Python 应用数据科学
  • ✳️ Fast.ai 机器学习课程【免费】

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

Three of the best resources to learn AI online. Sources: Udacity, deeplearning.ai, fast.ai

为什么是这些?

我偶然发现了 Udacity 的深度学习纳米学位基金会(DLND),并被 Siraj Raval 争取了过来。我对人工智能和机器学习有点兴趣,但他在 YouTube 上的介绍视频让我着迷。这是我开始学的第一门课程。

从 DLND 开始,我的学习之旅随着关注人工智能和健康的交叉而增长。

  • 费了九牛二虎之力才学会 Python作者 Zed Shaw [Cost]
  • 赤裸裸的统计查尔斯·惠兰著【成本】
  • 人工智能:一种现代的方法
  • 深度学习用 Python 作者弗朗索瓦·乔莱【成本】

当前正在阅读

  • 使用 Scikit-Learn 和 TensorFlow 进行机器实践学习作者 Aurélien Géron [Cost]
  • 安德烈·布尔科夫的《百页机器学习书》

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

If you’re starting out, put these two books in your library and read them cover to cover.

为什么是这些?

有时需要更传统的路线,而不是总是在屏幕前。Zed 关于 Python 的书极大地帮助了 Treehouse Python track。

上一次上统计学课是本科第一学期。我失败了。 赤裸裸的统计 帮助我开始用更多的统计思维来思考。它的写作方式去掉了术语,给出了复杂统计概念的真实例子。

没有人工智能教科书中的圣杯来学习人工智能——人工智能:一种现代方法——不会真的是学习人工智能。

用 Python 进行深度学习 也许是迄今为止对 AI、深度学习和 Python 最好的介绍。其作者 Franç ois Chollet 是流行的深度学习框架 Keras 的作者,目前在谷歌从事深度学习工作。

动手机器学习 是另一个不可思议的资源。这本书最符合我作为机器学习工程师的日常工作。

这本百页的机器学习书 是 2019 年的新版本。我希望我开始的时候有这本书。一天就能看完。我们正在为办公室准备一个,并打算把它作为一个首选资源。

数学

  • 可汗学院矩阵简介[免费]
  • 可汗学院线性代数【免费】
  • 可汗学院多变量微积分【免费】
  • 可汗学院统计与概率【免费】
  • 3blue1brown YouTube 频道【免费】
  • Coursera 上用于机器学习的数学【成本】

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

Source: Khan Academy

为什么是这些?

一旦我开始学习机器学习和深度学习,我的高中数学技能需要一些完善。多亏了各种框架和库,许多数学工作都是在幕后完成的。

对这些技术中的数学有一个大致的了解对我有很大的帮助。

临时演员

  • 布里斯班 AI Meetup 【免费】
  • Siraj Raval 的 YouTube 频道【免费】
  • 免费代码营【免费】
  • ✅在 Coursera 上学习如何学习课程
  • ✅coursera 上的谷歌云数据专业专精【成本】

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

Sources: freeCodeCamp.com, Meetup.com, Siraj Raval YouTube Channel

为什么是这些?

我的性格类型是 ENFP 。从本质上来说,我更外向而不是内向(只有一点点)。在电脑屏幕前呆太久,我会变得很奇怪。如前所述,我正在使用 Meetup 寻找和结识对我感兴趣的人。

Siraj Raval 是个巫师。他的 YouTube 频道是我学习人工智能并最终创建自己的人工智能硕士学位的主要灵感。观看他的视频让我在 YouTube 上记录了我的学习历程。如果你想了解更多关于人工智能的知识,我强烈推荐他的频道。

如果我需要温习当前正在学习的 Python 堆栈之外的 web 技术,FreeCodeCamp 是我要去的地方。毕竟,如果你用人工智能建造了什么东西,你将需要一种方式把它交付给世界。他们有我见过的最好的在线社区之一。如果你想从事 web 开发,这是你的起点。

我已经提到过,我在大学五年后学到的最有价值的技能是学会如何学习。但我想出了一个艰难的方法。Coursera 上的学习如何学习课程应该是每个学生的必修课。学会如何学习是终极技能,因为你可以把它应用到其他任何事情上。

任何机器学习工程师或数据科学家都需要使用云技术。如果你想让人们使用你制造的东西,你必须分发它们。云计算可以帮助你做到这一点。我已经选择谷歌云作为我目前的云供应商。我利用 Coursera 上的谷歌云数据工程专业来提升自己的技能。要了解更多,请参见文章我如何通过谷歌云数据专业认证考试

我该如何掌控一切?

我正在使用一个公开的特雷罗板跟踪这一切。我发现保持事物的直观性和尽可能简单是我工作的最佳方式。请随时关注我的进展。

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

What my Trello board looks like as of 13 September 2017 (it gets updated as I learn/add more to the curriculum).

为什么要创造我自己的道路?

在大学学习期间,我经常问讲师和教授,

这个会出现在试卷上吗?

我真正的意思是,

除非是期末考试,否则我是不会学这个的。

Seth Godin 的这篇文章一针见血。

这十年来,我在大学里度过了足够多的时间。

然而,当我决定如何学习时,我使用了两个主要标准。

  1. 成本
  2. 灵活性

就费用而言,我所在地区大学的计算机科学研究生学位每年在 20,000 澳元到 30,000 澳元之间(至少两年)。为了以后对比,我就用低端的。

根据我以前在大学的经验,它一点也不灵活。严格的截止日期,基本上任何缺席的医疗证明,严格的上课时间,一次性讲座,从我住的地方到我最近的校园往返 70 分钟,等等。这些都不是坏事,但当你把它与在线学习的替代方式相比时,情况就开始有点不同了。

就灵活性而言,在线学习显然是赢家。能够按照自己的进度学习是一大优势。我对我有困难的概念放慢速度,对其他所有事情都很快。因为不可预见的事件,我错过了最后期限?我请客。没有别人。

在线学习并不总是一帆风顺。你在灵活性中获得的东西,会在实际的人际交往中失去。在电脑前学习了一天后,我变成了一个内向的僵尸。我用当地的聚会来弥补这一点。

在线学习也没有大学的声望高。我完成的一些课程不提供验证证书。我不担心那个。我的目标是获得足够的知识,将这些技术付诸实践,为世界带来价值。

我将使用我构建的东西作为我能力的证明,而不是证书。

支付课程费用

我没有积累更多的学生债务,而是选择用我本打算花两年时间攻读计算机科学硕士学位的钱来资助我自己的学习之旅。

我预先支付所有课程的费用。为了做到这一点,当我开始学习这门课程时,我会在周末开车去优步。在被聘为机器学习工程师后,我仍然会提前支付费用。

下一步是什么?

你可以把这篇文章看作是我自创的人工智能硕士学位课程的半成品。随着我学习的课程和从事的项目的进展,我会保持更新。

我正在通过 YouTube 视频和博客帖子分享我的旅程。

我的硅砂数据冒险

原文:https://towardsdatascience.com/my-silica-sand-data-adventure-3b9231e6ba08?source=collection_archive---------5-----------------------

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

我的两个叔叔经营一家清洁用品公司。他们中的一个给我发电子邮件,问我如何研究香烟烟灰缸砂的总市场,这只是硅砂。尽管所有的沙子都是二氧化硅,但短语“硅砂”通常是指某种商业用途的预处理过的沙子(如烟灰缸)。

总可用市场泛指市场需求的上限。没有多少数据库可以涵盖香烟烟灰缸沙子的市场,所以,我决定继续寻找。

我最近读了super forecasts,它让我稍微开阔了一下眼界,让我了解到如何用一种快速、准确的方法将评估分解成子问题。我决定用它来估算美国一年的硅砂总需求。

我是这样把问题分解的:找出吸烟者的总数,然后算出每个吸烟者使用的烟灰缸沙子的数量。

吸烟者总数

第一部分(吸烟者的数量)很简单,因为疾病预防控制中心有数据:

2015 年,每 100 名 18 岁或以上的美国成年人中约有 15 人(15.1%)目前*吸烟。这意味着美国目前估计有 3650 万成年人吸烟。

每个吸烟者有多少硅砂?

下一步,计算出一个普通吸烟者使用多少烟灰缸的精确估计,有点困难,因为这是一个如此狭窄的市场。我将这个问题进一步分解为一组 3 个问题。

1。 一般烟民用多少支烟?疾控中心称每天 14.2 人=每年 5183 人。(这让我非常惊讶。一包烟通常有 20 支。)

2。 吸烟者在烟灰缸里处理香烟的时间占多大比例?这是我非常非常感兴趣的地方。

事实证明,香烟垃圾是一个非常非常大的问题,所以在这个问题上有相当多的研究。就我的目的而言,我发现的最有用的研究是关于垃圾的观察研究,但有一个关于吸烟者的特殊部分。研究人员实际上观察了数千名吸烟者,看看他们吸烟后会做什么。在他们的样本中,57%的时间里吸烟者乱扔烟头。他们还注意到,在他们观察的地点中,只有 61%有烟灰缸。

在寻找第二个估计时,我发现了一个说法(这个说法没有根据),大约有 30%的时间香烟最终成为垃圾。我取了观察研究的估计值和 30% 的平均值,最终确定了我的估计值,即 43% 的吸烟者乱扔烟头的时间。这意味着吸烟者其余的时间使用烟灰缸,或者说 57%的时间使用烟灰缸。

3。 平均处理一支香烟要用多少沙子?这是最难的,我不得不使用一些非常粗略的数字。我从网上的供应商那里看到,大多数香烟瓮需要大约 3-5 磅的沙子,可以容纳大约 3000-4000 个烟头。这意味着每 1000 个烟头中大约有 1 磅沙子。

最后,所有的部分都准备好了,我终于可以做计算了:每年 5183 支香烟* 3650 万吸烟者* 57%被丢弃在烟灰缸里~一年有 1078 亿支香烟被丢弃在烟灰缸里。除以 1000 得到烟灰缸沙的磅数~ 美国每年有 1.078 亿磅烟灰缸沙

随着我的深入调查,我发现硅砂也用于泳池过滤器和壁炉,这可能会增加总的可用市场。然而,我上面的估计是保守的。

我学到了什么

在我寻找数据的过程中,有一些经验教训可能是通用的。

1。 将问题分解成子问题的力量。用这种方法可以解决的问题范围很广。我认为,这对于商人来说是一个强大的洞察力,因为在很多情况下,你没有时间,但需要给出一些具体的数字。通常在这种情况下,没有人有现成的数据库等着你。

2。 **在二级数据中发现问题。**商业创新成功的关键在于发现人们愿意花钱解决的重要问题。在为了一个不相关的原因挖掘一项观察性研究时,我发现了一个没有很好解决的大问题:香烟垃圾。也许这个问题会随着无烟香烟而消失,谁知道呢。我的观点不是关于这个特定的案例,而是二手数据可能包含有待解决的未开发的重要问题。

我希望你和我一样喜欢这次冒险。

卡格尔星球挑战:解决方案概述

原文:https://towardsdatascience.com/my-solution-to-kaggle-planet-challenge-fa554ec16c8c?source=collection_archive---------7-----------------------

一个好的理由和一个浏览一些最令人惊叹的航拍照片的机会足以让我加入这个竞赛;当然,这也是一个尝试各种 convnet 架构的重要场所。

“每一分钟,世界都会失去 48 个足球场大小的森林面积。亚马逊盆地的森林砍伐占了最大的份额,导致了生物多样性减少、栖息地丧失、气候变化和其他灾难性影响。但是,关于森林砍伐和人类对森林的侵犯的位置的更好的数据可以帮助政府和当地利益相关者更快和更有效地做出反应。

在这场比赛中,Planet 和它的巴西合作伙伴 SCCON 正在挑战 Kagglers,以大气条件和各种土地覆盖/土地利用类别来标记卫星图像芯片。由此产生的算法将帮助全球社会更好地理解世界各地发生森林砍伐的地点、方式和原因,以及最终如何应对。"

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

A large city in the Amazon basin (from competition website)

你可以在这里找到更多关于比赛的信息。

数据

大约 40k 个 255x255 jpeg 图片及其相应的带有 NIR 通道的 Tif 文件。测试集在 61k 左右,结构相同。更多详情。

训练数据中的每个区块具有一个或多个类别标签,例如“多云”、“水”、“道路”等。

天气标签是互斥的,而其他标签可以一起出现在某个标签中。目标基本上是预测每个图块的类别标签。

解决方案大纲

我的解决方案的要点是微调和集成许多 convnet 架构:VGG、inception v3、resnet50 和 xception。其中,resnet50 运行得最好,因为它需要的运行时间相对较少,所以我花了大部分时间对它进行优化和微调。

我从数据的小子集(50%)和非常小的照片(50x50)开始,以找到正确的建筑结构和参数搜索(例如,用于数据扩充)。最终的网络使用了 224x224 像素的 jpeg 图像。

有趣的是,Tif 文件并没有帮助改善结果。起初,这听起来可能毫无启发性;例如,我们可以用 NIR“看穿”雾霾,并提供更准确的标记。一个常见的假设是,由于标记是由不能利用 NIR 通道的人类完成的,利用 NIR 通道实际上会使我们偏离那些“真正的标签”。

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

An agricultural area that showing the end state of “fishbone” deforestation

网络架构

输出:17 级输出,二进制日志丢失,adam 优化器。我尝试了几种变体;其中一个具有两种输出类型:用于天气类别的 4x 输出(softmax +分类交叉熵,因为天气标签是互斥的)和用于其他标签的 13x 二进制输出(sigmoid +二进制对数损失,因为它们可以同时出现)。

然而,与统一的 17x 级输出相比,它们都给出了较差的 f2 分数。我甚至尝试了两种不同的天气和非天气网络,尽管精确度上升了,回忆下降了,这实际上伤害了对比赛很重要的 f2 分数。

以 Resnet50 为例,我去掉了顶层,用大小为 1024 的隐藏层进行扩展,后面是大小为 17 的预测层。中途退出是为了避免过度适应。

我开始以较高的学习速率(从 1e-3 一直到 1e-6)微调顶层,随着我在网络中的深入,在确保我不能从未冻结的层中榨取更多之后,不断解冻更多的 conv 块。我的最好成绩一直保持到 conv 50 分的 5a 区。

阈值处理

除了训练一个好的模型,找到合适的阈值在这场比赛中也很关键。基本上,预期的预测是类别标签,如“多云”或“道路”,而不是每个类别的概率。因此,您必须找到正确的阈值来决定某个预测的类别概率是否足够高,以分配该标签。我通过强力优化每个通道的阈值获得了最佳结果。

简而言之,我在 0 到 0.99 的范围内搜索了每个类别的所有可能的阈值,以获得最佳 f2 验证集。进一步改进我的结果(~0.001)的是在验证集上进行 10 倍的数据扩充,并在进行阈值搜索之前取模型预测的平均值。

组装

由于我使用的是相对较慢的 AWS 机器(p2.xlarge),我负担不起为每个型号进行 k-folding。因此,对于每个模型,我留出 20%的数据作为验证集,并针对相应的训练/测试分割优化每个模型。每个模型还使用了不同的输入大小和非常细微的数据扩充差异。我相信这有助于增加合奏的多样性。做测试时间增加(TTA)也被证明是对每个模型的一个很好的促进,特别是因为我在基于 k 倍的方法中没有测试预测平均的优势。

最后,我根据每个模型的输出进行了“多数投票”。虽然我没有进行 k 折叠,因此不能进行堆叠,但我的结果与我的队友秦相当,他花了相当多的时间对每个模型进行 k 折叠和堆叠。

最后,我们的最佳解决方案是基于我的 resnet 和他的 resnet 的平均值,然后叠加他的模型。Densenet 的后期添加也被证明是有帮助的,因为它具有与我们的最佳性能 resnets 相当的结果。

最后,不幸的是,由于合并中的一个错误,我们失去了我们的位置。事情是,公共和私人排行榜的文件名是不同的,我们的合并算法只在私人 LB 文件名上失败;因此,虽然我们在公共 LB 上没有看到任何异常,但我们混合了私人 LB 提交的结果。我不会 100%地责怪我们,因为这是一个超级难抓的漏洞,特别是在最后几个比赛日的抢劫期间,也因为我不认为训练和测试集应该这样划分。这一问题以及许多与数据相关的问题(tif 文件中的数据泄漏、比赛期间数据集的重新发布、tif 和 jpegs 之间的不匹配)使我对这场比赛及其组织失去了信心。令人欣慰的是,我们不是唯一因为文件名问题而失去阵地的人。

除了抱怨之外,我们学到了一个很好的教训来避免将来出现这种情况:利用提交之间的相关性。结果是,我和秦的最佳提交结果的相关系数为 0.88,合并结果将会显著提高分数。然而,这并没有发生,合并的结果是微不足道的;这是一个强烈的信号,表明有猫腻。在修复了这个错误之后,事实证明实际的相关性是 0.98,这是更容易接受的。这是我的第一次团队合作,团队合作的所有动力和兴奋实际上都超过了这个小小的挫折:D

不起作用的事情

  • XGB 和 ETR 模型对图像汇总统计和基于近红外的指数,应该是有助于检测水和绿色植物。除了 tif 在总体上没有帮助的事实之外,我已经得出结论,convnet 架构在提取特征方面要强大得多
  • 循环池:我是从之前比赛的 Sander 的解决方案分享中得到的想法;试了几次后,我没有观察到多少收获;这可能是由于我的实现,但也可能是当前的架构比当时可用的架构强大得多,数据增强有助于使网络旋转不变。

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

Approximately 25,000 acres of untouched primary rainforest.

特技

  • 我之前提到过这一点,但从一小组小照片开始是在合理的时间内用不同的架构、超参数和数据扩充进行实验的关键。
  • 伪标记:所以训练集的大小大约是 40k 图像和 60k 测试集。这是一个相当大的差异,在训练中有很多看不见的照片。根据杰瑞米·霍华德在 fast.ai 上分享的笔记,我利用伪标签/知识提炼将我的模型暴露给更多数据。基本上,在从微调中挤出最后一点梯度后,我继续在每批 75%的训练数据和 25%的测试数据上训练模型。测试集标签将是(增强的)模型预测。这帮我减少了大约 0.002 的损失。
  • 到最后,我意识到多云标签与所有其他标签是相互排斥的。这是因为对于多云的瓷砖,人类贴标签机看不到其他任何东西。我很确定我可以利用这个观察来对我们的结果进行后处理。我用了我最好的 resnet 模型,并将其作为单一模型进行微调,以检测多云或非多云(使用样本加权)。然后,我根据模型的输出整理了最终的预测:如果我们非常确信是多云,就去掉其他标签;如果我们确信不是多云,就去掉多云标签。虽然去除浑浊标签效果很好,但去除其他标签更敏感,我必须更有选择性地选择要去除的标签。最后,我可以观察到私人银行的一些显著收益。
  • AWS p2 实例众所周知的慢;虽然我可以坐在那里等待,但我决定利用 spot 实例的灵活性。在通过运行 spot 实例和安装丢失的 nvidia 驱动程序的设置曲线后(我真的长出了白头发),我设法轻松地生成新的 p2 实例并同时训练不同的模型。这大大提高了我的运行时间。

结论

巴西球迷在 2014 年世界杯上的感受可能最能描述我的感受:你充满了激情和希望,但你却被排除在这个特殊的派对之外。如果在脖子上挂一块金属不是你唯一的目标,那也没什么大不了的。虽然有时会让我筋疲力尽,但对我来说,这是另一次尝试新方法的宝贵经历,也是我第一次享受在 kaggle 比赛中作为一个团队工作的乐趣。

代号:【https://github.com/olix20/kaggle-planet

我关于深度学习和神经网络的故事——第一部分

原文:https://towardsdatascience.com/my-story-with-deep-learning-and-neural-networks-part-i-a751c7d148c?source=collection_archive---------5-----------------------

注:最初发表于 2015 年 11 月 25 日的博客上。

我从 2008 年开始研究深度学习,大概是每年的这个时候。我很幸运有 Yann LeCun 作为导师,还有他的一个天才学生: Clement Farabet 。我们一起着手制作卷积神经网络加速器。就在这个领域被称为深度学习之前。但是让我们再放大一点:

从我的博士学位开始,在 1998-2004 年间,我一直在神经形态工程领域工作。我得到了该领域一些顶尖人士的建议: Andreas Andreou ,我的超级天才博士顾问,Ralph-Etienne-Cummings——也是一位亲密的顾问,Gert Cauwenberghs——第三位亲密的同事,还有kwa bena bo ahen——最著名的“神经形态”之一。我基本上是站在巨人的肩膀上。我欠他们一辈子,利息。你读这本书是因为他们!

无论如何,神经形态工程是从生物学中获得灵感来创建工程系统的领域,该系统可以执行生物学最擅长的所有任务,如理解复杂数据:图像、视频、学习等。

生物学,或者也许只是“神经网络”。

再往前追溯,在意大利的里雅斯特大学攻读学士学位期间,我正在研究人类视觉系统的模型。后来,我了解到人类大脑是多么复杂,我开始热衷于将我的生命投入到将人类大脑复制成合成系统的想法。这是一个很好的人生目标,再加上通过复制一些东西,一个人真的必须了解它是如何工作的!在我 1998 年至 2004 年的博士研究期间,理解神经网络成了我的人生目标。当时,我与来自神经形态工程国际研究小组的电气工程、机器人学、神经科学、心理学领域的各种杰出人物建立了联系。这真的拓宽了我的兴趣,能够倾听所有这些看似不相关领域的科学问题。

但是后来我越来越明白,一切都是有联系的。它就像一个巨大的大脑。就像一个巨大的神经网络!关于这一点的更多内容将在后面讨论。

一些神经形态工程的目标是复制人类理解环境的能力。人类主要通过视觉做到这一点,毕竟视觉可以将你的“感知范围”延伸到最远,比触摸或你的身体更远,甚至比你的耳朵可以感知的声音更远。但是我们所有的感官赋予了我们在环境中生存的不可思议的能力。仅仅几千年前,人类生活的世界还远没有现在安全……在 1998 年至 2004 年期间,在我攻读博士学位期间,我研究了许多人造眼睛,或者能够在正确的时间获得正确的视觉信息的特殊图像传感器,可能会压缩大量的视觉数据。

当时我对与这个行业合作很感兴趣,但这一切似乎离我的目标和我正在创造的设备太远了。当时的工业生产和图像传感器研究都是为了推出更好的手机摄像头。不像今天。只考虑增加更多像素和提高速度似乎是渐进的。但是,是的,这是一场革命。我很高兴能与世界上最优秀的图像传感器创新研究人员联系,例如 Eric Fossum 和 Gunhee Han 、 Jun Ohta 等等。

当时,最好的神经形态图像传感器和视觉系统是由我在约翰霍普金斯大学的一些同学和顾问创造的:才华横溢的雅各布·沃格斯泰因、维克多·格鲁夫和最著名的施-刘炽、鸢·德尔吕克。例如,鸢的高动态视觉传感器和硅视网膜是设计最好的传感器之一。

但是大约从 2003 年开始,我对“照片里是什么”越来越感兴趣,而不仅仅是拍出漂亮的照片,即使是用我们花哨的神经形态相机!原因是很难真正将更多的计算能力压缩到图像传感器中。2D 芯片制造的必然性使我们被限制在 2D 的世界里。像我的顾问 Andreas 这样的远见者知道我们需要 3D,这是传感器和存储器的最新趋势!

当时,如果你想在视觉方面做得更多,设计更好的图像传感器真的不是办法。总的来说,我对计算机视觉也没什么印象。我不喜欢也不欣赏试图手工设计所有视觉问题的解决方案,并试图将其分解成几个部分,就像完形心理学和数学导向的计算机科学家在历史上所做的那样。在我看来,这一切都可以概括为 1966 年麻省理工学院论文中的著名目标,即在一个夏季项目中完全复制人类的视觉。这样的目标,到目前为止,已经被证明是一项艰巨的任务!

我反而被人类大脑解决问题的方式所吸引。

在我看来,人类的视觉系统是宇宙中最好的视觉系统!至少在我的人类眼中是最好的,因为它能够执行如此多的任务,并以我们大脑的智慧为食。我经常认为我们的大脑如此发达的原因主要是因为我们的视觉系统,或者两者的共同进化。这里!辩论的食物。人类的视觉系统让我们可以轻松地在环境中移动。我真的想复制它,用在机器人和机器上,让计算机看东西的方式和人类看东西的方式相似。

这是我现在的人生目标。为了做到这一点,我们要深入研究智力、语言和技术进化的问题。所有这些话题现在似乎都融合在一起了。我不知道细节,但一些未来的画面在我脑海中清晰可见。更多将被告知。

回到 2006 年 7 月,我的研究目标之一是创造一个神经系统,它可以复制我们的视觉识别物体的能力。然后,我真正受到了托马斯·塞尔(Thomas Serre)的工作和论文的启发,他是由著名的托马斯·波吉奥(Tomaso Poggio)领导的。他们在麻省理工学院的作品是一个真正的灵感,我们和陈寿顺一起努力在硬件上复制他们的一些模型。

然后,在 2008 年初的一天,我和我们杰出的同事 Bernabe Linares-Barranco 聊天,他不经意地提到了 Yann LeCun 的工作。Yann 刚搬到 NYU,那时我在耶鲁大学,他友好地同意来主持一个研讨会。他是多么令人鼓舞的 T2 啊。他拥有硬件开发人员所要求的最简单的神经元模型!以及训练大型系统的方法!它有“学习”,这是我博士经历中没有的概念,尽管我的密友和同事 Roman Genov 和 Shantanu Chakrabartty 早在 1998-2005 年就在研究支持向量机和神经网络。我马上就明白了。

学习,简单神经元模型,可扩展系统,生物启发,人类视觉系统模型!

自 2008 年以来,我们开始致力于基于可编程逻辑器件(Xilinx FPGA)的人工硬件,以在硬件上实现深度神经网络。我们非常幸运地与 Clement Farabet 一起工作,他向我们介绍了 Torch,并使我们的实验室后来成为工具开发人员之一。Torch 使得创建神经网络和在软件中训练它们变得容易。与以前的 CNN 图书馆相比,这是一个很大的进步,以前的图书馆不太容易被黑客攻击和理解。

在接下来的几年里,从 2008 年到 2011 年,我们与 Clement Farabet 合作定制硬件,直到他跳槽到自己的软件公司工作,然后在 2014 年被 Twitter 收购(恭喜!).2011 年,我们的实验室(电子实验室)搬到了普渡大学,我们开始培养新一代的机器学习专家:Jonghoon Jin、Aysegul Dundar、Alfredo Canziani 和更多的硬件专家,如 Vinayak Gokhale。Berin Martini 在过去几年中不断完善硬件系统,直到 Vinayak Gokhale 在 2014-2015 年发明了一种全新的架构。我们的机器学习专家和我本人致力于视觉跟踪,然后是聚类学习和 k-means 聚类技术的无监督学习,以及我们定制硬件机器的编译器。我们为 Torch7 写了很多软件,在 Caffe 和其他工具出现之前,我们维护了演示代码和软件。在 2013 年夏天,所有电子实验室共同努力,将我们的硬件系统移植到 Xilinx Zynq 设备中,这是一种结合了 AMR 内核和 FPGA 结构的真正嵌入式系统。我们在 Linux 设备驱动程序中开发了与设备对话的底层代码,然后实现了一个完整的硬件系统和软件编译器。我们将这一系统称为 nn-X,并在 NIPS 2014 上首次展示,在那里我们的硬件演示受到了媒体的关注和认可。

与此同时,很明显我们是未来一项关键技术的专家,深度学习,我决定资助公司 Teradeep ,以便将我们在可编程设备中的硬件设备商业化,并将它们转变为定制的微芯片。宏伟的目标是让所有设备都能够像人类一样看到和感知世界。

目标是创造一种特殊的微芯片,在电池供电的设备上运行神经网络,比如手机。数据中心服务器和自动驾驶汽车系统。

在早期,大多数行业都不知道深度学习是什么,对他们来说,这只是“那些算法中的另一种”。这一愿景在我们心中很活跃,但很难被许多公司高管接受。他们错过发令枪会让他们后来感到沮丧。—第一部分结尾—脚注:1:这是我的故事。我希望它能帮助其他人获得视角。如果可能的话,通过别人的经历。

他说:非常感谢海军研究办公室,ONR 和 T4 的托马斯·麦肯纳,他们资助了我们的许多研究活动。

最初发表于 2015 年 11 月 25 日的 Blogger。更多最新评论见:https://medium . com/forward-data-science/can-we-copy-the-brain-9 ddbff 5 E0 DDE

关于作者

我在硬件和软件方面都有将近 20 年的神经网络经验(一个罕见的组合)。在这里看关于我:传媒、网页、学者、 LinkedIn 等等…

捐款

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

如果你觉得这篇文章有用,请考虑捐赠来支持更多的教程和博客。任何贡献都能有所作为!

我用 25 个问题来测试一个数据科学家关于交互式代码的图像处理-第 1 部分

原文:https://towardsdatascience.com/my-take-on-25-questions-to-test-a-data-scientist-on-image-processing-with-interactive-code-part-1-a6196f535008?source=collection_archive---------3-----------------------

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

GIF from this website

所以我找到了这个了不起的博主 Faizan Shaikh ,他的博客上有一些令人惊奇的东西!所以请你查一查他,也就是他是“ 25 题测试一个数据科学家对图像处理的 ”的创作者。所以我会试着挑战自己去解决它们。请注意,我的解决方案不会优化。

此外,对于每个问题,我会截屏正确的答案(原作者张贴的答案)。然而, 我总是乐于学习和成长 ,所以如果你知道一个更好的解决方案,请在下面评论。

还有,这是我用来做演示的两张图片。
1。 脑 MRI 来自 pixabay 2。 自然图像来自 pixabay

1。将以下图像格式与其正确的通道数相匹配

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

我的答案是 C,因为 RGB 图像有红色、绿色和蓝色,而灰度图像只有二进制值。我们甚至可以用 python 来证实这一点。

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

红线 →通道大小为 3 的彩色图像
蓝线 →通道大小为 1 的灰色图像(因为是二进制值,所以这里没有显示。)

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

2。图像翻译

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

我的答案是 B,C 和 D,我们可以看到两个给定的坐标是(1,0)和(0,1),所以要回答的基本问题是我们需要什么变换矩阵?如果我们真的做矩阵乘法,我们可以看到,除了 A,我们可以把原来的坐标转换到新的坐标。

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

3。[对或错]要模糊图像,您可以使用线性滤镜

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

我对此的回答是正确的,因为我们可以使用均值滤波器(或平均滤波器)来平滑图像,同时保持线性。首先,让我们看看什么是线性滤波器……

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

Image from this website

好了,现在我们知道了线性滤波器的定义,让我们看看线性滤波器和非线性滤波器的区别。

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

Image from this website

好,现在我们知道均值滤波器可以用于求平均值。让我们实际看看它的作用。

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

左图像 →原始图像
右图像 →均值滤波图像

我们可以清楚地看到,图像更加平滑。我认为作者弄错了。(如果我说错了,请告诉我。)

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

4。处理计算机视觉问题时,以下哪一项是一项挑战?

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

这肯定是 D,因为当涉及到计算机视觉时,上述所有问题都是要处理的巨大痛苦。以下是来自斯坦福远景集团网站的挑战列表。

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

Image from this website

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

5。k 均值聚类

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

对于这个问题,我费了好大劲才弄明白。但是从逻辑上来说,我们需要三样东西。圆形、正方形和背景。我们可以看到,圆形具有最黑的像素强度(因此这将是一个聚类),正方形具有灰色的像素强度(另一个聚类),最后背景大部分是白色的(最终聚类)。所以我认为我们需要 3 个集群。

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

6。图像不连续

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

为了这个问题,我不得不回顾所有的不连续性,并找到了斯坦福大学和研究之门的一个很好的演示。

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

因此,从上面每个不连续的例子来看,我们需要得出结论,边缘是由于深度而被检测到的。椅子在墙的前面。

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

7。去除噪声

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

我们已经从上面的例子中看到我们如何使用均值滤波器平滑图像,这意味着如果图像中有噪声,我们需要平滑图像以减少噪声。让我们使用[我的旧代码](http://“Jaedukseo/Python_Basic_Image_Processing”. 2018. Github. Accessed April 11 2018. https://github.com/JaeDukSeo/Python_Basic_Image_Processing/blob/master/4_Add_noise/four.py.)给图像添加一些噪声。

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

左图像 →原始图像
右图像 →平滑后的结果图像

因此答案是 c。

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

8。我们需要多少尺寸的灰度级

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

为此,我们可以肯定地知道我们需要做的第一个操作是 100*100,现在我们需要选择我们需要乘以什么值。为此,我们可以看看 scipy 中的 imread 函数。

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

如上所示,黑白图像需要 8 位,但是我们也可以将它读入 32 位,因此答案可以是 E 或 3,200,00。

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

9。图像的量化

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

我不知道什么是量化过程,所以我必须去查一下。

图像处理中涉及的量化是一种有损压缩技术,通过将一系列值压缩为单个量子值— 维基

仅从这一陈述,我们可以得出结论,量化一幅图像涉及压缩,这意味着减少存储空间量,因此是正确的。

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

10。具有重复值的图像

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

这当然是因为,我们可以将 x 和 y 坐标值存储在一个字典中(键值为像素强度),这将大大减少所需的大小。

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

交互代码

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

对于 Google Colab,您需要一个 Google 帐户来查看代码,并且您不能在 Google Colab 中运行只读脚本,因此请在您的操场上创建一个副本。最后,我永远不会请求允许访问你在 Google Drive 上的文件,仅供参考。编码快乐!

请注意,我不想滥用任何数据政策。所以对于谷歌 Colab,我找到了下面的图片,它被标记为重复使用。要访问在线代码,请点击此处。

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

Image from this website

遗言

还有 15 个问题,但这些都是很好的问题。

如果发现任何错误,请发电子邮件到 jae.duk.seo@gmail.com 给我,如果你想看我所有写作的列表,请在这里查看我的网站。

同时,在我的推特这里关注我,访问我的网站,或者我的 Youtube 频道了解更多内容。如果你感兴趣的话,我还做了解耦神经网络的比较。

参考

  1. 处理,2。,处理,2。,&谢赫,F. (2017)。测试数据科学家图像处理能力的 25 个问题。分析 Vidhya。检索于 2018 年 4 月 11 日,来自https://www . analyticsvidhya . com/blog/2017/10/image-skilltest/
  2. 线性滤波和滤波器设计(图像处理工具箱)。(2018).Edoras.sdsu.edu。检索于 2018 年 4 月 11 日,来自https://edoras . sdsu . edu/doc/MATLAB/toolbox/images/Lin filt 3 . html
  3. 过滤器,D. (2018)。线性和非线性滤波器的区别。Dsp.stackexchange.com。检索于 2018 年 4 月 11 日,来自https://DSP . stack exchange . com/questions/14241/difference-between-linear-and-non-linear-filter
  4. OpenCV:平滑图像。(2018).Docs.opencv.org。检索于 2018 年 4 月 11 日,来自https://docs . opencv . org/3 . 1 . 0/D4/d13/tutorial _ py _ filtering . html
  5. 用于视觉识别的 CS231n 卷积神经网络。(2018).cs 231n . github . io . 2018 年 4 月 11 日检索,来自http://cs231n.github.io/classification/
  6. (2018).Vision.stanford.edu。检索于 2018 年 4 月 11 日,来自http://vision . Stanford . edu/teaching/cs 131 _ fall 1516/lections/lectures 5 _ edges _ cs 131 . pdf
  7. [3]2018.【在线】。可用:https://www . researchgate . net/figure/Factors-is-likely-to-corresponse-the-discontinuity-in-image-brightness-2 _ fig 5 _ 310301668。【访问时间:2018 年 4 月 11 日】。
  8. “Jaedukseo/Python _ Basic _ Image _ Processing”。2018.Github。2018 年 4 月 11 日访问。https://github . com/JaeDukSeo/Python _ Basic _ Image _ Processing/blob/master/4 _ Add _ noise/four . py。
  9. “西皮。杂项 Imread — Scipy V0.18.1 参考指南”。2018.Docs.Scipy.Org。2018 年 4 月 11 日访问。https://docs . scipy . org/doc/scipy-0 . 18 . 1/reference/generated/scipy . misc . im read . html。
  10. Pixabay 上的免费图像——核磁共振成像,磁性,x 光,头骨,头部。(2018).Pixabay.com。检索于 2018 年 4 月 9 日,来自https://pix abay . com/en/MRI-magnetic-x-ray-skull-head-782457/
  11. Pixabay 上的免费图像——日落、灯塔、黎明、黄昏、太阳。(2018).Pixabay.com。检索于 2018 年 4 月 9 日,来自https://pix abay . com/en/sunset-light house-dawn-dusk-sun-3120484/
  12. Pixabay 上的免费图像——核磁共振成像,磁性,x 光,头骨,头部。(2018).Pixabay.com。检索于 2018 年 4 月 9 日,来自https://pix abay . com/en/MRI-magnetic-x-ray-skull-head-782459/

我用 25 个问题来测试一个数据科学家对交互式代码的图像处理-第 2 部分

原文:https://towardsdatascience.com/my-take-on-25-questions-to-test-a-data-scientist-on-image-processing-with-interactive-code-part-2-77eacfd96cf9?source=collection_archive---------4-----------------------

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

GIF from this website

所以我找到了这个了不起的博主 Faizan Shaikh ,他的博客上有一些令人惊奇的东西!所以请你查一查他,也就是他是“ 25 题测试一个数据科学家对图像处理的 ”的创作者。所以我会试着挑战自己去解决它们,这是第二部分!请注意,我的解决方案不会优化。

此外,对于每个问题,我会截屏正确的答案(原作者张贴的答案)。然而, 我总是乐于学习和成长 ,所以如果你知道一个更好的解决方案,请在下面评论。

还有,这是我用来做演示的两张图片。
1。 脑 MRI 来自 pixabay 2。 自然图像来自 pixabay

如果你想看第一部分,请点击这里

11)【是非】JPEG 是一种有损图像压缩技术

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

对于这个问题,我不仅好奇 JPEG 是什么,也好奇 PNG 图像格式是什么,所以我决定去查一下。

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

Image from this website

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

Image from this website

所以从上面的图片,我们可以得出两个结论。JPEG 是有损压缩,PNG 是无损压缩。因此答案是正确的。

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

12)给定一幅只有 2 个像素,每个像素有 3 个可能值的图像,可以形成多少个可能的图像直方图?

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

我真的不知道这个问题,但从逻辑上来说。我们有 2 个像素,每个像素都有 RGB 通道。因此,我们已经知道有 3 * 3 = 9 种可能配置组合。但是顺序对于直方图来说并不重要,重要的是像素强度的频率。因此 3 + 3 = 6。(作者和我不同意这一条,如果我错了请告诉我。)

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

13) 1D 平均卷积

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

假设上面的 1D 图像没有填充,我们可以简单地计算一下。(8+5+2)/3 = 15/3 = 5.因此倒数第二个像素值将保持不变。

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

14) FMRI 问题(脑部核磁共振)

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

首先,我需要知道什么是 FMRI,所以我做了一个简单的谷歌搜索。

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

Image from this website

FMRI 似乎是一种测量大脑活动的简单技术。现在让我们看看这个 FMRI 的输出。

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

Image from this website

我试图找到对 FMRI 输出的解释,但是我不能找到确切的答案。但我找到了一个实验对象的功能磁共振成像结果。它似乎产生了 2D 输出。(然而我的答案是错的。)

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

15)以下哪种方法被用作边缘检测的模型拟合方法?

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

为了这个问题,我必须复习很多东西。从什么是模型拟合算法开始。

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

GIF from this website

从简单的谷歌搜索我们已经可以知道模型拟合算法做什么,在大多数情况下,它看起来像函数逼近。现在让我们回到这个问题,SIFT 是一个特征检测器,Gaussain 检测器可以理解为斑点检测。因此,答案必须是 RANSAC。

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

16)中值滤波器

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

我不会说中值滤波是最好的方法,因为这要视情况而定,但是正如我们在下面看到的,它确实可以做到。让我们使用来自栈溢出帖子的这段代码来添加一些 s alt 和 pepper 噪声并使用中值滤波器去噪。

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

左图 →有椒盐噪声的图像
右图 →中值滤波后的图像

我们可以清楚地看到中值滤波器的出色表现。

17)卷积运算

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

对于这个问题我们需要回顾一下,卷积运算之前内核发生了什么。

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

Image from this website

从这个网站上,我们可以清楚地看到一个卷积运算会发生什么。在应用卷积运算之前,我们将内核翻转 180 度。因此,我们可以得出结论,图像将向右移动,而不是向左。

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

18)图像锐化

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

对于这个问题,我们可以清楚地知道选项 A 不是这种情况,因为从应用身份图像中减去结果图像将导致黑色图像。但是让我们试一试。

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

左图 →原图
中图 →中间结果图
右图 →结果图

上面的图像是按照选项 A 的步骤生成的,正如我们所看到的,没有任何区别。

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

左图像 →原始图像
中间图像 →中间结果图像
右图像 →结果图像

上面的图像是按照选项 B 的步骤生成的,我们可以看到图像中有一些奇怪的伪像,但是从中间生成的图像中,我们可以看到我们正在给原始图像添加边缘。

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

左图 →原图
右图 →结果图

上面的图像是按照选项 C 的步骤生成的,我们可以看到图像中有一些奇怪的伪像,结果图像看起来没有那么清晰。所以答案会是选项 b。

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

19)信号卷积

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

对于这个问题,维基页面实际上在首页有直接的答案。

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

Image from this website

因此,从上图中,我们可以得出结论,运算 1 是卷积运算,运算 2 是互相关运算。因此答案是 b。

Video from this website

上面是一个视频,真实的例子。(然而,作者和我似乎又不同意,如果我错了,请让我知道。)

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

交互代码

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

对于 Google Colab,你需要一个 Google 帐户来查看代码,而且你不能在 Google Colab 中运行只读脚本,所以在你的游戏场地上复制一份。最后,我永远不会请求允许访问你在 Google Drive 上的文件,仅供参考。编码快乐!

请注意,我不想滥用任何数据政策。所以对于谷歌 Colab,我找到了下面的图片,它被标记为重复使用。要访问在线代码,请点击此处。

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

Image from this website

最后的话

在我的下一篇文章中,我会回答所有的问题。敬请关注!

如果发现任何错误,请发电子邮件到 jae.duk.seo@gmail.com 给我,如果你想看我所有写作的列表,请在这里查看我的网站。

与此同时,请在我的推特这里关注我,并访问我的网站,或我的 Youtube 频道了解更多内容。如果你感兴趣的话,我还做了解耦神经网络的比较。

参考

  1. “JPEG”。2018.En.Wikipedia.Org。2018 年 4 月 11 日访问。https://en.wikipedia.org/wiki/JPEG
  2. “便携式网络图形”。2018.En.Wikipedia.Org。2018 年 4 月 11 日访问。https://en.wikipedia.org/wiki/Portable_Network_Graphics。
  3. Pixabay 上的免费图像——核磁共振成像,磁性,x 光,头骨,头部。(2018).Pixabay.com。检索于 2018 年 4 月 9 日,来自https://pix abay . com/en/MRI-magnetic-x-ray-skull-head-782457/
  4. Pixabay 上的免费图像——日落、灯塔、黎明、黄昏、太阳。(2018).Pixabay.com。检索于 2018 年 4 月 9 日,来自https://pix abay . com/en/sunset-light house-dawn-dusk-sun-3120484/
  5. Pixabay 上的免费图像——核磁共振成像,磁性,x 光,头骨,头部。(2018).Pixabay.com。检索于 2018 年 4 月 9 日,来自https://pix abay . com/en/MRI-magnetic-x-ray-skull-head-782459/
  6. 功能磁共振成像(fMRI)——NYU 认知神经生理学实验室。(2018).NYU 认知神经生理学实验室。检索于 2018 年 4 月 11 日,来自https://med . NYU . edu/thesenlab/research-0/research-functional-magnetic-resonance-imaging-fmri/
  7. [复本],H. (2018)。如何用 OpenCV 在 Python 中给图像添加噪声(高斯/椒盐等)。Stackoverflow.com。检索于 2018 年 4 月 11 日,来自https://stack overflow . com/questions/22937589/how-to-add-noise-Gaussian-salt-and-pepper-etc-to-image-in-python-with-opencv?rq=1
  8. 椒盐噪声。(2018).En.wikipedia.org。检索于 2018 年 4 月 11 日,来自https://en.wikipedia.org/wiki/Salt-and-pepper_noise
  9. 我用 25 个问题来测试一个数据科学家关于交互式代码的图像处理-第 1 部分。(2018).走向数据科学。检索于 2018 年 4 月 11 日,来自https://towards data science . com/my-take-on-25-questions-to-test-a-data-scientist-on-image-processing-with-interactive-code-part-1-a 6196 f 535008
  10. 安,S. (2018)。2D 卷积的例子。Songho.ca 于 2018 年 4 月 11 日检索,来自http://www . song ho . ca/DSP/convolution/convolution 2d _ example . html
  11. OpenCV:平滑图像。(2018).Docs.opencv.org。检索于 2018 年 4 月 11 日,来自https://docs . opencv . org/3 . 1 . 0/D4/d13/tutorial _ py _ filtering . html
  12. 用 Matlab 实现互相关和卷积的可视化(已编辑)。(2018).YouTube。检索于 2018 年 4 月 11 日,来自 https://www.youtube.com/watch?v=O9-HN-yzsFQ
  13. 交叉相关。(2018).En.wikipedia.org。检索于 2018 年 4 月 11 日,来自https://en.wikipedia.org/wiki/Cross-correlation
  14. 曲线拟合。(2018).En.wikipedia.org。检索于 2018 年 4 月 11 日,来自https://en.wikipedia.org/wiki/Curve_fitting

我用 30 个问题来测试一个数据科学家关于自然语言处理和交互式代码的能力—第 1 部分

原文:https://towardsdatascience.com/my-take-on-30-questions-to-test-a-data-scientist-on-natural-language-processing-with-interactive-b8664c53be13?source=collection_archive---------3-----------------------

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

GIF from this website

Shivam Bansal 是一名数据科学家,在自然语言处理和机器学习方面拥有丰富的经验。他有一篇关于自然语言处理的惊人博文。因此,如果有人感兴趣,请检查他的工作,他们是超级有益的。今天,我将试着回答他的 30 个自然语言处理问题中的一些问题。

此外,我不会按数字顺序回答问题。对于每一个问题,我会努力找到正确的答案并把它们联系起来。然而, 我总是乐于学习和成长 ,所以如果你知道一个更好的解决方案,请在下面评论。

Q1)以下哪种技术可用于关键字规范化,即将关键字转换为其基本形式的过程?

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

所以关键词规范化就是把一个词(关键词)处理成最基本的形式。这方面的一个例子是,将 sadden、saddest 或 sadly 转换成 sad 这个词。(因为这是最基本的形式)知道了这一点,现在让我们看看我们可以选择的选项。

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

Image from this website

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

Image from this website

所以从上图我们可以直接看到词干化和词汇化都是用来将单词转换成最基本形式的技术。(而且他们甚至举了一个汽车的例子,car 的→ car)。最后,让我们看看其他两个选择意味着什么。(这篇文章也很好地解释了词干化和词汇化之间的区别。)

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

Image from this website

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

Image from this website

如上所述,我们知道 Levenshtein 用于测量不同句子之间的相似性,Soundex 用于根据单词的发音对其进行索引。因此,它们不是用于关键字规范化的合适工具。最后,让我们看看这在 python 中是什么样子的。

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

红框 →原词归一化关键字

如上所述,我们知道单词 studies/学习在词干化/词汇化之后已经变成了 studi 或 study。我们可以确认我们的解决方案是正确的。

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

Q2) N 元文法被定义为 N 个关键字的组合。从给定的句子中可以产生多少个二元语法:

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

我首先需要回答什么是 N 元文法的问题,我发现一个堆栈溢出问题很好地回答了 N 元文法到底是什么。

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

Image from this website

因此,假设我们没有使用#(单词边界),下面是我们可以从句子“Analytics Vidhya 是学习数据科学的一个很好的来源”中生成的所有双字母组合。

【《分析 Vidhya》、《Vidhya 是》、《是一个》、《一个伟大的》、《伟大的来源》、《来源于》、《学习》、《学习数据》、《数据科学》】。意思是一共有 9 个双字母组合。现在让我们看看实现。

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

最后,我们可以确认我们的解决方案是正确的。

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

Q3)在执行下面的文本清理步骤之后,从下面的句子中可以生成多少个三元组短语

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

我们已经知道什么是三元组(从问题 2)。现在让我们更深入地看看什么是停用词删除以及取代标点符号。

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

Image from this website

从一个简单的谷歌搜索中,我们知道停用词删除是指删除诸如“是”、“一个”和“该”等词的过程。现在,我们需要将每个标点符号替换为单个空格。为此,我们需要知道 python 字符串库中有哪些标点符号。我们可以这样做来得到它,就像…

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

知道了所有这些,我们可以首先从句子中删除所有的停用词……(要查看停用词列表,请点击此处)

“# Analytics-vid hya great source learn @ data _ science。”

现在让我们用一个空格代替所有的标点符号,给我们…

Analytics vidhya 大源码学习数据科学

最后,让我们创建三元语法,它给出了单词列表[“Analytics vidhya great “,” vidhya great source “,” great source learn “,” learn data science”],长度为 5。(给了我们答案 c)。现在让我们看一下实现。

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

从上面我们可以看到,我们得到了相同的句子"分析 vidhya 伟大的来源学习数据科学"。

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

Q4)以下哪个正则表达式可用于识别文本对象中的日期:

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

这是一个棘手的问题(至少对我来说),但是通过简单的实现,我们可以看到没有一个正则表达式匹配日期。

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

从那里我们知道一个解正则表达式可以是(’ \d{4}-\d{2}-\d{2}|\d{2}/\d{2},\d{4} '),它不作为一个选项存在,因此答案是 D)

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

Q5)以下哪种模型可以根据上述上下文对推文进行分类?

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

在深入这个问题之前,让我们简单回顾一下什么是 SVM /朴素贝叶斯。

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

Image from this website

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

Image from this website

无需深入每个分类器的细节,我们已经可以看出它们是在监督学习环境中使用的相似算法。然而,我们的问题表明,我们只收集了推文,仅此而已(我会假设这些是标签数据。).因此,没有一个,但如果标签包括在内,我想我们可以两个都用。答案应该是他们两个。

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

Q6)您已经创建了数据的文档术语矩阵,将每条推文视为一个文档。关于文档术语矩阵,以下哪一项是正确的?

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

目前,所有这些选项对我来说似乎都是正确的,但是让我们更深入地了解什么是文档术语矩阵。

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

Image from this website

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

Example from this website

从上面的两张图片中,我们可以了解什么是文档矩阵。我会简单地称它为一种更简单的表示文本或句子的方法。(以向量形式)现在,让我们来看一下选项,删除停用词意味着删除“是”这样的词,因此它将被视为降维。我把规范化理解为关键词规范化,把学习转化为学习等等。因此,如果我们有两个包含单词“学习”和“研究”的句子,它们都将被表示为“学习”,因此是降维。最后,我认为将所有的单词转换成小写仍然是一种降维,因为它减少了我们需要表示所有句子的单词数量。因此,我认为答案是 D)。

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

互动码

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

对于谷歌实验室,你需要一个谷歌帐户来查看代码,你也不能在谷歌实验室运行只读脚本,所以在你的操场上做一个副本。最后,我永远不会请求允许访问你在 Google Drive 上的文件,仅供参考。编码快乐!

要访问这篇文章中使用的代码,请点击此处。

遗言

这些问题确实是开始 NLP 的好地方。我不仅能够实践实施,还获得了一些理论知识。

如果发现任何错误,请发电子邮件到 jae.duk.seo@gmail.com 给我,如果你想看我所有写作的列表,请在这里查看我的网站。

与此同时,请在我的 twitter 这里关注我,并访问我的网站或我的 Youtube 频道了解更多内容。我还实现了广残网,请点击这里查看博文 pos t。

参考

  1. NLP],3。,& NLP],3。(2017).测试数据科学家自然语言处理的 30 个问题[解决方案:Skilltest — NLP] — Analytics Vidhya。分析 Vidhya。检索于 2018 年 5 月 24 日,来自https://www . analyticsvidhya . com/blog/2017/07/30-questions-test-data-scientist-natural-language-processing-solution-skilltest-NLP/
  2. Shivam Bansal,分析 Vidhya 的作者。(2018).分析 Vidhya。检索于 2018 年 5 月 24 日,来自 https://www.analyticsvidhya.com/blog/author/shivam5992/
  3. 词汇化——谷歌搜索。(2018).Google.ca .检索 2018 年 5 月 24 日,发自https://www.google.ca/search?q=lemmatization&rlz = 1c 1 chbf _ enca 771 ca 771&OQ = lemma tization&aqs = chrome . 0.0l 6.308 j0 j 7&sourceid = chrome&ie = UTF-8
  4. 莱文斯坦距离。(2018).En.wikipedia.org。检索于 2018 年 5 月 24 日,来自https://en.wikipedia.org/wiki/Levenshtein_distance
  5. Soundex。(2018).En.wikipedia.org。检索于 2018 年 5 月 24 日,来自https://en.wikipedia.org/wiki/Soundex
  6. 克?,W. (2018)。n Gram 到底是什么?。堆栈溢出。检索于 2018 年 5 月 24 日,来自https://stack overflow . com/questions/18193253/what-exact-is-a-n-gram
  7. NLTK,G. (2018)。用 NLTK 生成二元模型。堆栈溢出。检索于 2018 年 5 月 24 日,来自https://stack overflow . com/questions/37651057/generate-bigrams-with-nltk
  8. 停用词。(2018).ranks . nl . 2018 年 5 月 25 日检索,来自https://www.ranks.nl/stopwords
  9. j . brown lee(2017 年)。如何用 Python 清理机器学习的文本?机器学习精通。检索于 2018 年 5 月 25 日,来自https://machine learning mastery . com/clean-text-machine-learning-python/
  10. python?,h. (2018)。字符串 python 中如何替换标点符号?。堆栈溢出。检索于 2018 年 5 月 25 日,来自https://stack overflow . com/questions/12437667/how-to-replace-punctuation-in-a-string-python/12437721
  11. [在线]可在:https://www . quora . com/How-do-I-remove-stop words-from-a-file-using-python[2018 年 5 月 25 日访问]。
  12. Python 正则表达式。(2018).【www.tutorialspoint.com】T4。检索于 2018 年 5 月 25 日,来自https://www . tutorialspoint . com/python/python _ reg _ expressions . htm
  13. 表情?,P. (2018)。Python/Regex —如何使用正则表达式从文件名中提取日期?。堆栈溢出。检索于 2018 年 5 月 25 日,来自https://stack overflow . com/questions/7728694/python-regex-how-to-extract-date-from-filename-using-regular-expression
  14. 运营商,P. (2018)。Python 正则表达式匹配或运算符。堆栈溢出。检索于 2018 年 5 月 25 日,来自https://stack overflow . com/questions/19821487/python-regex-match-or-operator
  15. 支持向量机。(2018).En.wikipedia.org。检索于 2018 年 5 月 25 日,来自https://en.wikipedia.org/wiki/Support_vector_machine
  16. 朴素贝叶斯分类器。(2018).En.wikipedia.org。检索于 2018 年 5 月 25 日,来自https://en.wikipedia.org/wiki/Naive_Bayes_classifier
  17. 文档术语矩阵。(2018).En.wikipedia.org。检索于 2018 年 5 月 25 日,来自https://en.wikipedia.org/wiki/Document-term_matrix
编程小号
上一篇 2025-02-28 07:27
下一篇 2025-04-11 17:30

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/99270.html