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,则可以跳过该部分剩余内容,开始安装 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,一般是如下两种情况:
a) 提示“Python不是内部或外部命令,也不是可运行的程序或批处理文件”
这种情况需要将Python安装目录加入到环境变量中:右键点击“我的电脑”,选择“属性”,找到“系统属性”,点击“高级”面板的“环境变量”,在“系统变量”中找到“Path”变量,双击进行编辑,在最前面加上“c:\Python27\;C:\Python27\Scripts;”,其中“c:\Python27”为Python的安装目录,如下图所示:
添加环境变量后,重新开启cmd,再次执行命令安装pip即可。
b) 提示如下图“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 版本):
- 32位安装包下载:http://pan.baidu.com/s/1eQM4xO2
- 64位安装包下载:http://pan.baidu.com/s/1hqW95ZI
以使用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”:
对于提示"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 包时,可能会遇到的一个问题是,在运行代码时会提示错误 "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