其他

干货|Jupyter Notebook数据科学高效技巧!

2018-02-26 全球人工智能

-高薪招聘兼职AI讲师、助教和技术开发!

-欢迎入驻全球区块链资产交易交流社区!

当我学习有关深度学习的优秀的课程时,我学到了很多适用于通用软件工程的干货。我写这篇文章是为了总结这些技巧并与你分享。

1.Jupyter Notebook拓展

标准的Jupyter Notebook很不错,但是还有更多的扩展功能可以帮助你完成工作,并且可以将许多功能结合在一起。

Install Jupyter extension package

# Install Jupyterextension package pip install jupyter_contrib_nbextensions jupyter contrib nbextension install — user # Install configurator pip install jupyter_nbextensions_configurator # Install theme pip install jupyterthemes ## Change theme (This is my default) ''' Note that you need to use 1 command to configure the setting, if you do 2 jt command, the second one will replace the first one. ''' jt -t grade3 -T

你可以在这里找到更多Jupyter主题。安装配置器后,你会看到有一个新的“Nbextensions” 选项卡。获取这些项目打勾

1.Autopep8

2.Collapsible Headings

3.Gist-it

A. Collapsible Headings

现在你可以折叠你的笔记本,而不是滚动无穷的代码。根据我的经验,在进行探索性数据分析和绘制图表时,我写了很多不干净的代码,我必须非常努力地滚动才能到达目的地。你可以展开单元格或折叠单元格以使其更清晰。我想你甚至可以做一个目录(我还没有尝试过这个扩展)。

B. Gist-it

如果你以前使用过Gist,它基本上是一个让你共享笔记本的地方。当你想要共享你的代码时,这是非常有用的,特别是当你有bug并且想要共享它的时候。只要按一下按钮,一切就会在几秒钟内完成。


默认情况下,它将发布一个匿名的Gist,如果你想用Github帐户发布它,你需要生成一个令牌认证。主要的区别是,如果你用自己的帐号发表文章,你可以编辑你的要点。


我在这篇文章中使用的笔记本在此。

https://gist.github.com/a0d020c17ce1715bf1d031b1cb8a9fa4

C. Autopep8

造型很重要,但也很无聊。如果你不想太用力,只要按一下这个小按钮,它就会为你做所有的间隔!(PEP8是Python代码的风格指南)


2.把时间花在你的任务上,并从中吸取教训!

我一直在声明循环之前的开始时间,减去当前时间来获得运行时间。这并没有错,但你可以让它变得更容易。使用内置的魔法命令。它们对你来说可能不自然,但使用起来真的很方便。(魔法命令以%开始)


让我们从一个简单的函数开始。它计算的是最后一个小于n的Fibonacci数。

你可以使用%time来计时一次运行或函数%timeit来计时,并得到平均值和标准偏差。这对于这些简单的函数很有用,那么调用另一个函数的函数呢?


这里是%prun,我创建了一个虚函数,可以很长时间调用fib1()。你可以看到循环确实花了一些时间,但大部分时间都花在了fib1()上。

3.Cython

Cython是一个允许你用python编译C的包,这是numpy和pandas速度很快的主要原因。确保你已经通过Cython安装

pip install cython

在不改变任何代码的情况下,你可以获得即时的双重性能!这很好,但一点也不神奇。

如果你稍微修改一下脚本,看看你能实现什么。如果你对C编程有一些经验,你可能知道,当我们声明一个变量时,我们需要定义一个数据类型。这个脚本确实改变了一点,因为像这样的操作对于Python来说是独一无二的,C语言没有这个特性。因此,我们需要分配一个临时变量来存储该值。

a,b = b,a

(感谢James Martini先前指出了fib3中的一些错误!)

从582到48纳秒,速度提高了10倍,而且你实际上不需要更改很多脚本。对我来说,这是令人兴奋的,因为大部分时间你都可以使用慢速代码。你所关心的是一次次被呼来唤去的。使用%prun和一些Cython代码,可以在不编译任何文件的情况下获得C速度。


除了魔法命令,我发现在Jupyter做shell命令也是非常有用的。(魔法命令以%开始,shell命令以!开始)

推荐《人工智能系列课》

或点击“”,查看详情

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存