惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Palo Alto Networks Blog
P
Proofpoint News Feed
GbyAI
GbyAI
Microsoft Azure Blog
Microsoft Azure Blog
B
Blog
Google DeepMind News
Google DeepMind News
N
Netflix TechBlog - Medium
Recorded Future
Recorded Future
M
MIT News - Artificial intelligence
罗磊的独立博客
J
Java Code Geeks
月光博客
月光博客
F
Full Disclosure
博客园 - 聂微东
人人都是产品经理
人人都是产品经理
U
Unit 42
WordPress大学
WordPress大学
A
About on SuperTechFans
C
Cyber Attacks, Cyber Crime and Cyber Security
SecWiki News
SecWiki News
Security Latest
Security Latest
C
Check Point Blog
C
CERT Recently Published Vulnerability Notes
小众软件
小众软件
I
InfoQ
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
B
Blog RSS Feed
V
Visual Studio Blog
博客园_首页
NISL@THU
NISL@THU
I
Intezer
Spread Privacy
Spread Privacy
AWS News Blog
AWS News Blog
The Register - Security
The Register - Security
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Latest news
Latest news
Project Zero
Project Zero
博客园 - 叶小钗
C
Cybersecurity and Infrastructure Security Agency CISA
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
P
Privacy International News Feed
博客园 - 【当耐特】
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
T
Threat Research - Cisco Blogs
Simon Willison's Weblog
Simon Willison's Weblog
T
Tor Project blog
V
Vulnerabilities – Threatpost
博客园 - 司徒正美
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
雷峰网
雷峰网

夜行人

回家路上 第一期的直播演示项目 震动检测器 正能量 在线参观CodeLab Neverland 发布 CodeLab Adapter 3.3.1 DynamicTable 之 纸糊方向盘 CodeLab DynamicTable: 一个可实施的技术方案 CodeLab Insight 发布 Alpha 版 情人节 Home Assistant 周报 && IoT 周报 (02) Joplin: 关注隐私的 Evernote 开源替代软件 浏览器的未来与 Web 传感器 Home Assistant 周报 && IoT 周报 (01) 百宝箱(01) 论自由 介绍 WebThings Home Assistant 周报 && iot 周报 (00) 百宝箱(00) 毛姆读书心得 传世之作 周末徒步 CodeLab Adapter ❤️ Jupyter/Python 航班 躲雨 夏令营途中 [译]思想--作为一种技术 The future of coding 美国之行 三门问题的程序模拟 从Python转向Pharo https://blog.just4fun.site/post/iot/iot-open-source-projects/ Python异步编程笔记 https://blog.just4fun.site/post/iot/iot-open-source-hardware-community/ 万物积木化开发者社区 CodeLab ❤️ Blender Scratch3技术分析之云变量 API(第7篇) [译]对管道(Pipes)的偏爱 [译]提出正确的问题比得到正确答案更重要 蓝牙设备与Scratch3.0 创建你的第一个Scratch3.0 Extension Scratch3技术分析之项目内部数据(第6篇) Scratch3技术分析之社区 API(第5篇) Scratch3技术分析之User API(第4篇) Scratch3技术分析之项目主页API(第3篇) Scratch3技术分析之静态资源API(第2篇) Scratch3.0、micro:bit与Windows7 https://blog.just4fun.site/post/iot/zerynth-vs-micropython/ 核聚变、方所与半宅空间 可视化编程为何是个糟糕的主意 codelab.club周末聚会 关于codelab.club '下一件大事'是一个房间 Hungry Robot - Eat everything 编程作为一种思考方式 今日简史 史蒂夫·乔布斯传 罗素自选文集 https://blog.just4fun.site/post/edx/tianjin-scratch-ai/ https://blog.just4fun.site/post/edx/richie-cms-openedx/ 徒步武功山 WebUSB与micro:bit 积木化编程与3D场景 夜宿武功山顶 scratch3-adapter接入优必选Alpha系列机器人 https://blog.just4fun.site/post/edx/video-migration-note/ scratch3-adapter重构笔记 https://blog.just4fun.site/post/edx/edx-community-members/ 两种硬件编程风格的比较 使用micro:bit自制PPT翻页笔 柏拉图对话集 scratch3.0 + micro:bit 七月电影放映计划 非营利组织的管理 Screenly--用树莓派让任何屏幕变为可编程的数字标牌 以最佳实践开始你的Django项目 micro:bit与事件驱动 为Scratch3.0设计的插件系统(上篇) OCR应用一例 近两年读过的一些好书 blockly开发之使用python驱动浏览器中的turtle(2) 牛顿新传 文学理论入门 逻辑的引擎 人生的意义 blockly开发之生成并运行js代码(1) blockly开发之hello world(0) micro:bit使用笔记 神器之Termux https://blog.just4fun.site/post/iot/micropython-notes/ Cozmo what is this Scratch的前世今生 下段旅程 我行在远方 爆裂 途中杂记 https://blog.just4fun.site/post/edx/open-edx-startup/ cozmo系列之入门 - 有性格且可编程的机器人 PaperWeekly开发笔记 创业二三事
[译]如何在容器中开始你的数据科学之旅
种瓜 · 2017-03-09 · via 夜行人

说明: 本文译自How to get started with data science in containers,翻译的原因是我最近正好在关注kaggle开放出来的镜像,看到kaggle官方博客的这篇文章,于是随手翻译.本文主要用google翻译(google的翻译质量已经非常棒了),顺带人为做些润色

正文

现在对数据科学的最大影响并不是来自新的算法或统计方法,而是来自Docker容器。容器同时解决了一堆棘手的问题:

  • 使配置复杂的的库易于使用
  • 使得你的输出可再现
  • 容易分享你的工作;
  • 让你从Python数据科学栈中解脱出来。

我们在Kaggle Scripts的核心中使用Docker容器。使用Scripts能让你了解可以用数据科学容器做些什么。当然你也可以在自己的电脑室折腾它,我将在下文中介绍。

为什么要使用容器?

容器就像超轻量的虚拟机。从快照还原正常VM时,可能需要一分钟左右才能完成,但Docker容器大约在一毫秒内启动。所以你可以在容器中运行一些东西,就像运行一个本地二进制文件一样。每次重新启动容器时,其执行环境都是相同的,这使给予了你可重复性。而且容器在OS X,Windows和Linux上运行相同,因此协作和共享变得比以前容易得多。

在我看来容器的最好的东西是,他们消除了在数据科学里使用python的痛苦。对统计来说,R和Python都很伟大,当然他们也都有自己的优势和弱点,但他们之间的一个显著的区别是处理库和包的方式。R的install.packages()机制运行得非常顺利,包之间的冲突是罕见的。如果你的项目需要某个依赖库你本地却没安装,你可以从CRAN安装它,一会儿便好。

我们来与Python做个比较。在Python世界中,典型的工作流将是这样:你需要X库,所以调用pip install X,它还安装了依赖库A、B和C。但B已经通过easy_install安装到你的系统里了,所以停止pip安装过程,只是部分地删除新的东西,然后import B将无法正常运行。或者你发现C依赖于你后来安装的numpy的版本,而库Y和Z却链接到一个老的numpy库。等等等等。

Python的库安装过程逐渐产生出此类问题,在库之间产生冲突,以及同一系统上单一的Python setups产生的进一步冲突。使用virtualenv可以起到一点帮助,但以我的经验,它只是延缓崩溃而已。最终你都必须重新安装Python。这还没考虑你把一个库正常跑起来的时间。

如果你在一个容器中使用Python,所有这些问题都消失了。你只需要一次性投入时间去设置容器:一旦构建完成,你就全部搞定。事实上,如果你使用Kaggle的容器,你不必担心去构建任何东西。而且你可以轻松尝试新的包,一旦你退出一个容器会话,它将重置自己为初始状态。

他们包含什么

为了运行Kaggle Scripts,我们把三个Docker容器放在一起:kaggle/rstats有一个安装了所有的CRAN包和许多其他包的R语言环境,kaggle/julia包含Julia 0.5以及一组数据科学库,kaggle/python是一个Anaconda Python环境,带有许多库。要查看容器内部的详细信息,您可以浏览构建它们时所用的Dockerfile,这些都是开源的。我们不得不将其分割成几个部分,以便于我们可以在Docker Hub自动构建他们:这里是链接到Python part1part2part3 ; rcran022,和rstats ; Julia part1part2

此外请注意:我们只支持Python 3.现在已经2016年了

如何开始

这里有一个在本地设置Python容器的方法。这些具体的步骤是为OS X准备的,但Windows或Linux下也同样容易配置,如果你rtfm(Read The Fucking Manual)

第一步:跳到Docker网站,并在你的系统上安装Docker,安装很容易,不过眨眼工夫

第二步: 默认创建一个Linux虚拟机来运行你的容器(译者注:新版本的Docker在mac下不需要虚拟机了) ,别怕,它很小,且专注在数据科学。我们来创建一个新的,我们把它叫做’docker2'

$ docker-machine create -d virtualbox --virtualbox-disk-size "50000" --virtualbox-cpu-count "4" --virtualbox-memory "8092" docker2

你可以定制disk-sizecpu-countmemory

第三部,启动它:

1
2
$ docker-machine start docker2
$ eval $(docker-machine env docker2)

如果你新开一个终端窗口,docker无法连接到守护进程,请确认docker守护进程是否在本机运行,然后再执行以上两行

第四步: 拉取目标镜像:

$ docker pull kaggle/python

现在可以在容器中运行东西了,下边是些辅助脚本(让你更方便使用它),将他们放入.bashrc中(windows用户点这里)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
kpython(){
  docker run -v $PWD:/tmp/working -w=/tmp/working --rm -it kaggle/python python "$@"
}
ikpython() {
  docker run -v $PWD:/tmp/working -w=/tmp/working --rm -it kaggle/python ipython
}
kjupyter() {
  (sleep 3 && open "http://$(docker-machine ip docker2):8888")&
  docker run -v $PWD:/tmp/working -w=/tmp/working -p 8888:8888 --rm -it kaggle/python jupyter notebook --no-browser --ip="\*" --notebook-dir=/tmp/working
}

现在你可以使用kpython来替代pythonikpython替代ipython,kjupyter替代jupyter notebook.这些指令都将让你即刻进入Kaggle组装的完整数据科学环境

希望你和我一样喜欢这些容器.