个性化阅读
专注于IT技术分析

在Windows上设置Python进行机器学习

本文概述

近年来, Python已广泛用于数值和科学应用程序。但是, 为了以高效的方式执行数值计算, Python依赖于外部库, 有时使用其他语言实现, 例如NumPy库, 该库部分使用Fortran语言实现。

由于存在这些依赖性, 因此有时会为链接所有必要的库而建立用于数值计算的环境并非易事。人们通常很难在涉及使用Python进行机器学习的研讨会上使事情正常进行, 尤其是当他们使用缺少软件包管理系统的操作系统(例如Windows)时。

在本文中, 你将:

  • 逐步详细介绍如何设置Python环境以在Windows操作系统上进行数值计算
  • 引入Anaconda, Python发行版旨在解决这些设置问题
  • 了解如何在Windows计算机上安装发行版并使用其工具来管理软件包和环境
  • 使用已安装的Python堆栈构建神经网络并对其进行训练, 以解决经典的分类问题

免费奖金:单击此处可访问Conda速查表, 并提供用于管理Python环境和软件包的便捷用法示例。

移除广告

介绍Anaconda和Conda

自2011年以来, Python包含了pip, 这是一个软件包管理系统, 用于安装和管理以Python编写的软件包。但是, 对于数值计算, 存在一些不是用Python编写的依赖项, 因此pip的初始发行版无法自行解决问题。

为了解决这个问题, Continuum Analytics发布了Anaconda(Python发行版), 专注于科学应用程序, 而Conda(软件包和环境管理系统)则由Anaconda发行版使用。值得注意的是, 较新版本的pip可以使用滚轮处理外部依赖关系, 但是, 通过使用Anaconda, 你将能够更加顺利地安装用于数据科学的关键库。 (你可以在此处阅读有关此讨论的更多信息。)

尽管Conda与Anaconda Python发行版紧密结合, 但这两个是具有不同目标的不同项目:

  • Anaconda是PyData生态系统中软件的完整发行版, 包括Python本身以及几个第三方开源项目的二进制文件。除Anaconda之外, 还有Miniconda, 它是最小的Python发行版, 基本上包括Conda及其依赖项, 因此你可以从头开始仅安装所需的软件包。
  • Conda是一个程序包, 依赖项和环境管理系统, 无需安装Anaconda或Miniconda即可安装。它可以在Windows, macOS和Linux上运行, 并且是为Python程序创建的, 但是可以打包和分发适用于任何语言的软件。主要目的是通过下载预编译的软件版本来轻松解决外部依赖项问题。从这个意义上讲, 它更像是通用软件包管理器(例如APT或YUM)的跨平台版本, 它有助于以与语言无关的方式查找和安装软件包。另外, Conda是环境经理, 因此, 如果你需要一个需要使用不同版本Python的软件包, 则可以通过使用Conda来设置使用完全不同版本的Python的单独环境, 并在该版本上维持你通常的Python版本你的默认环境。

关于为Python生态系统创建另一个包管理系统的讨论很多。值得一提的是, Conda的创建者将Python标准包装推到了极限, 并且仅在明确这是唯一合理的发展途径时才创建了第二个工具。

奇怪的是, 甚至是Guido van Rossum在2012年首届PyData大会上的演讲中说:“在打包方面, “听起来与大型Python社区相比, 你的需求是如此不同寻常, 你的状况会更好建立自己的。” (你可以观看此讨论的视频。)有关此讨论的更多信息, 请参见此处和此处。

Anaconda和Miniconda已成为最受欢迎的Python发行版, 已在多家公司和研究实验室中广泛用于数据科学和机器学习。它们是免费的开源项目, 目前在存储库中包含1400多个软件包。在下一节中, 我们将介绍在Windows计算机上安装Miniconda Python发行版的过程。

安装Miniconda Python发行版

在本部分中, 你将逐步了解如何在Windows上设置数据科学Python环境。你将使用Miniconda而不是完整的Anaconda发行版来设置仅包含Conda及其依赖项的最小环境, 并使用该环境安装必要的软件包。

Miniconda和Anaconda的安装过程非常相似。基本区别在于Anaconda提供了一个包含许多预安装软件包的环境, 其中许多从未使用过。 (你可以在此处查看列表。)Miniconda极简且干净, 可让你轻松安装Anaconda的任何软件包。

在本文中, 重点将放在使用命令行界面(CLI)设置程序包和环境上。但是, 你可以根据需要使用Conda安装Anaconda Navigator(图形用户界面, GUI)。

可以使用此处提供的安装程序来安装Miniconda。你会注意到有用于Windows, macOS和Linux以及32位或64位操作系统的安装程序。你应该根据Windows安装情况考虑适当的体系结构, 并下载Python 3.x版本(在撰写本文时为3.7)。

不再有理由在新项目上使用Python 2, 并且如果确实需要在正在处理的某些项目上使用Python 2, 由于某些库尚未更新, 则可以使用以下命令设置Python 2环境Conda, 即使你安装了Miniconda Python 3.x发行版, 也将在下一部分中看到。

下载完成后, 你只需运行安装程序并按照安装步骤操作:

  • 在欢迎屏幕上单击“下一步”:
Miniconda安装程序欢迎屏幕
  • 单击我同意以同意许可条款:
![Miniconda安装程序许可证
  • 选择安装类型, 然后单击下一步。使用Anaconda或Miniconda的另一个优点是可以使用本地帐户安装发行版。 (不必拥有管理员帐户。)在这种情况下, 请选择Just Me。否则, 如果你具有管理员帐户, 则可以选择“所有用户”:
iniconda安装程序安装类型
  • 选择安装位置, 然后单击下一步。如果你选择仅为自己安装, 则默认位置将是用户个人文件夹下的Miniconda3文件夹。请勿在Miniconda路径中的文件夹名称中使用空格, 这一点很重要, 因为在文件夹名称中使用空格时, 许多Python软件包都会出现问题:
Miniconda安装程序的安装位置
  • 在“高级安装选项”中, 建议使用默认选项, 即不将Anaconda添加到PATH环境变量中, 并将Anaconda注册为默认Python。单击安装开始安装:
Miniconda Installer高级安装选项
  • 等待安装程序复制文件:
Miniconda安装程序安装
  • 安装完成后, 单击“下一步”:
Miniconda安装程序安装完成
  • 单击完成以完成安装并关闭安装程序:
Miniconda安装程序完成

由于Anaconda未包含在PATH环境变量中, 因此其命令在Windows默认命令提示符下将不起作用。要使用发行版, 你应该启动自己的命令提示符, 可以通过单击开始按钮和Anaconda3(64位)下的Anaconda Prompt来完成:

启动Anaconda提示

当提示打开时, 你可以通过运行conda –version来检查Conda是否可用:

(base) C:\Users\IEUser>conda --version
conda 4.5.11

要获取有关安装的更多信息, 你可以运行conda info:

(base) C:\Users\IEUser>conda info

     active environment : base
    active env location : C:\Users\IEUser\Miniconda3
            shell level : 1
       user config file : C:\Users\IEUser\.condarc
 populated config files : C:\Users\IEUser\.condarc
          conda version : 4.5.11
    conda-build version : not installed
         python version : 3.7.0.final.0
       base environment : C:\Users\IEUser\Miniconda3  (writable)
           channel URLs : https://repo.anaconda.com/pkgs/main/win-64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/free/win-64
                          https://repo.anaconda.com/pkgs/free/noarch
                          https://repo.anaconda.com/pkgs/r/win-64
                          https://repo.anaconda.com/pkgs/r/noarch
                          https://repo.anaconda.com/pkgs/pro/win-64
                          https://repo.anaconda.com/pkgs/pro/noarch
                          https://repo.anaconda.com/pkgs/msys2/win-64
                          https://repo.anaconda.com/pkgs/msys2/noarch
          package cache : C:\Users\IEUser\Miniconda3\pkgs
                          C:\Users\IEUser\AppData\Local\conda\conda\pkgs
       envs directories : C:\Users\IEUser\Miniconda3\envs
                          C:\Users\IEUser\AppData\Local\conda\conda\envs
                          C:\Users\IEUser\.conda\envs
               platform : win-64
             user-agent : conda/4.5.11 requests/2.19.1 CPython/3.7.0 Windows/10 Windows/10.0.17134
          administrator : False
             netrc file : None
           offline mode : False

现在你已经安装了Miniconda, 让我们看看Conda环境如何工作。

移除广告

了解Conda环境

从头开始开发项目时, 建议你使用所需库的最新版本。但是, 在处理其他人的项目时, 例如从Kaggle或Github运行示例时, 由于兼容性问题, 你可能需要安装特定版本的软件包, 甚至是另一版本的Python。

当你尝试运行很久以前开发的应用程序时, 也可能会出现此问题, 该应用程序使用的特定库版本由于更新而不再适用于你的应用程序。

虚拟环境是解决此类问题的一种方法。通过使用它们, 可以创建多个环境, 每个环境具有不同版本的软件包。典型的Python设置包括Virtualenv, 这是一种用于创建隔离的Python虚拟环境的工具, 该工具在Python社区中广泛使用。

Conda包括自己的环境管理器, 并提供了优于Virtualenv的一些优势, 特别是在数字应用程序方面, 例如, 管理非Python依赖项的能力以及管理不同版本的Python的能力, 这是Virtualenv所无法实现的。除此之外, Conda环境与可以使用pip安装的默认Python软件包完全兼容。

Miniconda安装为Conda和根环境提供了Python版本并安装了一些基本软件包。除了此根环境之外, 还可以设置其他环境, 包括不同版本的Python和软件包。

使用Anaconda提示符, 可以通过运行conda env列表来检查可用的Conda环境:

(base) C:\Users\IEUser>conda env list
# conda environments:
#
base                  *  C:\Users\IEUser\Miniconda3

此基本环境是由Miniconda安装程序创建的根环境。通过运行conda create –name otherenv, 可以创建另一个名为otherenv的环境:

(base) C:\Users\IEUser>conda create --name otherenv
Solving environment: done

## Package Plan ##

  environment location: C:\Users\IEUser\Miniconda3\envs\otherenv


Proceed ([y]/n)? y

Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate otherenv
#
# To deactivate an active environment, use
#
#     $ conda deactivate

如环境创建过程完成后所通知, 可以通过运行conda activate otherenv来激活otherenv环境。你会注意到提示开头括号中的指示表明环境已发生变化:

(base) C:\Users\IEUser>conda activate otherenv

(otherenv) C:\Users\IEUser>

你可以通过运行python在此环境中打开Python解释器:

(otherenv) C:\Users\IEUser>python
Python 3.7.0 (default, Jun 28 2018, 08:04:48) [MSC v.1912 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

该环境包括Python 3.7.0, 与根基础环境中包含的相同版本。要退出Python解释器, 只需运行quit():

>>> quit()

(otherenv) C:\Users\IEUser>

要停用otherenv环境并返回到根基础环境, 应运行deactivate:

(otherenv) C:\Users\IEUser>deactivate

(base) C:\Users\IEUser>

如前所述, Conda允许你使用不同版本的Python轻松创建环境, 这对于Virtualenv而言并不简单。要在环境中包含其他Python版本, 你必须在运行conda create时使用python = <version>进行指定。例如, 要使用Python 2.7创建一个名为py2的环境, 你必须运行conda create –name py2 python = 2.7:

(base) C:\Users\IEUser>conda create --name py2 python=2.7
Solving environment: done

## Package Plan ##

  environment location: C:\Users\IEUser\Miniconda3\envs\py2

  added / updated specs:
    - python=2.7


The following NEW packages will be INSTALLED:

    certifi:        2018.8.24-py27_1
    pip:            10.0.1-py27_0
    python:         2.7.15-he216670_0
    setuptools:     40.2.0-py27_0
    vc:             9-h7299396_1
    vs2008_runtime: 9.00.30729.1-hfaea7d5_1
    wheel:          0.31.1-py27_0
    wincertstore:   0.2-py27hf04cefb_0

Proceed ([y]/n)? y

Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate py2
#
# To deactivate an active environment, use
#
#     $ conda deactivate


(base) C:\Users\IEUser>

如conda create的输出所示, 由于新环境使用Python 2, 因此这次安装了一些新软件包。你可以通过激活它并运行Python解释器来检查新环境是否确实在使用Python 2:

(base) C:\Users\IEUser>conda activate py2

(py2) C:\Users\IEUser>python
Python 2.7.15 |Anaconda, Inc.| (default, May  1 2018, 18:37:09) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

现在, 如果运行conda env list, 则除了根基本环境外, 还应该看到创建的两个环境:

(py2) C:\Users\IEUser>conda env list
# conda environments:
#
base                     C:\Users\IEUser\Miniconda3
otherenv                 C:\Users\IEUser\Miniconda3\envs\otherenv
py2               *  C:\Users\IEUser\Miniconda3\envs\py2


(py2) C:\Users\IEUser>

在列表中, 星号表示激活的环境。可以通过运行conda remove –name <environment name> –all来删除环境。由于无法删除已激活的环境, 因此你首先应停用py2环境以将其删除:

(py2) C:\Users\IEUser>deactivate

(base) C:\Users\IEUser>conda remove --name py2 --all

Remove all packages in environment C:\Users\IEUser\Miniconda3\envs\py2:


## Package Plan ##

  environment location: C:\Users\IEUser\Miniconda3\envs\py2


The following packages will be REMOVED:

    certifi:        2018.8.24-py27_1
    pip:            10.0.1-py27_0
    python:         2.7.15-he216670_0
    setuptools:     40.2.0-py27_0
    vc:             9-h7299396_1
    vs2008_runtime: 9.00.30729.1-hfaea7d5_1
    wheel:          0.31.1-py27_0
    wincertstore:   0.2-py27hf04cefb_0

Proceed ([y]/n)? y


(base) C:\Users\IEUser>

既然你已经了解了使用Conda进行环境管理的基础知识, 下面就来看看如何在环境中管理软件包。

移除广告

了解Conda的基本软件包管理

在每种环境中, 都可以使用Conda软件包管理器来安装软件包。 Miniconda安装程序创建的根基础环境默认包含一些不属于Python标准库的软件包。

默认安装包括使用Conda所需的最少软件包。要检查环境中已安装软件包的列表, 只需确保已激活它并运行conda list。在根环境中, 默认情况下安装以下软件包:

(base) C:\Users\IEUser>conda list
# packages in environment at C:\Users\IEUser\Miniconda3:
#
# Name                    Version                   Build  Channel
asn1crypto                0.24.0                   py37_0
ca-certificates           2018.03.07                    0
certifi                   2018.8.24                py37_1
cffi                      1.11.5           py37h74b6da3_1
chardet                   3.0.4                    py37_1
conda                     4.5.11                   py37_0
conda-env                 2.6.0                         1
console_shortcut          0.1.1                         3
cryptography              2.3.1            py37h74b6da3_0
idna                      2.7                      py37_0
menuinst                  1.4.14           py37hfa6e2cd_0
openssl                   1.0.2p               hfa6e2cd_0
pip                       10.0.1                   py37_0
pycosat                   0.6.3            py37hfa6e2cd_0
pycparser                 2.18                     py37_1
pyopenssl                 18.0.0                   py37_0
pysocks                   1.6.8                    py37_0
python                    3.7.0                hea74fb7_0
pywin32                   223              py37hfa6e2cd_1
requests                  2.19.1                   py37_0
ruamel_yaml               0.15.46          py37hfa6e2cd_0
setuptools                40.2.0                   py37_0
six                       1.11.0                   py37_1
urllib3                   1.23                     py37_0
vc                        14                   h0510ff6_3
vs2015_runtime            14.0.25123                    3
wheel                     0.31.1                   py37_0
win_inet_pton             1.0.1                    py37_1
wincertstore              0.2                      py37_0
yaml                      0.1.7                hc54c509_2

(base) C:\Users\IEUser>

要管理软件包, 你还应该使用Conda。接下来, 让我们看看如何使用Conda搜索, 安装, 更新和删除软件包。

搜索和安装软件包

软件包是由Conda从称为通道的存储库中安装的, 而某些默认通道是由安装程序配置的。要搜索特定的软件包, 可以运行conda search <软件包名称>。例如, 这是你搜索keras包(机器学习库)的方式:

(base) C:\Users\IEUser>conda search keras
Loading channels: done
# Name                  Version           Build  Channel
keras                     2.0.8  py35h15001cb_0  pkgs/main
keras                     2.0.8  py36h65e7a35_0  pkgs/main
keras                     2.1.2          py35_0  pkgs/main
keras                     2.1.2          py36_0  pkgs/main
keras                     2.1.3          py35_0  pkgs/main
keras                     2.1.3          py36_0  pkgs/main

... (more)

根据之前的输出, 该软件包有不同的版本, 每个版本都有不同的版本, 例如Python 3.5和3.6。

先前的搜索仅显示名为keras的软件包的完全匹配。要进行更广泛的搜索, 包括名称中包含keras的所有软件包, 应使用通配符*。例如, 当你运行conda search * keras *时, 将得到以下信息:

(base) C:\Users\IEUser>conda search *keras*
Loading channels: done
# Name                  Version           Build  Channel
keras                     2.0.8  py35h15001cb_0  pkgs/main
keras                     2.0.8  py36h65e7a35_0  pkgs/main
keras                     2.1.2          py35_0  pkgs/main
keras                     2.1.2          py36_0  pkgs/main
keras                     2.1.3          py35_0  pkgs/main
keras                     2.1.3          py36_0  pkgs/main

... (more)

keras-applications           1.0.2          py35_0  pkgs/main
keras-applications           1.0.2          py36_0  pkgs/main
keras-applications           1.0.4          py35_0  pkgs/main

... (more)

keras-base                2.2.0          py35_0  pkgs/main
keras-base                2.2.0          py36_0  pkgs/main

... (more)

如先前的输出所示, 默认通道中还有一些其他与keras相关的软件包。

要安装软件包, 你应该运行conda install <软件包名称>。默认情况下, 软件包的最新版本将安装在活动环境中。因此, 我们将软件包keras安装在已创建的otherenv环境中:

(base) C:\Users\IEUser>conda activate otherenv

(otherenv) C:\Users\IEUser>conda install keras
Solving environment: done

## Package Plan ##

  environment location: C:\Users\IEUser\Miniconda3\envs\otherenv

  added / updated specs:
    - keras


The following NEW packages will be INSTALLED:

    _tflow_1100_select:  0.0.3-mkl
    absl-py:             0.4.1-py36_0
    astor:               0.7.1-py36_0
    blas:                1.0-mkl
    certifi:             2018.8.24-py36_1
    gast:                0.2.0-py36_0
    grpcio:              1.12.1-py36h1a1b453_0
    h5py:                2.8.0-py36h3bdd7fb_2
    hdf5:                1.10.2-hac2f561_1
    icc_rt:              2017.0.4-h97af966_0
    intel-openmp:        2018.0.3-0
    keras:               2.2.2-0
    keras-applications:  1.0.4-py36_1
    keras-base:          2.2.2-py36_0
    keras-preprocessing: 1.0.2-py36_1
    libmklml:            2018.0.3-1
    libprotobuf:         3.6.0-h1a1b453_0
    markdown:            2.6.11-py36_0
    mkl:                 2019.0-117
    mkl_fft:             1.0.4-py36h1e22a9b_1
    mkl_random:          1.0.1-py36h77b88f5_1
    numpy:               1.15.1-py36ha559c80_0
    numpy-base:          1.15.1-py36h8128ebf_0
    pip:                 10.0.1-py36_0
    protobuf:            3.6.0-py36he025d50_0
    python:              3.6.6-hea74fb7_0
    pyyaml:              3.13-py36hfa6e2cd_0
    scipy:               1.1.0-py36h4f6bf74_1
    setuptools:          40.2.0-py36_0
    six:                 1.11.0-py36_1
    tensorboard:         1.10.0-py36he025d50_0
    tensorflow:          1.10.0-mkl_py36hb361250_0
    tensorflow-base:     1.10.0-mkl_py36h81393da_0
    termcolor:           1.1.0-py36_1
    vc:                  14-h0510ff6_3
    vs2013_runtime:      12.0.21005-1
    vs2015_runtime:      14.0.25123-3
    werkzeug:            0.14.1-py36_0
    wheel:               0.31.1-py36_0
    wincertstore:        0.2-py36h7fe50ca_0
    yaml:                0.1.7-hc54c509_2
    zlib:                1.2.11-h8395fce_2

Proceed ([y]/n)?

安装后, Conda会管理软件包的必要依赖关系。由于软件包keras具有很多依赖性, 因此在安装时, Conda设法安装了这一大软件包列表。

值得注意的是, 由于keras软件包的最新版本使用Python 3.6, 并且otherenv环境是使用Python 3.7创建的, 因此python版本3.6.6软件包已作为依赖项包含在内。确认安装后, 你可以检查otherenv环境的Python版本是否已降级为3.6.6版本。

有时, 你不希望软件包降级, 最好使用必要的Python版本创建一个新环境。要在不安装软件包的情况下检查软件包所需的新软件包, 更新和降级列表, 应使用–dry-run参数。例如, 要检查安装软件包keras会更改的软件包, 应运行以下命令:

(otherenv) C:\Users\IEUser>conda install keras --dry-run

但是, 如有必要, 可以通过安装特定版本的python软件包来更改Conda环境的默认Python。为了说明这一点, 让我们创建一个名为envpython的新环境:

(otherenv) C:\Users\IEUser>conda create --name envpython
Solving environment: done

## Package Plan ##

  environment location: C:\Users\IEUser\Miniconda3\envs\envpython


Proceed ([y]/n)? y

Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate envpython
#
# To deactivate an active environment, use
#
#     $ conda deactivate

如你所见, 由于根基础环境使用Python 3.7, 因此创建了envpython, 其中包括以下相同版本的Python:

(base) C:\Users\IEUser>conda activate envpython

(envpython) C:\Users\IEUser>python
Python 3.7.0 (default, Jun 28 2018, 08:04:48) [MSC v.1912 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> quit()

(envpython) C:\Users\IEUser>

要安装特定版本的软件包, 可以运行conda install <软件包名称> = <版本>。例如, 这是在envpython环境中安装Python 3.6的方式:

(envpython) C:\Users\IEUser>conda install python=3.6
Solving environment: done

## Package Plan ##

  environment location: C:\Users\IEUser\Miniconda3\envs\envpython

  added / updated specs:
    - python=3.6


The following NEW packages will be INSTALLED:

    certifi:        2018.8.24-py36_1
    pip:            10.0.1-py36_0
    python:         3.6.6-hea74fb7_0
    setuptools:     40.2.0-py36_0
    vc:             14-h0510ff6_3
    vs2015_runtime: 14.0.25123-3
    wheel:          0.31.1-py36_0
    wincertstore:   0.2-py36h7fe50ca_0

Proceed ([y]/n)?

如果你需要在一个环境中安装多个软件包, 则只​​需传递软件包名称即可运行一次conda install。为了说明这一点, 让我们在根基础环境中安装numpy, scipy和matplotlib这两个用于数值计算的基本软件包:

(envpython) C:\Users\IEUser>deactivate

(base) C:\Users\IEUser>conda install numpy scipy matplotlib
Solving environment: done

## Package Plan ##

  environment location: C:\Users\IEUser\Miniconda3

  added / updated specs:
    - matplotlib
    - numpy
    - scipy


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    libpng-1.6.34              |       h79bbb47_0         1.3 MB
    mkl_random-1.0.1           |   py37h77b88f5_1         267 KB
    intel-openmp-2019.0        |              117         1.7 MB
    qt-5.9.6                   |   vc14h62aca36_0        92.5 MB
    matplotlib-2.2.3           |   py37hd159220_0         6.5 MB
    tornado-5.1                |   py37hfa6e2cd_0         668 KB
    pyqt-5.9.2                 |   py37ha878b3d_0         4.6 MB
    pytz-2018.5                |           py37_0         232 KB
    scipy-1.1.0                |   py37h4f6bf74_1        13.5 MB
    jpeg-9b                    |       hb83a4c4_2         313 KB
    python-dateutil-2.7.3      |           py37_0         260 KB
    numpy-base-1.15.1          |   py37h8128ebf_0         3.9 MB
    numpy-1.15.1               |   py37ha559c80_0          37 KB
    mkl_fft-1.0.4              |   py37h1e22a9b_1         120 KB
    kiwisolver-1.0.1           |   py37h6538335_0          61 KB
    pyparsing-2.2.0            |           py37_1          96 KB
    cycler-0.10.0              |           py37_0          13 KB
    freetype-2.9.1             |       ha9979f8_1         470 KB
    icu-58.2                   |       ha66f8fd_1        21.9 MB
    sqlite-3.24.0              |       h7602738_0         899 KB
    sip-4.19.12                |   py37h6538335_0         283 KB
    ------------------------------------------------------------
                                           Total:       149.5 MB

The following NEW packages will be INSTALLED:

    blas:            1.0-mkl
    cycler:          0.10.0-py37_0
    freetype:        2.9.1-ha9979f8_1
    icc_rt:          2017.0.4-h97af966_0
    icu:             58.2-ha66f8fd_1
    intel-openmp:    2019.0-117
    jpeg:            9b-hb83a4c4_2
    kiwisolver:      1.0.1-py37h6538335_0
    libpng:          1.6.34-h79bbb47_0
    matplotlib:      2.2.3-py37hd159220_0
    mkl:             2019.0-117
    mkl_fft:         1.0.4-py37h1e22a9b_1
    mkl_random:      1.0.1-py37h77b88f5_1
    numpy:           1.15.1-py37ha559c80_0
    numpy-base:      1.15.1-py37h8128ebf_0
    pyparsing:       2.2.0-py37_1
    pyqt:            5.9.2-py37ha878b3d_0
    python-dateutil: 2.7.3-py37_0
    pytz:            2018.5-py37_0
    qt:              5.9.6-vc14h62aca36_0
    scipy:           1.1.0-py37h4f6bf74_1
    sip:             4.19.12-py37h6538335_0
    sqlite:          3.24.0-h7602738_0
    tornado:         5.1-py37hfa6e2cd_0
    zlib:            1.2.11-h8395fce_2

Proceed ([y]/n)?

既然你已经介绍了如何搜索和安装软件包, 让我们看看如何使用Conda更新和删除它们。

移除广告

更新和删除软件包

有时, 当发布新软件包时, 你需要对其进行更新。为此, 你可以运行conda update <程序包名称>。如果你希望在一个环境中更新所有软件包, 则应激活该环境并运行conda update –all。

要删除软件包, 你可以运行conda remove <软件包名称>。例如, 这是从根基础环境中删除numpy的方法:

(base) C:\Users\IEUser>conda remove numpy
Solving environment: done

## Package Plan ##

  environment location: C:\Users\IEUser\Miniconda3

  removed specs:
    - numpy


The following packages will be REMOVED:

    matplotlib: 2.2.3-py37hd159220_0
    mkl_fft:    1.0.4-py37h1e22a9b_1
    mkl_random: 1.0.1-py37h77b88f5_1
    numpy:      1.15.1-py37ha559c80_0
    scipy:      1.1.0-py37h4f6bf74_1

Proceed ([y]/n)?

值得注意的是, 当你删除软件包时, 所有与之相关的软件包也会被删除。

使用频道

有时, 在安装程序配置的默认通道上找不到要安装的软件包。例如, 这是安装另一个机器学习包pytorch的方法:

(base) C:\Users\IEUser>conda search pytorch
Loading channels: done

PackagesNotFoundError: The following packages are not available from current channels:

  - pytorch

Current channels:

  - https://repo.anaconda.com/pkgs/main/win-64
  - https://repo.anaconda.com/pkgs/main/noarch
  - https://repo.anaconda.com/pkgs/free/win-64
  - https://repo.anaconda.com/pkgs/free/noarch
  - https://repo.anaconda.com/pkgs/r/win-64
  - https://repo.anaconda.com/pkgs/r/noarch
  - https://repo.anaconda.com/pkgs/pro/win-64
  - https://repo.anaconda.com/pkgs/pro/noarch
  - https://repo.anaconda.com/pkgs/msys2/win-64
  - https://repo.anaconda.com/pkgs/msys2/noarch

To search for alternate channels that may provide the conda package you're
looking for, navigate to

    https://anaconda.org

and use the search bar at the top of the page.

在这种情况下, 你可以在此处搜索软件包。如果你搜索pytorch, 则会得到以下结果:

Anaconda搜索pytorch

通道pytorch有一个名为pytorch的软件包, 版本为0.4.1。要从特定渠道安装软件包, 可以在conda install中使用-c <channel>参数:

(base) C:\Users\IEUser>conda install -c pytorch pytorch
Solving environment: done

## Package Plan ##

  environment location: C:\Users\IEUser\Miniconda3

  added / updated specs:
    - pytorch


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    pytorch-0.4.1              |py37_cuda90_cudnn7he774522_1       590.4 MB  pytorch

The following NEW packages will be INSTALLED:

    pytorch: 0.4.1-py37_cuda90_cudnn7he774522_1 pytorch

Proceed ([y]/n)?

或者, 你可以添加频道, 以便Conda使用它搜索要安装的软件包。要列出当前使用的频道, 可以运行conda config –get频道:

(base) C:\Users\IEUser>conda config --get channels
--add channels 'defaults'   # lowest priority

(base) C:\Users\IEUser>

Miniconda安装程序仅包括默认通道。如果包含更多通道, 则有必要设置它们的优先级, 以决定从多个通道中安装软件包时要从哪个通道安装。

要将最低优先级的频道添加到列表中, 应运行conda config –append channels <频道名称>。要将具有最高优先级的频道添加到列表中, 应运行conda config –prepend channels <频道名称>。建议添加低优先级的新通道, 以继续使用默认通道。因此, 你也可以安装pytorch, 添加pytorch通道并运行conda install pytorch:

(base) C:\Users\IEUser>conda config --append channels pytorch

(base) C:\Users\IEUser>conda config --get channels
--add channels 'pytorch'   # lowest priority
--add channels 'defaults'   # highest priority

(base) C:\Users\IEUser>conda install pytorch
Solving environment: done

## Package Plan ##

  environment location: C:\Users\IEUser\Miniconda3

  added / updated specs:
    - pytorch


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    pytorch-0.4.1              |py37_cuda90_cudnn7he774522_1       590.4 MB  pytorch

The following NEW packages will be INSTALLED:

    pytorch: 0.4.1-py37_cuda90_cudnn7he774522_1 pytorch

Proceed ([y]/n)?

并非所有软件包都在Conda频道上提供。但是, 这不是问题, 因为你还可以使用pip在Conda环境中安装软件包。让我们看看如何做到这一点。

在Conda环境中使用pip

有时, 你可能需要纯Python程序包, 通常, 这些程序包在Conda的频道上不可用。例如, 如果你搜索unipath(用于处理Python中文件路径的软件包), 则Conda将无法找到它。

你可以在此处搜索该软件包, 然后使用另一个渠道进行安装。但是, 由于unipath是一个纯Python软件包, 因此可以像常规Python安装一样使用pip来安装它。唯一的区别是你应该使用由Conda软件包pip安装的pip。为了说明这一点, 让我们创建一个称为newproject的新环境。如前所述, 你可以运行conda create来执行此操作:

conda create --name newproject

接下来, 要安装pip, 你应该激活环境并安装Conda软件包pip:

(base) C:\Users\IEUser>conda activate newproject

(newproject) C:\Users\IEUser>conda install pip
Solving environment: done

## Package Plan ##

  environment location: C:\Users\IEUser\Miniconda3\envs\newproject

  added / updated specs:
    - pip


The following NEW packages will be INSTALLED:

    certifi:        2018.8.24-py37_1
    pip:            10.0.1-py37_0
    python:         3.7.0-hea74fb7_0
    setuptools:     40.2.0-py37_0
    vc:             14-h0510ff6_3
    vs2015_runtime: 14.0.25123-3
    wheel:          0.31.1-py37_0
    wincertstore:   0.2-py37_0

Proceed ([y]/n)?

最后, 使用pip安装软件包unipath:

(newproject) C:\Users\IEUser>pip install unipath
Collecting unipath
Installing collected packages: unipath
Successfully installed unipath-1.1
You are using pip version 10.0.1, however version 18.0 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.

(newproject) C:\Users\IEUser>

安装后, 你可以使用conda list列出已安装的软件包, 并使用pip检查Unipath是否已安装:

(newproject) C:\Users\IEUser>conda list
# packages in environment at C:\Users\IEUser\Miniconda3\envs\newproject:
#
# Name                    Version                   Build  Channel
certifi                   2018.8.24                py37_1
pip                       10.0.1                   py37_0
python                    3.7.0                hea74fb7_0
setuptools                40.2.0                   py37_0
Unipath                   1.1                       <pip>
vc                        14                   h0510ff6_3
vs2015_runtime            14.0.25123                    3
wheel                     0.31.1                   py37_0
wincertstore              0.2                      py37_0

(newproject) C:\Users\IEUser>

也可以使用pip从版本控制系统(VCS)安装软件包。例如, 让我们安装Git存储库中可用的主管4.0.0dev0版本。由于未在newproject环境中安装Git, 因此应首先安装它:

(newproject) C:\Users\IEUser> conda install git

然后, 安装主管, 使用pip从Git存储库中安装它:

(newproject) pip install -e git://github.com/Supervisor/supervisor@abef0a2be35f4aae4a4edeceadb7a213b729ef8d#egg=supervisor

安装完成后, 你可以看到在已安装的软件包列表中列出了超级用户:

(newproject) C:\Users\IEUser>conda list
#
# Name                    Version                   Build  Channel
certifi                   2018.8.24                py37_1
git                       2.18.0               h6bb4b03_0
meld3                     1.0.2                     <pip>
pip                       10.0.1                   py37_0
python                    3.7.0                hea74fb7_0
setuptools                40.2.0                   py37_0
supervisor                4.0.0.dev0                <pip>

... (more)

现在, 你已经了解了使用环境和使用Conda管理软件包的基础知识, 让我们创建一个简单的机器学习示例, 以使用神经网络解决经典问题。

移除广告

一个简单的机器学习示例

在本部分中, 你将使用Conda设置环境, 并训练神经网络像XOR门一样工作。

XOR门实现了数字逻辑异或运算, 该运算在数字系统中被广泛使用。它需要两个数字输入, 可以等于0, 表示一个数字错误值, 或者1, 代表一个数字真实值, 如果输入不同, 则输出1(真), 如果输入相等, 则输出0(假)。下表(在数字系统术语中称为真值表)总结了XOR门操作:

输入A 输入B 输出:A XOR B
0 0 0
0 1 1
1 0 1
1 1 0

异或运算可以解释为分类问题, 因为它接受两个输入, 并应根据输入是否相等或彼此不同, 将它们分类为0或1表示的两个类别之一。

由于它简单且同时需要非线性分类器(例如神经网络), 因此通常用作训练神经网络的第一个示例。神经网络将仅使用真值表中的数据, 而无需知道它们来自何处, 以“学习”由XOR门执行的操作。

为了实现神经网络, 让我们创建一个名为nnxor的新Conda环境:

(base) C:\Users\IEUser>conda create nnxor

然后, 激活它并安装软件包keras:

(base) C:\Users\IEUser>conda activate nnxor

(nnxor) C:\Users\IEUser>conda install keras

keras是一种高级API, 可在TensorFlow等著名的机器学习库的基础上实现易于实现的神经网络。

你将训练以下神经网络充当XOR门:

异或门神经网络

该网络接收两个输入A和B, 并将它们输入到以大圆圈表示的两个神经元。然后, 它获取这两个神经元的输出并将其馈送到输出神经元, 后者应根据XOR真值表提供分类。

简而言之, 训练过程包括调整权重w_1的值直到w_6, 以使输出与XOR真值表一致。为此, 将输入输入示例, 一次输入一个, 将根据权重的当前值来计算输出, 并且通过将输出与真值表给出的所需输出进行比较, 权重的值将逐步调整。

为了组织项目, 你将在Windows用户文件夹(C:\ Users \ IEUser)中创建一个名为nnxor的文件夹, 其中包含一个名为nnxor.py的文件, 以存储用于实现神经网络的Python程序:

程序文件

在nnxor.py文件中, 你将定义网络, 进行培训并进行测试:

import numpy as np
np.random.seed(444)

from keras.models import Sequential
from keras.layers.core import Dense, Activation
from keras.optimizers import SGD

X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])
y = np.array([[0], [1], [1], [0]])

model = Sequential()
model.add(Dense(2, input_dim=2))
model.add(Activation('sigmoid'))
model.add(Dense(1))
model.add(Activation('sigmoid'))

sgd = SGD(lr=0.1)
model.compile(loss='mean_squared_error', optimizer=sgd)

model.fit(X, y, batch_size=1, epochs=5000)

if __name__ == '__main__':
    print(model.predict(X))

首先, 你导入numpy, 初始化随机种子, 以便在再次运行程序时可以重现相同的结果, 然后导入将用于构建神经网络的keras对象。

然后, 你定义一个X数组, 其中包含XOR运算的4种可能的A-B输入集, 以及一个y数组, 其中包含X中定义的每组输入的输出。

接下来的五行定义了神经网络。 Sequential()模型是keras提供的用于定义神经网络的模型之一, 其中, 网络的层是以顺序的方式定义的。然后, 定义由两个神经元组成的神经元的第一层, 由两个输入提供反馈, 将它们的激活功能定义为序列中的S型函数。最后, 定义由具有相同激活功能的一个神经元组成的输出层。

以下两行定义了有关网络训练的详细信息。要调整网络的权重, 你将使用学习率等于0.1的随机梯度下降(SGD), 并将均方误差作为损耗函数最小化。

最后, 你可以通过运行fit()方法, 使用X和y作为训练示例并在将每个训练示例输入到网络中后更新权重(batch_size = 1)来执行训练。纪元数表示将整个训练集用于训练神经网络的次数。

在这种情况下, 你将使用包含4个输入输出示例的训练集重复进行5000次训练。默认情况下, 每次使用训练集时, 都会对训练示例进行混洗。

在最后一行中, 训练过程完成后, 你将打印4个可能输入示例的预测值。

通过运行此脚本, 你将看到培训过程的演变和性能改进, 同时将新的培训示例输入到网络中:

(nnxor) C:\Users\IEUser>cd nnxor

(nnxor) C:\Users\IEUser\nnxor>python nnxor.py
Using TensorFlow backend.
Epoch 1/5000
2018-09-16 09:49:05.987096: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX AVX2
2018-09-16 09:49:05.993128: I tensorflow/core/common_runtime/process_util.cc:69] Creating new thread pool with default inter op setting: 2. Tune using inter_op_parallelism_threads for best performance.
4/4 [==============================] - 0s 39ms/step - loss: 0.2565
Epoch 2/5000
4/4 [==============================] - 0s 0us/step - loss: 0.2566
Epoch 3/5000
4/4 [==============================] - 0s 0us/step - loss: 0.2566
Epoch 4/5000
4/4 [==============================] - 0s 0us/step - loss: 0.2566
Epoch 5/5000
4/4 [==============================] - 0s 0us/step - loss: 0.2566
Epoch 6/5000
4/4 [==============================] - 0s 0us/step - loss: 0.2566

培训结束后, 你可以检查网络给出的可能输入值的预测:

Epoch 4997/5000
4/4 [==============================] - 0s 0us/step - loss: 0.0034
Epoch 4998/5000
4/4 [==============================] - 0s 0us/step - loss: 0.0034
Epoch 4999/5000
4/4 [==============================] - 0s 0us/step - loss: 0.0034
Epoch 5000/5000
4/4 [==============================] - 0s 0us/step - loss: 0.0034
[[0.0587215 ]
 [0.9468337 ]
 [0.9323144 ]
 [0.05158457]]

当你定义X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])时, 预期的输出值为0、1、1和0, 如果你应该对它们进行四舍五入以获得二进制值, 则它与网络的预测输出相一致。

移除广告

从这往哪儿走

数据科学和机器学习应用程序出现在最多样化的领域, 吸引了更多的人。但是, 设置用于数值计算的环境可能是一项复杂的任务, 并且经常在数据科学研讨会上(尤其是在使用Windows的情况下)发现有问题的用户, 这很常见。

在本文中, 你已经介绍了使用Anaconda Python发行版在Windows计算机上设置Python数值计算环境的基础知识。

免费奖金:单击此处可访问Conda速查表, 并提供用于管理Python环境和软件包的便捷用法示例。

现在你已经有了一个工作环境, 是时候开始使用某些应用程序了。 Python是用于数据科学和机器学习的最常用语言之一, 而Anaconda是最流行的发行版之一, 已在各种公司和研究实验室中使用。它提供了几个软件包来安装Python用来进行数据采集, 处理, 处理和可视化的库。

幸运的是, 在Real Python上有很多关于这些库的教程, 包括以下内容:

  • NumPy教程
  • Python Plotting With Matplotlib (Guide)
  • Python直方图绘图:NumPy, Matplotlib, Pandas和Seaborn
  • 纯Python vs NumPy vs TensorFlow性能比较
  • Python熊猫:你可能不知道的技巧和功能
  • 快速, 灵活, 轻松和直观:如何加快熊猫项目
  • 使用NumPy和Pandas进行Pythonic数据清理

另外, 如果你想进一步了解Anaconda和Conda, 请查看以下链接:

  • 为什么需要Python环境以及如何使用Conda对其进行管理
  • 康达:神话与误解
赞(0)
未经允许不得转载:srcmini » 在Windows上设置Python进行机器学习

评论 抢沙发

评论前必须登录!