2.1 Python语言与开发框架
2.1.1 Python语言
Python是一门在科学与工程领域都非常流行的高级编程语言,属于解释性编程语言,在可读性和易用性方面优势非常显著。在数据科学和机器学习技术发展的推动下,Python已经当之无愧成为目前最流行的编程语言之一。
Python的第一个版本由荷兰程序员Guido van Rossum(见图2-1)在1991年发布,他对于Python语言的设计宗旨是“优雅、明确、简单”。Guido van Rossum毕业于阿姆斯特丹大学,2005年至2012年于谷歌公司担任软件工程师,2012年之后加入了Dropbox并担任首席工程师。同时,他也一直在维护Python项目。
图2-1 Python发明人:Guido van Rossum
在Python官网[1]上可以下载其最新版本。目前Python分为两个大版本,分别为Python 2和Python 3。前者为历史版本,在2010年更新至2.7之后就宣布不再更新了;后者为新版本,仍在持续维护中。目前这两个版本都在被广泛使用,读者在使用互联网上的开源项目时务必看清项目使用的Python版本号。
如果Python已经成功安装,则可以直接在终端命令行中输入“python”打开交互解释器,如图2-2所示。
图2-2 Python交互解释器
此时可以直接在交互解释器中输入Python代码执行命令。如果尝试输入“import this”,可以看到Python的设计之道,如图2-3所示。
图2-3 隐藏的Python设计之道
2.1.2 常用工具简介
1. pip
Python的开发者社区非常活跃,开源项目的开发者会将他们研发的框架和代码库开源供其他人使用。pip工具是Python官方推荐的第三方Python包安装工具,使用起来非常便捷,仅需要几行命令即可管理你的所有第三方库。
如果你的Python版本在2.7或3.4以上,已经自带了pip,可以直接使用。如果你不小心删除了工具包,或者发生了其他意外情况,可以按照下面的步骤重新安装。
首先使用curl下载官方的get-pip.py文件。
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
接着直接运行get-pip.py文件,即可完成安装。
$ python get-pip.py
当需要更新pip时,只需运行下面的命令进行升级。
$ pip install -U pip
我们可以使用关键词来搜索需要的第三方库。
$ pip search "query"
使用pip安装第三方库非常简单,只需使用install命令,还可以根据自己的需要添加相应的版本号信息。下面三条命令分别为安装最新版本号、安装固定版本号与安装最小版本号。
$ pip install SomePackage $ pip install SomePackage==1.0.4 $ pip install SomePackage>=1.0.4
有些情况下可能希望直接从源代码进行安装。下面的命令是用GitHub上的源码进行pip安装。
$ pip install https://github.com/user/repo.git@sometag
如果我们需要批量安装多种库,可以直接将这些库的名字写在一个requirements.txt文件里,然后统一进行安装。
$ pip install -r requirements.txt
卸载第三方库时使用pip也是非常简单的,例如:
$ pip uninstall SomePackage
使用list命令可以列出当前环境下的所有第三方库。
$ pip list
如果需要列出所有要更新的库,可以加上“--outdated”选项。
$ pip list --outdated
2. virtualenv
virtualenv是一个Python虚拟环境工具,它可以为你建立独立的虚拟化Python运行环境。当你的电脑上包含不止一个Python项目的时候,可能每一个项目所依赖的库是不同的,甚至有些项目使用了相同的库但是却要求不一样的版本。这个时候建立独立的虚拟环境就变得非常重要。
virtualenv让Python虚拟环境的搭建变得非常简便,在实际开发中一定会使用到,我的习惯是对每个项目都建立一个独立的环境,确保每个项目的第三方库之间不存在依赖关系。
可以通过pip来安装virtualenv。
$ pip install virtualenv
如果希望直接安装最新的开发者版本,可以选择用源码安装。
$ pip install https://github.com/pypa/virtualenv/tarball/master
在你的项目文件夹中,通过以下命令可以创建名为ENV的虚拟环境。
$ virtualenv ENV
安装完毕后你并没有进入该虚拟环境,需要使用下面的命令激活环境。
$ source ENV/bin/activate
此时,你已经进入了新创建的Python虚拟环境,可以按照自己项目的需要进行环境的配置或安装第三方依赖包等。如果需要退出该环境,仅需运行反激活命令即可。
$ deactivate
3. Jupyter Notebook
Jupyter Notebook是一个交互式编程的笔记本,用户可以基于它很快地进行代码调试,并快速得到反馈。
官方推荐使用Python 3的pip进行安装。
$ pip3 install --upgrade pip $ pip3 install jupyter
安装完成后可以在你的文件夹中使用jupyter命令开启交互式编程笔记本。
$ jupyter notebook
开启后程序会自动跳转至浏览器,界面如图2-4所示。
图2-4 Jupyter Notebook:浏览器界面
单击右侧的New按钮,选中Python 3,可以在当前目录中新建一个笔记本,如图2-5所示。
图2-5 Jupyter Notebook:创建新笔记
建立后的笔记本如图2-6所示,界面分为菜单栏、工具栏和编辑区。可以在编辑区的单元格里编辑代码,按“Shift+Enter”键执行程序。
图2-6 Jupyter Notebook:界面组件
2.1.3 第三方框架简介
Python包含了大量实用的第三方框架,下面我们列举几个在数据处理和机器学习中常用的Python框架。
1. NumPy
NumPy是一个在科学计算领域非常流行的第三方库,对于数组运算、向量运算以及矩阵运算的支持非常好,底层代码由C语言完成,所以执行效率非常高。
2. Pandas
Pandas是基于NumPy的数据分析框架,内部包含了很多标准化的数据结构以及处理方法,是为了高效进行数据分析而生的一种工具。
3. Matplotlib与Seaborn
Python有很多实用的第三方可视化工具,比如Matplotlib、Seaborn、Bokeh等。Matplotlib是一个非常流行的2D图像绘制框架,可以满足机器学习中大部分数据可视化的需求,可以用在Python脚本、Jupyter Notebook甚至是Web端的应用中。而Seaborn是一款基于Matplotlib的高级可视化框架,是用于数据统计分析以及探索的可视化工具,支持NumPy与Pandas的高级数据结构,图2-7中给出了其展示效果图。
图2-7 Seaborn的展示效果图
4. Scikit-Learn
Scikit-Learn是一款在学术领域非常流行的机器学习开源框架,对于常用的分类、回归、聚类等机器学习算法均提供了非常简便的高级API以供用户使用,通过简单的几步就可以完成大部分机器学习模型的训练和测试。之后要介绍的TensorFlow框架虽然也包含了大部分Scikit-Learn的机器学习功能,但更偏向于深度学习的研究,如果只是做一些机器学习的应用,Scikit-Learn是更便捷的选择。
[1] https://www.python.org