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。目前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 常用工具简介
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
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
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 +回车”可以执行程序。
图2-6 Jupyter Notebook:界面组件
2.1.3 第三方框架简介
Python包含了大量实用的第三方框架,下面我们列举几个在数据处理和机器学习中常用的Python框架。
NumPy
NumPy是一个在科学计算领域非常流行的第三方库,对于数组运算、向量运算以及矩阵运算的支持非常好,底层代码由C语言完成,所以执行效率非常高。
Pandas
Pandas是基于NumPy的数据分析框架,内部包含了很多标准化的数据结构以及处理方法,是为了“高效进行数据分析”而生的一种工具。
Matplotlib与Seaborn
Python有很多实用的第三方可视化工具,比如Matplotlib、Seaborn、Bokeh等。Matplotlib是一个非常流行的2D图像绘制框架,可以满足机器学习中大部分数据可视化的需求,可以被用于Python脚本、Jupyter Notebook甚至是Web端的应用。而Seaborn是一款基于Matplotlib的高级可视化框架,是用于数据统计分析以及探索的可视化工具,支持NumPy与Pandas的高级数据结构,见图2-7。
图2-7 Seaborn的展示效果图
Scikit-Learn
Scikit-Learn是一款在学术领域非常流行的机器学习开源框架,对于常用的分类、回归、聚类等机器学习算法均提供了非常简便的高级API,以供用户使用,简单的几步就可以完成大部分机器学习模型的训练和测试。之后要介绍的TensorFlow框架虽然也包含了大部分Scikit-Learn的机器学习功能,但更偏向于深度学习的研究,如果只是做一些机器学习的应用,Scikit-Learn是更便捷的选择。