anaconda 升级jupyter notebook_远程Jupyter来实现Python气象聚类分析

日常工作、学习中可能都会有小型工作站或者是服务器(云服务器)供大家使用,而且使用Python的频率也挺高的,那么通常都会有可能个人电脑性能有限、存储空间或者内存有限的情形,那么我们Jupyter notebook就能够发挥很大的作用,特别是在公司、学校、或者单位局域网的环境下,远程的延迟相对较小,使用Jupyter来做Python数据处理和绘图实在是不错的选择。远程端负责计算,个人电脑仅仅是一个编辑器的作用。对于一些云服务器,可能相应的端口管理会更加严格一些,但通过设置远程使用Jupyter基本都没有问题。其实,本文所提及的远程使用jupyter主要集中于Python的配置、安装、使用。各取所需,仅仅做简单推介,不做深入的探讨。后文以Kaggle的气象聚类分析为例,实操一下如何远程Jupyter notebook使用Python的库来计算和绘图。

目标:安装Jupyter,配置服务端Jupyter,远程使用Jupyter,气象聚类分析。 

工具:一台远程服务器、一台本地PC、Python3.x+基础包以及依赖的库、kaggle示例测试数据

1.安装Jupyter

回顾以往公众号的帖子,Python入门标配是安装Anaconda全家桶,如果是macOS或者Linux自身也会有预安装Python,替换掉!,在你安装好Anaconda之后,再进行后续操作,别问我为什么!

使用conda: conda install -c conda-forge jupyterlab 

使用pip:    pip install jupyterlab 

上述步骤为远程端的配置安装,更加详细的内容请参考:链接[1]

2.配置Jupyter

配置文件所在路径

修改一个名为“upyter_notebook_config.py”的文件,这个文档位于home目录之下,不同的操作系统,它所处的位置稍有不同,大致如下:

• Windows: C:\Users\USERNAME\.jupyter\jupyter_notebook_config.py

• OS X: /Users/USERNAME/.jupyter/jupyter_notebook_config.py

• Linux: /home/USERNAME/.jupyter/jupyter_notebook_config.py

创建配置文件

如果你在上述路径下没有找到这个配置文件,那么就需要在终端运行如下命令:

[jpnb@centos-7 ~]$ jupyter notebook --generate-configWriting default config to: /home/jpnb/.jupyter/jupyter_notebook_config.py

设置访问密码

[jpnb@centos-7 ~]$ jupyter notebook passwordEnter password: ****Verify password: ****[NotebookPasswordApp] Wrote hashed password to /home/jpnb/.jupyter/jupyter_notebook_config.json

下面我们还需要手动生成一个hash密码

可能你会问,为什么前面我们生成了一个Jupyter密码,这里还需生成一个hash密码呢?

原因很简单,如果你没有生成这么一个hash密码的话,那么每次通过浏览器远程访问Jupyter时,你都需要输入一次密码,这很繁琐!

但如果我们启用了这个hash密码,只需要首次远程访问Jupyter文档时,输入一次密码,在下次访问时,这个hash密码就好比一个钥匙(token),替我们打开密码之门,也就是免密码登录。

为了生成这个hash密码,我们需要在终端输入“ipython”(全部小写)命令,以进入IPython的交互shell。

然后在IPython中,依次输入如下代码:

In [1]: from notebook.auth import passwdIn [2]: passwd()Enter password:Verify password:Out[2]: 'sha1:67c9e60bb8b6:9ffede0825894254b2e042ea597d771089e11aed'

将hash密码添加到配置文件中

下面,我们把前面生成的hash密码,添加到前面生成的配置文件:jupyter_notebook_config.py

如前所述,这个文件就在我们家目录~/.jupyter中。通过vim打开这个文件:

vim ~/.jupyter/jupyter_notebook_config.py

(Windows用户可以用诸如Notepad++等可视化效果更好的编辑器打开这个文件)。

在270行左右,找到c.NotebookApp.password 所在行,将如下代码:

#c.NotebookApp.password = ' '

前面的注释符号“#”去掉,然后将“=”右边的赋值,由空字符串’’,修改为前面生成的hash密码(注意,每个用户每次重新生成的hash值都是不同的):

c.NotebookApp.password = u'sha1:67c9e60bb8b6:9ffede0825894254b2e042ea597d771089e11aed'

这里,特别需要注意的是,hash密码字符串前面的那个u不可省略

编辑配置文件

jupyter_notebook_config.py 中,除了添加前面提及的hash密码之外,还要修改如下部分代码(如果这些代码前有注释符号‘#’,则首先将其删除,表示启用这些设置):

将默认值False修改为True,表示允许外部访问,这个设置和下面IP设置,双重保障外部用户访问的可达性:

等号右边的‘localhost’(仅仅运行本地访问),修改为‘*’,表示允许所有IP皆可访问

c.NotebookApp.allow_remote_access = True
c.NotebookApp.ip='*'

禁止自动打开浏览器

c.NotebookApp.open_browser = False

设置一个固定的notebook服务会监听的IP端口(这里设置为9999),这个值可以任意,只要保证不和其他已经启用的端口号冲突即可。

c.NotebookApp.port = 9999

做完上述配置之后,保存文件并退出。

但此时修改的配置并没有生效,我们还需要在终端输入“jupyter notebook”命令,这样确保Jupyter重新加载jupyter_notebook_config.py,进而使得新配置起效。

放行Linux防火墙的端口(非必须,我的工作站就没有这一步!使用推荐默认端口也OK!)

Jupyter Notebook的设置已经接近尾声。但工作还没有做完。虽然我们开启了访问的端口,但Jupyter Notebook毕竟仅是Linux的一个应用程序,仅仅是它许可开放某个端口,这还不够。Linux还得有个“外交部”——防火墙,只有它许可开放,那才是真的开放。因此,下面的工作就是设置防火墙的端口开放。倘若开放某个端口(如9999),使用如下命令:

jpnb@centos-7 .jupyter]$ sudo firewall-cmd --zone=public --add-port=9999/tcp --permanent[sudo] jpnb 的密码:****Success

如果我们开放的不是9999,则修改上述端口号即可。

同样,有了新设置,我们还需要重新启动防火墙,使之生效。使用下面的命令,即可达到重启防火墙的功效:

[jpnb@centos-7 .jupyter]$ sudo systemctl restart firewalld

3.远程Jupyter

“是骡子是马,拉出来溜溜”。

配置了半天,我们看看能不能访问远程的Jupyter文档呢。我们先通过“ifconfig”来查看一下本机IP,这个流程并不是必需的,它主要是要证明,下面Jupyter文档的访问不是本地完成的。

远程SSH登录Jupyter服务器

现在我们远程SSH登录Jupyter服务器(IP地址为192.168.31.176):

YHMacBookPro:~ yhilly$ ssh jpnb@192.168.31.176jpnb@192.168.31.176's password:Last login: Thu May 2 14:20:19 2019 from 192.168.31.194

在登录之后,我们启动Jupyter服务器,并让这个服务器后台运行:

[jpnb@centos-7 ~]$ nohup jupyter notebook &[1] 18505[jpnb@centos-7 ~]$ nohup: 忽略输入并把输出追加到"nohup.out"

这里简单解释一下nohup的含义,nohup就是不挂起的意思( no hang up)。该命令的一般形式为:

nohup command &

使用&命令后,作业被提交到后台运行,当前控制台没有被占用,否则,一旦把当前终端关掉(退出帐户时),作业就会停止运行。

nohup命令可以在你退出帐户之后继续运行相应的进程。

本地个人PC开启远程Jupyter

然后,我们在地址栏中输入远程服务器的IP和端口号:“http://192.168.31.176:9999/”,如图所示:

8df7a4886df13aaf9ea5caba5ec44ef2.png

Jupyter会提示我们输入先前设置的密码。一旦输入密码后,就可以在浏览器上看到运行的Jupyter文档,如图所示:

dbe6488276f31155c7987ee5a64ce117.png

具体参考内容:链接[2]

4.气象聚类分析实例

Weather Data Clustering using K-Means Python notebook using data from minute_weather 

Clustering with scikit-learn

详情链接:链接[3]

In this notebook, we will learn how to perform k-means lustering usingscikit-learn in Python.We will use cluster analysis to generate a big picture model of the weather at a local station using a minute-graunlarity data. In this dataset,we have in the order of millionsrecords. How do we create 12 clusters our of them?

05caf9d89f1c64d5175673a8c544bd0b.png

81d2566aac4e658814999a1c72d222f9.png

2c79dd3bddbfcb170b22a7e22642bb18.png

9407b3ab9237aae3c7b60a61ab6c8f62.png

89ca26b5e4e996d7c638059a1f061f41.png

3e6b5b6ef60d5be55c60c61a3526a600.png

4b3d153e5a92acde67ebbbd7aa5e45c8.png

f13ae6bba11dce38b3e1e938401d19ab.png

8785cd4295ebf04c62b9f9ec20f883fa.png

f2e6e206f35146020f9c82e2dbb1a5a5.png

7b87bbee6f19730de2751b7bedda9d9f.png

608850f7f3e0ec974a4dfc917e72fd1b.png

247d5be9ccf5a6ca9c8f20f74dc2d937.png

9c2a19430dfc71125f5e4f4d04ac0065.png

本文同步更新在微信公众号『气象学家』

往期推荐

Pandas从小白到大师 Python绘制气象实用地图[Code+Data](续) Python绘制气象实用地图(附代码和测试数据) 用机器学习应对气候变化? 最易写出bug?Python命名空间和作用域介绍 捍卫祖国领土从每一张地图开始 Nature(2019)-地球系统科学领域的深度学习及其理解 交叉新趋势|采用神经网络与深度学习来预报降水、温度等案例(附代码/数据/文献)

References

[1] 链接.1: https://jupyterlab.readthedocs.io/en/stable/getting_started/installation.html[2] 链接.2: https://zhuanlan.zhihu.com/p/64524822[3] 链接.3: https://www.kaggle.com/prakharrathi25/weather-data-clustering-using-k-means/data

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值