1.4 设置系统
我们将开始本书第一部分的机器学习内容。我们从一个初始的草稿开始,并以一个能够实际运行的计算机程序作结。这个程序将是我们之后攀登更高知识山峰的起点,即第二部分神经网络与第三部分深度学习的起点。
你可能想要亲自学习本书中的案例,实际运行本书提供的源代码,并亲手完成章节末尾的大多数练习。或者,你可能更喜欢在拿起键盘之前通读一遍教材内容以便能够从宏观上遍览全局。尽管程序员经常会选择第一种方法,但是这两种方法都是可行的。
如果你喜欢以实际动手操作的方式进行学习,那么设置系统并运行本书的代码并不需要很长的时间。尽管机器学习往往需要较大的计算能力,但本书的代码即使在普通笔记本电脑上也能够运行良好。你只需要安装一些软件即可。
首先,你需要安装Python编程环境。Python语言是目前机器学习领域最流行的一种语言,本书的所有应用实例都是用Python编写完成的。如果你之前从未使用过Python语言,也不用担心,你可能会被这种语言良好的可读性吓到。如果你没读懂Python代码,可以查阅附录A。这样你就有了充足的知识来完成本书的学习。
Python语言熟练者须知
如果你精通Python语言,那么可能会注意到本书中的代码与通常的Python惯例有所不同。例如,我会尽量避免使用特定于语言的习语,如对列表的理解。因为这会使面向语言新手的代码更加复杂。为了使得代码更易于理解,我可能会使用稍微不那么精确的语言,比如会使用“function”来代替“method”。
我提前为偏离Python正统而道歉。
让我们正式开始吧,检查你是否安装了Python。运行:
如果你尚未安装Python 3,那就停下来先去安装。附录A给出了安装该语言的一些指导。
需要注意的是,在某些系统上,你可以通过输入python(后面没有3)命令来执行Python 3。然而在某些系统上,输入python命令执行的可能是Python 2。为了避免由Python旧版本造成的迷惑和不明错误,我总会在本书中使用更为精确的python3命令。
如果你已经安装好了编程语言,那么现在我们就来讨论程序库。你在学习过程中需要使用三个程序库。比较大的那个程序库叫作NumPy,是一个用于科学计算的程序库。我们还需要使用另外两个程序库来实现图像的绘制。Matplotlib程序库事实上是Python语言的绘图标准,Seaborn程序库建立在Matplotlib的基础之上,专注于实现对图像的美化功能。
可以使用两种方法安装这些程序库:可以使用Python官方包管理器pip,或者使用机器学习领域流行的更加复杂的环境管理器Conda。如果你想进一步了解Conda,可以查阅A.4.3,以深入了解pip与Conda的区别。如果你不太确信,那就使用pip吧。
使用pip安装程序库,运行如下指令:
然后你就安装完毕了。如果你使用的是Conda,那么就在源代码文件夹的根目录下找到名为readme.txt的文件,该文件包含了所有必要的安装说明。
如果运行示例遇到困难
我希望本书中大部分信息都能够保持多年有效,但当你读到这几页的时候,有些细节肯定已经过时了。你可能会发现某个程序库已经更新了,在运行某些示例时可能会出现错误。因此,我推荐一个特定的程序库版本来避免这些问题。即使这样,在当前版本的Python下安装该版本也可能会遇到麻烦。
如果在设置系统或运行示例时遇到错误,请点击https://pragprog.com/titles/pplearn/source_code以获取本书最新版本的源代码。我将尽量使得程序代码与最新的程序库保持同步,并在需要的时候更新readme.txt中的安装说明。
另外,如果直接告诉我任何此类问题,我将不胜感激,联系网址为https://pragprog.com/titles/pplearn/errata。
最后,你需要某种编程环境。很多机器学习教程使用一个名为Jupyter Notebook的系统,用于在浏览器中编辑和运行代码。你不必使用Jupyter来运行本书中的应用实例。作为一名开发人员,你应该知道如何编写和运行程序,所以继续使用你最喜欢的文本编辑器或IDE吧。另外,如果你已经知道并喜欢使用Jupyter,那也没有关系,你可以查看notebooks目录,查找本书代码的Jupyter版本。
我们再回顾一下:你有了Python编程语言、几个必备的程序库和你喜爱的代码编辑平台。这就是本书编程所有必备的了。
现在,让我们一起来编写一种会学习的程序吧。
熟悉机器学习
作为开发人员,你应该已经习惯了快速学习。然而,对于机器学习,你将进入一个新的领域。这不是吓唬你,接下来的3或4章的学习将会比较艰难。当你在阅读这些内容的时候,可能会觉得自己完全是个初学者——处在一种令人兴奋但有时又令人沮丧的境地。
我能够理解这种感觉。我可以告诉你,克服这种感觉继续进行学习是值得的。我还记得我第一次运行能够给出准确预测值的机器学习程序时的兴奋之情。坚持住,很快你就会领会到那种极客的快乐。