机器学习:软件工程方法与实现
上QQ阅读APP看书,第一时间看更新

2.5.1 开发镜像

本节使用Python的Docker镜像作为将数据科学项目固化的开发环境。网上有很多基于Python的镜像,比如Anaconda、sklearn、深度学习(比如TensorFlow、PandlePandle)等。这里依然推荐Anaconda镜像或裁剪版的Anaconda。当然,也鼓励用户使用自定义的镜像。为了演示如何自定义镜像,这里给出了一份Dockerfile文件(可理解为裁剪版的Anaconda),其中包含了使用sklearn进行机器学习建模所需的基础常见包。大家可以依据此Dockerfile自己构建,也可在Docker仓库搜索chansonz/ml_dev_env并下载。


FROM ubuntu:bionic-20190204
LABEL MAINTAINER="Chanson Zhang <xtdwxk@gmail.com>"
ENV LC_ALL=C.UTF-8
ENV LANG=C.UTF-8
ENV PYTHON_PACKAGES="\
    numpy==1.16.2 pandas==0.24.1 \
    matplotlib==3.0.3 seaborn==0.9.0 missingno==0.4.1\
    scikit-learn==0.20.3 scikit-image==0.14.2 \
    imblearn==0.0 minepy== 1.2.3 lime== 0.1.1.32 \
    graphviz==0.10.1 imbalanced-learn== 0.4.3 shap==0.28.5 \
    statsmodels== 0.9.0  xgboost ==0.82 lightgbm ==2.2.3
    jupyter jupyter_contrib_nbextensions \
    # 省略了部分包
" 
RUN apt-get update
RUN apt-get install -y python3
RUN apt-get install -y python3-pip
RUN pip3 install $PYTHON_PACKAGES
# config
RUN jupyter contrib nbextension install --user && \
    rm -rf ~/.cache

笔者使用命令docker build-t chansonz/ml_dev_env:v1.0构建镜像,使用命令docker push chansonz/ml_dev_env:v1.0将镜像提交到公开仓库。

如前所述,如果要使用Pipenv工作流的方式,则需要使用Pipfile文件。下面给出基于Pipenv的Dockerfile文件示例:


FROM ubuntu:bionic-20190204
LABEL MAINTAINER="Chanson Zhang <xtdwxk@gmail.com>"
ENV LC_ALL=C.UTF-8
ENV LANG=C.UTF-8
RUN mkdir /root/tmp 
COPY Pipfile* /root/tmp 
WORKDIR /root/tmp
RUN apt-get update
RUN apt-get install -y python3
RUN apt-get install -y python3-pip
RUN pip3 install pipenv
RUN pip3 install jupyter
# 使用 Pipfile、Pipfile.lock
RUN pipenv install --three  --system && \
    jupyter contrib nbextension install --user && \
    rm -rf ~/.cache
WORKDIR /
RUN rm -rf /root/tmp