人工智能(AI)和机器学习(ML)最近真的火了,并驱动了从自动驾驶汽车到药物发现等等应用领域的快速发展。AI和ML的前途一片光明。

另一方面,Docker通过引入临时轻量级容器彻底改变了计算世界。通过使用一个COW(写时拷贝)层来保存数据,容器基本上封装了在一个映像(一堆只读层)中运行所需的所有软件。废话少说,让我们开始构建一个Python数据科学容器吧。

Python数据科学包

我们的Python数据科学容器利用了以下超酷的Python包:

  1. NumPy: NumPy或Numeric Python支持大型、多维数组和矩阵。它为数学和数值操作提供了快速的预编译函数。此外,NumPy还使用强大的数据结构优化了Python编程,以便高效地计算多维数组和矩阵。

  2. SciPy: SciPy为回归、最小化、傅里叶变换等提供了有用的函数。基于NumPy, SciPy扩展了它的功能。SciPy的主要数据结构也是一个多维数组,由Numpy实现。该软件包包含了能帮助我们解决线性代数、概率论、积分和更多任务的工具。

  3. Pandas: Pandas为操作数据结构和执行广泛的数据分析提供了功能强大的工具。它可以很好地处理不完整的、非结构化的和无序的真实数据,并提供了用于整形、聚合、分析和可视化数据集的工具。

  4. SciKit-Learn: SciKit-Learn是一个集成了各种最先进的机器学习算法的Python模块,可用于中等规模的监督和无监督学习的问题。它是最著名的python机器学习库之一。Scikit-learn包侧重于使用通用高级语言将机器学习带给非专业人士。主要强调的是易用性、性能、文档和API一致性。SciKit-Learn授权于简化的BSD许可下,具有最小的依赖项并易于分发,被广泛应用于学术和商业环境。Scikit-learn为常见的机器学习算法提供了一个简洁和一致的接口,从而使将ML引入生产系统中变得容易。

  5. Matplotlib: Matplotlib是一个Python 2D绘图库,能够在多种硬拷贝格式和跨平台的交互式环境中生成出版物质量图。Matplotlib可用于Python脚本、Python和IPython shell、Jupyter笔记本、web应用服务器和四个图形用户界面工具包中。

  6. NLTK: NLTK是一个用于构建处理人类语言数据的Python程序的领先平台。它为50多个语料库和词汇资源(如WordNet)提供了易于使用的接口,以及一套用于分类、标记、词干分析、标签化、解析和语义推理的文本处理库。

构建数据科学容器

Python正迅速成为数据科学家的首选语言,因此我们将使用Python作为构建我们数据科学容器的首选语言。

基础Alpine Linux映像

Alpine Linux是一个很小的Linux发行版,专为喜欢安全性、简单性和资源效率的高级用户设计。

正如Alpine所宣称的:

小。简单。安全。Alpine Linux是一个面向安全的轻量级Linux发行版,基于musl libc和busybox。

Alpine映像非常小,其中容器的大小不超过8MB。通过最小化的包安装来减少底层容器上的攻击面。这使得Alpine成为我们数据科学容器的一个选择映像。

下载并运行Alpine Linux容器非常简单,使用以下命令:

在我们的Dockerfile中,我们可以简单地通过以下命令来使用Alpine 基础映像:

多说无益,我们来构建Dockerfile

现在让我们来构建Dockerfile.

FROM指令用于将alpine-latest设置为基本映像。使用WORKDIR指令,我们将/var/www设置为我们容器的工作目录。ENV PACKAGES列出了我们的容器所需的软件包,如git、blas和libgfortran。我们的数据科学容器所需的python包被定义在ENV PACKAGES中。

我们将所有的命令合并到一个Dockerfile RUN指令下,以减少层数,从而帮助我们减少最终的映像大小。

构建和标签化映像

现在我们已经定义了我们的Dockerfile,使用终端导航到Dockerfile所在的文件夹,并使用以下命令构建映像:

-t标志用于以“name-tag”格式命名一个标记。-f标记用于定义Dockerfile的名称(默认为“PATH/Dockerfile”)。

运行容器

我们已经成功地构建并标签化了docker映像,现在我们可以使用以下命令来运行该容器:

瞧,我们可以看到一个python shell已经准备好执行各种很酷的数据科学的东西了。

我们的容器附带了Python2.7,但是如果你想使用Python3.6,也不要难过。瞧,你可以查看Python 3.6的Dockerfile:

像这样构建和标签化映像:

像这样运行该容器:

这样做了之后,你就有了一个可以用来完成各种很酷的数据科学工作的容器了。

福利

你有足够的时间和资源来建立这些东西。如果你没有,你可以拉取我已经构建并提交到Docker注册中心Docker Hub的现有映像,使用以下命令:

在拉取映像之后,你可以使用该映像或在你的Dockerfile文件中扩展相同的映像,或者你也可以在你的docker-compose或stack文件中将其作为一个映像使用。

最后

AI和ML的世界最近正在变得异常火热,并且将继续变得更加火热。大型企业正在这些领域大举投资。当你开始利用数据的力量时,谁知道它可能会带来一些什么样的不可思议的东西。

你可以在这里查看代码。

faizanbashir / python-datascience(地址:https://github.com/faizanbashir/python-datascience  )

我希望本文有助于你为你的数据科学项目构建容器。

本文最初发表于HackerNoon

英文原文:https://faizanbashir.me/building-python-data-science-container-using-docker-c8e346295669
译者:Nothing

使用python构建向量空间_使用Docker构建Python数据科学容器相关推荐

  1. docker容器化python开发环境_如何 Docker 化 Python Django 应用程序

    Docker 是一个开源项目,为开发人员和系统管理员提供了一个开放平台,可以将应用程序构建.打包为一个轻量级容器,并在任何地方运行.Docker 会在软件容器中自动部署应用程序. Django 是一个 ...

  2. python编程基础_月隐学python第2课

    python编程基础_月隐学python第2课 学习目标 掌握变量的输入和输出 掌握数据类型的基本概念 掌握算数运算 1.变量的输入和输出 1.1 变量输入 使用input输入 input用于输入数据 ...

  3. 查看Python的版本_查看当前安装Python的版本

    一.查看Python的版本_查看当前安装Python的版本 具体方法: 首先按[win+r]组合键打开运行: 然后输入cmd,点击[确定]: 最后执行[python --version]命令即可. 特 ...

  4. python问题分享_零基础入门Python常见问题分享

    零基础入门Python常见问题有哪些?作为经常混迹在各大Python技术论坛的小编而言,见到最多的话题就是:学习Python难不难?零基础可以学习Python吗?如何学习Python?等等.今天小编就 ...

  5. 快速数据库框架_快速学习新的数据科学概念的框架

    快速数据库框架 重点 (Top highlight) 数据科学 (Data Science) Success in data science and software engineering depe ...

  6. 唐宇迪机器学习课程数据集_最受欢迎的数据科学和机器学习课程-2020年8月

    唐宇迪机器学习课程数据集 There are a lot of great online resources and websites on data science and machine lear ...

  7. Docker机器学习和数据科学大师班

    Docker机器学习和数据科学大师班 了解如何使用 Docker 容器化和部署您的机器学习项目 此视频教程共4.0小时,中英双语字幕,画质清晰无水印,源码附件全 课程英文名:Docker Master ...

  8. 如何使用 Docker 快速配置数据科学开发环境?

    如何使用 Docker 快速配置数据科学开发环境? 数据科学开发环境配置起来让人头疼,会碰到包版本不一致.错误信息不熟悉和编译时间漫长等问题.这很容易让人垂头丧气,也使得迈入数据科学的这第一步十分艰难 ...

  9. python在煤矿的用途-仁寿高校邦数据科学通识课【Python爬虫】答案

    仁寿高校邦数据科学通识课[Python爬虫]答案it8p 仁寿高校邦数据科学通识课[Python爬虫]答案 关注公众号{帅搜}即可查询答案 支持:大学网课,智慧树,知到,超星,尔雅,学习通,选修课,公 ...

最新文章

  1. bash命令行常用快捷键
  2. 学习python用哪个app-Python和R:学哪个好?
  3. nodejs-安装/helloworld/npm
  4. Python基础教程(六):list、tuple、dictionary
  5. shell编程之数学运算
  6. 初识机器学习——吴恩达《Machine Learning》学习笔记(八)
  7. javaweb 学习资源
  8. shell生成随机文件名
  9. Springboot全局异常统一处理返回json
  10. 中国古代道家思想与网页重构的思考
  11. 刚刚!老干妈发布警方通报:3人伪造印章与腾讯签协议已刑拘,腾讯:辣椒酱不香了...
  12. 几种主流热修复方案分析
  13. dell笔记本电脑驱动_驱动到底是什么?别再用精灵管家无脑装驱动了
  14. PHP 控制器怎么调接口,mvc控制器的访问与参数解析和API接口获取数据
  15. 计算机教学说课稿,计算机教学说课稿
  16. hiar sdk for android,HiAR | HiAR SDK for Unity | 涂涂乐开发教程
  17. 谷歌:民主国家搜索引擎的消费监控
  18. IEEE软件工程标准词汇表定义需求
  19. Sparse R-CNN: End-to-End Object Detection with Learnable Proposals
  20. 如何上传本地代码到github仓库

热门文章

  1. Linux网络防火墙:iptables与netfilter
  2. 关系型数据库(Relational Database)与非关系型数据库(NoSQL)的区别:(MySQL,Redis,Memcache,MongoDB)
  3. unicode编码表_6-字符编码-文件处理
  4. linux内核启动文件系统,Linux启动过程中文件系统的加载
  5. python3两个三阶矩阵相乘公式_Numpy 两个矩阵部分维度相乘,有没有很快的方法?...
  6. Navicat的快捷键
  7. java多元解析方程组
  8. qt 运动控制软件 界面_开源库分享----一款跨平台图形界面的百度网盘不限速客户端...
  9. 多重背包单调队列优化思路_多重背包问题
  10. php array 取值 没有key,PHP array_key_exists不起作用;数组不是多维的