Windows安装Python机器学习包

大数据技术原理与应用

Python 虽然是一门脚本语言,但借助诸如 Numpy、Scipy 等功能强大的 package(包),如今 Python 在科学计算、机器学习、数据挖掘方面都有较为广泛的应用。本教程介绍如何在 Windows 中安装常用的 Python 机器学习包,包括 NumPy、pandas、SciPy、StatsModels、scikit-learn、matplotlib。

常用的 Python 机器学习包

本教程涉及的 Python 机器学习包(具体的使用可点击链接查阅官方文档,本教程只介绍如何安装):

NumPy:Python中科学计算的基础包;
pandas:提供高性能,易于使用的数据结构和数据分析工具;
SciPy:基于Python,用于数学、科学、工程的软件;
StatsModels:用于探索数据、估计统计模型、统计检验;
scikit-learn:提供经典的机器学习算法用于数据挖掘和数据分析;
matplotlib: 2D绘图库,可绘制高质量的图片。

安装pip

pip 是一个安装和管理 Python 包的工具,若按照教程Python安装与基本使用安装了 Python 2.7.11,则默认已经安装了 pip,在开始菜单中找到“运行”(或者使用键盘快捷键Win + r),输入“cmd”,打开Windows 命令提示符,执行如下命令进行检验:

pip --version

若已经装好了pip,运行结果如下图如下,显示已安装的版本:

检查是否安装好了pip检查是否安装好了pip

若已安装好 pip,则可以跳过该部分剩余内容,开始安装 Python 包。
如果还未安装pip,则按照如下步骤进行安装:

1. 下载安装文件
右键点击链接https://bootstrap.pypa.io/get-pip.py,选择另存为。如果无法访问,可进入网盘下载: http://pan.baidu.com/s/1c0NL4eW

2. 进行安装
为方便,我们将上述文件保存在D盘根目录下(即d:\get-pip.py),在cmd中,依次执行如下三条代码:

d:
cd d:\
python get-pip.py

安装成功后如下图所示,提示“Successfully installed pip-xxx”:

成功安装pip成功安装pip

如果无法正常安装pip,一般是如下两种情况:

a) 提示“Python不是内部或外部命令,也不是可运行的程序或批处理文件”

这种情况需要将Python安装目录加入到环境变量中:右键点击“我的电脑”,选择“属性”,找到“系统属性”,点击“高级”面板的“环境变量”,在“系统变量”中找到“Path”变量,双击进行编辑,在最前面加上“c:\Python27\;C:\Python27\Scripts;”,其中“c:\Python27”为Python的安装目录,如下图所示:

将Python加入环境变量将Python加入环境变量

添加环境变量后,重新开启cmd,再次执行命令安装pip即可。

b) 提示如下图“Retrying”

安装pip时提示Retrying安装pip时提示Retrying

这是由于提供pip安装的网站无法访问而导致的,可以多尝试几次,或者下载离线安装包进行安装:pip7.1.2离线安装包下载 | 备用下载

下载解压后,假设放在D盘根目录下(d:\pip-7.1.2),执行如下命令进行安装:

d:
cd d:\get-pip
python setup.py

安装 Python 包

安装好pip后,就可以在 cmd 中使用 pip install package-name 的方式来方便地在线安装 python 包了。例如,我们要安装一个名为 six 的包,只需要在 cmd 中执行如下命令即可:

pip install six

读者实践时,发现在线安装 Numpy、SciPy 等包时会遇到一些问题,可以解决但比较繁琐,因此推荐采用离线安装方式。

Windows 的 Python 离线安装包可在 http://www.lfd.uci.edu/~gohlke/pythonlibs/ 中下载,下载后为 .whl 文件,可使用 pip install 离线安装包文件名 的命令进行安装。由于涉及的离线包比较多,挨个下载比较麻烦,读者可直接下载笔者已整理好的安装包(仅适用于 Python 2.7 版本,下面的32位、64位指的是你所装的 Python 版本):

以使用64位安装包为例,下载后解压,假设放置于D盘根目录下(d:\python-machine-learning-package-win-amd64),我们首先安装 Numpy,在 cmd 中执行如下命令进行安装(注意32位的安装命令有所不同,主要是文件名不同):

d:
cd d:\python-machine-learning-package-win-amd64
pip install numpy-1.9.3+mkl-cp27-none-win_amd64.whl

安装成功的话如下图所示,提示“Successfully installed numpy-1.9.3”:

成功安装Numpy成功安装Numpy

对于提示"You are using pip version 7.1.2, however version 8.0.3 is available",可以按照提示升级 pip,也可以选择忽略该信息,并不会影响 Python 包的安装与使用。

安装好 Numpy 后,接着再依次执行如下命令安装其他Python包(需要额外安装一些依赖包,因此要安装的包比较多,此外请注意安装顺序。同时注意32位的安装命令有所不同,主要是文件名不同)。

tab键的补全功能

在 cmd 中,可以利用 tab 键补全文件名,例如要安装 six-1.10.0-py2.py3-none-any.whl,只需要先输入 pip install six,再按一下 tab 键,就能自动补全文件名了,省去复制文件名的步骤。

pip install six-1.10.0-py2.py3-none-any.whl
pip install python_dateutil-2.5.0-py2.py3-none-any.whl
pip install pytz-2015.7-py2.py3-none-any.whl
pip install pandas-0.16.2-cp27-none-win_amd64.whl
pip install patsy-0.4.0-py2.py3-none-any.whl
pip install scipy-0.16.1-cp27-none-win_amd64.whl
pip install statsmodels-0.6.1-cp27-none-win_amd64.whl
pip install scikit_learn-0.16.1-cp27-none-win_amd64.whl
pip install pyparsing-2.0.7-py2.py3-none-any.whl
pip install cycler-0.10.0-py2.py3-none-any.whl
pip install matplotlib-1.5.1-cp27-none-win_amd64.whl

至此,就完成了Python中常用机器学习包的安装。

安装其他Python包

前面说到,Windows 的 Python 离线安装包可在 http://www.lfd.uci.edu/~gohlke/pythonlibs/ 中下载,如果要安装其他的包,可以到这里下载。需要注意的一点是依赖问题,如 matplotlib,所需的依赖都有列了出来,需要先安装这些依赖才能安装该 Python 包(其中的 setuptools 在安装 pip 时就有装好了)。

Python包的依赖信息Python包的依赖信息

安装Python包可能遇到的问题

在安装机器学习的 Python 包时,可能会遇到的一个问题是,在运行代码时会提示错误 "ValueError: numpy.dtype has the wrong size, try recompiling",这是因为 Python 包的版本问题,例如安装了较旧版本的 Numpy,但安装了较新版本的 SciPy。

似乎没有很好的解决方法,一般方法是更新 Numpy,或者安装低版本的 SciPy(只是举例),本教程中给出的包虽然不是最新的版本,但笔者自己安装过,可以正常使用。

另外 Python 中一个比较常见的问题是编码问题,若遇到类似“UnicodeEncodeError: 'ascii' codec can't encode character u'\u6211' in position 0: ordinal not in range(128)”的问题,可以在 Python 的安装目录(默认为C:\Python27)下的 Lib\site-packages 文件夹中新建一个文件sitecustomize.py,添加如下代码并保存:

import sys
sys.setdefaultencoding('gb2312')

切记,该文件会更改 Python 的默认编码,以后出现类似的问题,可尝试将代码中的 gb2312 改为 utf-8 或 ascii ,然后再次尝试。

附录

本教程所提供的离线安装包的文件列表。

32位安装包中包含如下文件:

  • matplotlib-1.5.1-cp27-none-win_amd64.whl
  • numpy-1.9.3+mkl-cp27-none-win_amd64.whl
  • pandas-0.16.2-cp27-none-win_amd64.whl
  • scikit_learn-0.16.1-cp27-none-win_amd64.whl
  • scipy-0.16.0-cp27-none-win_amd64.whl
  • statsmodels-0.6.1-cp27-none-win_amd64.whl
  • cycler-0.10.0-py2.py3-none-any.whl
  • patsy-0.4.0-py2.py3-none-any.whl
  • pyparsing-2.0.7-py2.py3-none-any.whl
  • python_dateutil-2.5.0-py2.py3-none-any.whl
  • pytz-2015.7-py2.py3-none-any.whl
  • six-1.10.0-py2.py3-none-any.whl

64位安装包中包含如下文件:

  • matplotlib-1.5.1-cp27-none-win_amd64.whl
  • numpy-1.9.3+mkl-cp27-none-win_amd64.whl
  • pandas-0.16.2-cp27-none-win_amd64.whl
  • scikit_learn-0.16.1-cp27-none-win_amd64.whl
  • scipy-0.16.1-cp27-none-win_amd64.whl
  • statsmodels-0.6.1-cp27-none-win_amd64.whl
  • cycler-0.10.0-py2.py3-none-any.whl
  • patsy-0.4.0-py2.py3-none-any.whl
  • pyparsing-2.0.7-py2.py3-none-any.whl
  • python_dateutil-2.5.0-py2.py3-none-any.whl
  • pytz-2015.7-py2.py3-none-any.whl
  • six-1.10.0-py2.py3-none-any.whl