最近正在B站看吴恩达的机器学习(Machine Learning)课程。看了6周课程后感觉受益匪浅,虽然是面向非数学专业的基础课程,但所涉及到的高等数学和线性代数讲得很容易理解。
说到机器学习,自然会涉及到对数据进行大量的计算,而python在这方面提供了非常丰富的资源。随着大量开源的代码贡献出来,如何快速使用别人造好的轮子,验证自己的数据,就需要一个方便的python环境,这个环境不仅是用于开发,更多的是便于测试算法、计算数据。
十分适合在学习python时使用,不用在终端中噼里啪啦地打命令,也不需要为了测试一个代码段而特意打开IDE编辑器编写脚本。直接在网页端进行代码编写并运行,数据可以方便地通过画出图形,同时还支持,使用非常方便。作为刚开始了解python的入门者,在折腾了一圈之后,在这里做个简单的使用说明。
安装说明
官网上强烈建议是安装Anaconda集成套件,因为已经集成了Jupyter,可以直接运行,但是我的环境没有安装Anaconda,所以采用最原始的安装方法。具体方法可见官网说明,其实很简单,就是最简单的pip安装命令:
需要注意的是,我使用pyenv来支持多版本的python,所以pip指向的是当前的python版本3.6.x,而没有安装pyenv的话,pip和pip3可能对应的分别是系统中的python2和python3。
建议使用python3时要注意,如果本机环境还需要用到Node.js,那么安装某些npm包时运行node-gyp会出错,因为gyp仅支持python2,这时候需要特别定义一下python的使用版本,运行下面的命令即可设置npm使用n你本地的python2
一切顺利的话,Jupyter已经安装完成,如果安装过程中有缺少某些模块的话,可能需要手工补上后再运行安装命令。
启动服务
在启动Jupyter的服务之前,先安装几个扩展包,便于配置和使用Jupyter。运行命令:
完成后运行命令:
会生成一个默认配置文件,打开这个文件去掉注释可以修改相应的参数。建议先把Jupyter的notebook存放路径修改掉。修改参数为自己定义的路径,默认为空,即是当前用户的目录。
运行命令,启动Jupyter服务,并自动打开浏览器访问,这是默认Jupyter服务的绑定端口,可以在配置文件中修改相应绑定IP地址和端口值。
配置服务
进入Jupyter服务首页后,可以看到当前的所在目录,如果有后缀的文件就是notebook的文件,可以直接打开,没有的话就点击右侧的按钮,创建一个新的python3 notebook。
在创建新的notebook之前,可以先看看tab页,这是前面安装了扩展包后出现的工具,点击后可以发现里面有很多有用的扩展,选择自己需要的启用即可,然后回到打开的notebook中刷新一下,就能使用。我列了一些个人觉得比较实用的扩展:
Codefolding
Runtools
Live Markdown Preview
Python Markdown
Export Embedded HTML
Snippets Menu
Snippets
Table of Contents (2)
其他还有更多的扩展根据每个人的需要选择使用
使用Jupyter
编写并运行代码
Jupyter Notebook的使用很简单,基本上按照工具条上的按钮和菜单尝试一下就了解了,这里简单介绍一些刚开始容易摸不着头脑的地方
如果你熟悉VIM的指令,在Notebook中的操作会很方便,简单来说按下进入命令行模式,再按下或双击鼠标进入编辑模式,在命令行模式下有相应的快捷键便于操作。但是搞不清除这些也无所谓,所有的操作都能够在菜单和工具条上找到,不会影响使用。
新增按钮创建出来的是一个“单元”,默认是,所以要想写需要切换一下,在工具条上可以很容易找到切换按钮。
在单元中所有输入的内容都是代码,都是要通过运行才能得到结果,而每个单元都可以单独运行,默认是运行当前块并把光标跳转到下一个块,安装了扩展,会有一个新的工具条,这里面有更多的运行方式可供选择。如果输入的是Markdown,那么同样需要运行才能看到效果。输入Markdown后可以用快捷键马上看到实际的效果,这个快捷键是运行当前单元但还是停留在原地。如果安装了扩展,可以实时看到Markdown的效果,非常直观有效。Markdown同时还支持LaTeX数学公式,具体请自行研究
执行系统命令
如果单元中需要运行操作系统的指令,可以在命令前加上运行,但是请注意是不会改变当前的运行目录,即多次切换路径后执行总是显示我们在配置文件里定义的notebook_dir路径。
魔法指令
还有一些魔法指令是属于Jupyter Notebook本身的操作,命令都是使用开头,运行可以看到所有的魔法指令,具体应用也请自行查阅官方文档,在使用matplotlib画图时,可能会出现错误,按网上推荐的操作,是告诉Jupyter获取所有matplotlib生成的图形,并把它们全部嵌入到notebook中。为此,只需输入以下命令:
这条语句执行可能会花点时间,但是只需要你打开notebook时执行一次就好
我在初步尝试绘图时并没有运行这条魔法指令,所以可能和安装环境或者运行的代码有关,并发必要条件
变量
整个Notebook的变量都是在一个命名空间内,所以只要在第一个单元中申明过的变量或者导入的模块,在后面的单元中都可以直接使用,这样可以把代码编写成一个个片段,便于调试和查看。
安装了扩展后,在菜单上会多出一个,里面有一些常用模块的代码片段,比如用NumPy生成一个多维数组数据,很适合学习python时使用。同时还Markdown的语法片段,需要插入图片、表格时忘记语法也不怕。
安装了扩展后,可以在Markdown的单元中使用就能调用之前的python单元中的变量值
单元
单元中编辑代码时还可以使用代码补全的快捷键,Tab键在Markdown里是正常的编辑缩进操作,但是在Code里面可以补全命令或提示代码,操作同Linux的命令补全方法。
单元如果要调整位置可以用工具条中的上下按钮,而如果想在现有的单元前插入一个新的块,就需要在菜单中选择,或者使用快捷键
更多快捷键可以看-
保存下载
幸辛苦苦写了一大堆内容,万一挂了怎么办?
Jupyter Noteb有自动保存,同时自己也可以执行-
在菜单下还有很多格式可以转化并下载,但是相应的转化是需要有对应的模块支持的,导出成不需要特殊模块,导出成还需要有其他模块的支持,具体可以自行尝试。安装过扩展后,可以把当前Notebook中所有的内容(包括输出结果)导出成一个静态Html页,内嵌了样式和图片,便于放到其他网站上。
添加新的内核
Jupyter Notebook不仅可以使用python,还可以使用其他开发语言作为内核,在Jupyter的github wiki中列出了所支持的内核列表,可以选择安装自己熟悉的开发语言,比如安装了可以创建Node.js类型的Notebook。
需要注意的是,每个Notebook都只能使用一种语言内核,除了在新建时需要决定内核,在创建Notebook后也可以在菜单-切换内核。
以上内容都是在中编写,作为一个web端的Markdown编辑器来说还不错,不过日常使用(比如写这段文字)还是推荐使用,所见即所得,可以导出成各种样式,并且跨平台支持Windows和Mac。
保存的文件可以在github上可以直接预览,这个很赞。之前说过的就是基于搭建,所以可以在本地创建的文件可以直接上传到Colab使用。
领取专属 10元无门槛券
私享最新 技术干货