社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

使用Docker构建Python数据科学容器

Python程序员 • 6 年前 • 561 次点击  


人工智能(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社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/54534