我们今天的数据采集规模在人类历史上是空前的,日常生活也越来越依赖我们所采集的这些信息。我们希望计算机能把网页翻译成其他语言,预报天气,推荐我们喜欢的书,诊断我们的健康问题。类似的需求还会继续增长,我们会需要更多的应用和更高的精确性。数据挖掘技术可以用来训练计算机,使其根据已有数据做出决策。如今,数据挖掘技术已成为支撑很多高科技系统的骨干。
Python的迅速普及并非偶然。它的灵活度高;模块众多,可以执行很多任务;比起其他任何编程语言,Python代码通常更为简洁,可读性更强。Python在数据挖掘领域已经形成了一个由研究员、从业者和新手组成的氛围活跃的大社区。
本章将介绍如何使用Python进行数据挖掘,主要会涉及以下几个主题。
数据挖掘简介及其应用场景搭建Python数据挖掘环境亲和性分析示例:根据购买习惯推荐商品
(经典)分类问题示例:根据测量结果推测植物的种类
1.1 数据挖掘简介
数据挖掘旨在让计算机根据已有数据做出决策。决策可以是预测明天的天气、拦截垃圾邮件、检测网站的语言,或者在约会网站上发现新的恋爱对象。数据挖掘方面的应用已经有很多,新的应用也在源源不断地出现。
数据挖掘涉及算法、统计学、工程学、最优化理论和计算机科学相关领域的知识。除此之外,我们还会用到语言学、神经科学、城市规划等其他领域的概念或知识。要想充分发挥数据挖掘的威力,通常需要在算法中整合这些属于特定领域的知识。
虽然数据挖掘相关应用的实现细节可能千差万别,但是从较高的层次看,它们往往大同小异。数据挖掘的第一步一般是创建数据集,数据集能够描述真实世界的某一方面。数据集主要包括以下两个部分。
表示真实世界中物体的样本。样本可以是一本书,一张照片,一个动物,一个人或是其他任何物体。
描述数据集中样本的特征。特征可以是长度、单词频率、腿的数量、创建时间等。
接下来是调整算法。每种数据挖掘算法都有参数,它们或者是算法自身包含的,或者是使用者添加的。这些参数会影响算法的具体决策。
举个简单的例子,我们希望计算机能够把人按照个子高矮分成两大类。我们首先采集数据,得到包含每个人身高的一组数据,以及对他们高矮的判断。
接下来要做的就是调整我们的算法。作为一个简单的算法,如果身高高于x,我们就认为这个人是高个子,否则,他就属于矮个子。我们的算法要过一遍数据,确定x的最佳值。对于上面的数据集,x 比较合理的值为170cm。任何高于170cm的人就被归到高个子一类中,其余则为矮个子。
在上面这个数据集中,特征显而易见为身高。因为我们想知道人们的高矮,所以采集了他们的身高数据。抽取特征是数据挖掘过程的一个重要环节。本书后面的章节中会介绍从数据集中抽取区分度高的特征的方法。特征抽取往往需要对相关领域有着深入的理解,或至少需要多次试错。
本书中使用Python语言介绍数据挖掘。出于讲解的需要,为了保证代码、流程的清晰易懂,我们有时候跳过了能够提升算法速度、效果的细节,没有采用最优方案。
1.2 使用Python和IPython Notebook
本节将介绍Python的安装方法,及本书所用到的开发环境IPythonNotebook的搭建方法。此外,还将安装第一部分示例代码所用到的numpy库。
1.2.1 安装Python
Python是一门出色的、应用范围广泛且简单易用的编程语言。
本书将使用Python 3.4版本,你可以根据自己的系统从Python官网https://www.python.org/downloads/下载合适的版本。
Python主要有两大版本Python 3.4和Python 2.7。记得要下载安装Python 3.4,本书所有代码都在该版本中测试过。
本书假定读者了解编程和Python相关知识。本书不要求你是Python编程高手,当然有较多的知识储备学起来更容易。
如果你没有任何编程经验,我建议你先看看《Python学习手册》。
Python官网为新手准备了两份在线教程。
非程序员背景,想通过Python学习编程:
https://wiki.python.org/moin/BeginnersGuide/NonProgrammers
程序员背景,想专门学习Python:
https://wiki.python.org/moin/BeginnersGuide/Programmers
Windows用户设置好环境变量后,才能在命令行中使用Python。方法如下。首先,找到Python 3的安装路径,默认为C:\Python34。接下来,在命令行(cmd程序)中输入以下命令:
将环境设置为PYTHONPATH=%PYTHONPATH%; C:\
Python34 。如果你将Python安装到其他路径下,请根据实际情况调整上述命令中的C:\Python34。
安装好Python,打开命令提示符,输入以下命令:
$ python3
Python 3.4.0 (default, Apr 11 2014, 13:05:11)
[GCC 4.8.2] on Linux
Type "help", "copyright", "credits" or "license" for more
information.
>>> print("Hello, world!")
Hello, world!
>>> exit()
请注意,我们用美元符号($)表示紧跟在后面的语句是一条命令,要输入到终端(Unix系统中的shell,Windows系统中的cmd程序)。美元符号及后面的空格无须输入。输入后面的内容,然后敲回车执行命令。
运行完经典的“Hello, world!”例子后,退出Python,继续安装用来运行Python代码的更为高级的开发环境IPython Notebook。
Python 3.4内置了Python的包管理器pip,用它来安装Python包很方便。使用 $ pip3 freeze 命令可以验证pip是否能正常运行,该命令还会输出你用它安装过哪些包。
1.2.2 安装IPython
Python开发平台IPython提供多种Python开发工具和开发环境,比标准解释器多出好多功能。IPython Notebook功能强大,有了它,你就可以在Web浏览器中编写程序。它会为代码添加样式,显示运行结果,允许你为代码添加注释。用它来做数据分析再好不过,我们将把它作为主要的开发环境。
请在命令提示符后(注意不是Python中),输入以下命令安装IPython:
$ pip install ipython[all]
如果要为系统所有用户安装IPython,需要管理员权限。如果你只想自己用或者没有权限做系统级别的变更,则使用以下命令为当前用户安装即可:
$ pip install --user ipython[all]
以上命令只为当前用户安装IPython——该系统的其他用户将无法使用。安装过程中若遇到问题,请查阅官方文档,了解更多帮助信息:
http://ipython.org/install.html。
安装好IPython Notebook后,运行方式如下:
$ ipython3 notebook
上述命令帮你做了两件事。首先,在命令提示符界面创建一个IPythonNotebook实例。其次,打开Web浏览器,连接到实例,你可以在此创建新的笔记本文件。Notebook界面如下图所示(注意图中的home/bob为当前用户的主目录,你看到的是自己的主目录,所以目录名称很可能
不同)。
IPython Notebook的关闭方法如下:打开运行实例的终端界面(就是你之前用IPython命令创建Notebook实例的界面),按下Ctrl+C键,系统提示Shutdown this notebook server (y/[n])?,询问你是否关闭笔记本服务器。输入y,敲回车,IPython Notebook就会关闭。