《Python数据挖掘:概念、方法与实践》一1.4 如何建立数据挖掘工作环境

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

 本节书摘来自华章出版社《Python数据挖掘:概念、方法与实践》一书中的第1章,第1.4节,作者[美] 梅甘·斯夸尔(Megan Squire),更多章节内容可以访问云栖社区“华章计算机”公众号查看。



1.4 如何建立数据挖掘工作环境

前面几节帮助我们更好地了解了将要从事的项目及原因。现在可以开始建立一个开发环境,支持所有项目工作了。由于本书的目的是介绍如何构建挖掘数据模式的软件,因此我们将用一种通用编程语言编写程序。Python编程语言具有非常强大且仍在不断成长、专门致力于数据挖掘的社区。这个社区已经贡献了一些非常方便的程序库,我们可以用来进行高效的处理,我们还可以依靠他们提供的许多数据类型,更快地工作。

在本书编著时,有两个版本的Python可供下载:现在被视为经典的Python 2(最新版本为2.7)和Python 3(最新版本为3.5)。本书将使用Python 3。因为我们需要使用许多相关的程序包和程序库,尽可能地使数据挖掘体验不那么痛苦,也因为其中一些程序包和库难以安装,所以这里我建议使用专为科学及数学计算设计的Python分发版本。具体地说,我推荐Continuum Analytics 制作的Python 3.5 Anaconda分发版本。他们的基本Python分发版本是免费的,所有组件都保证能够协同工作,而无需我们进行令人沮丧的兼容性保证工作。

要下载Anaconda Python分发版本,只需要用浏览器访问Continuum Analytics的网站(https://www.continuum.io),根据提示符下载适合你的操作系统的Anaconda免费版本(目前的编号是3.5或者更高)。

启动该软件,将会看到如图1-2所示的启动画面。

根据你使用的版本和下载的时间,Anaconda中的每个应用程序中除了Launch按钮之外可能还有几个Update(更新)按钮。如果你的软件版本显示需要,可以单击每个按钮以更新程序包。

f72dcc3f874b7e30fdece69451533574061763e4

为了开始编写Python代码,单击Spyder以启动代码编辑器和集成开发环境。如果你想使用自己的文本编辑器(如MacOS上的TextWrangler或者Windows上的Sublime编辑器),完全没有问题。可以从命令行运行Python代码。

花一点时间将Spyder配置成你喜欢的样子,设置颜色和常规布局,或者保留默认值。对于我自己的工作空间,我移动了几个控制台窗口,建立一个工作目录,并进行几个自定义调整,使自己更适应这个新编辑器。你也可以这么做,使开发环境更舒适。

现在,我们已经为测试编辑器和安装程序库做好了准备。单击File(文件)并选择New File(新建文件)测试Spyder编辑器,观察其工作方式。然后,输入简单的“Hello World”语句:

 

单击绿色箭头,按下F5键或者单击Run(运行)菜单中的Run命令,运行程序。不管用哪一种方式,程序将执行,你将在控制台输出窗口看到输出。

此时,我们知道Spyder和Python正在工作,可以测试和安装一些程序库了。

首先,打开一个新文件,将其保存为packageTest.py。在这个测试程序中,我们将确定Scikit-learn是否已经随Anaconda正确安装。Scikit-learn是很重要的程序包,包含了许多机器学习函数,以及用于测试这些函数的现成数据集。许多书籍和教程使用Scikit-learn示例教授数据挖掘,所以在我们的工具箱中也有这个程序包。我们将在本书的多个章节中使用这个程序包。

运行Scikit-learn网站上的教程中的如下小程序(可以在http://scikit-learn.org/stable/tutorial/basic/tutorial.html #loading-an-example-dataset上找到),它将告诉我们环境是否正常建立:

914e7d8f9a14c0332db6c456c61e374f84261186

 

如果上述程序运行正常,将在控制台窗口中输出显示类列表数据结构中的一系列数值:

a86d8e121100eee00967bd3a7c6c49db11317c67

 

这个输出足以说明Scikit-learn已正常安装。接下来,添加一行代码,它将帮助我们学习digits.data结构的数据类型:

4b8c865b07cee4c126f62ffd01267ed04da66e3b

 

输出如下:

e7b8cc99bdc3f146bd3c5030dbfca1f03330b29f

 

从上述输出,我们可以确定Scikit-learn依赖另一个重要程序包Numpy处理其数据结构。Anaconda也已经正常安装Numpy,这正是我们要确认的事项。

接下来,我们将测试是否已经包含了网络分析库。我们将在第4章中使用Networkx程序库构建图形化社交网络。下面的代码示例创建一个具有一个节点的小型网络,并在屏幕上打印其类型:

745e37b403c50482fbcddc7c71090086676bb44b

 

输出如下:

1ff61527dc77c5db300d87bd4ee379230a9997ac

 

这正是我们想要看到的输出,它告诉我们Networkx已经安装并正常工作。

接下来,我们将测试后面几章需要的文本挖掘软件。这也很方便,自然语言工具包(Natural Language Toolkit,NLTK)也已随Anaconda安装。但是,它有自己的图形化下载工具,用于下载它使用的各种语料库和单词列表。Anaconda没有自动安装这些组件,因此我们必须人工完成。为了得到单词列表和字典,需创建一个新的Python文件,导入NTLK模块,然后提示NTLK启动图形化下载工具:

f1a61a9a97963f0bc3b485b7dd4485aae65bfecd

新的下载程序窗口将在Anaconda中打开(见图1-3):

95cb4be5406fb65ff0f49ac10e6794a44faec0af

在这个下载程序窗口中,从标识符列表中选择all(全部),更改Download Directory(下载目录,可选),并按下Download(下载)按钮。下载程序窗口左下角的红色进度条将随着每个数据集安装而变动。如果连接较慢,这一步可能需要花费几分钟。图1-4中的屏幕截图展示了这一下载中的步骤:

d50a76c1d6b2373dffa793cc9a32aea47a261114

下载程序完成NTLK语料库的安装后,可以测试它们是否正常工作。下面是一个短的Python程序,其中要求NTLK使用布朗大学的语料库并打印前10个单词:

 

该程序的输出如下,是NTLK布朗文本语料库的前10个单词,它们恰好来自一篇新闻报道:

 

从这个输出,我们可以确信NTLK已经安装,所有必要的语料库也已经安装。

接下来,将安装文本挖掘模块Gensim,在后面进行主题建模时需要它。Gensim默认不作为Anaconda的一部分预先安装,而是可使用Anaconda内建的conda安装程序轻松添加,有数百个这样的程序包,Gensim是第一个。从Anaconda Tools菜单,选择Open a Terminal(打开终端)命令,并输入conda install gensim。如果提示更新numpy和scipy,则输入y,安装将继续。

安装结束时,启动一个新的Python程序,输入来自Gensim网站的测试程序的如下精简版本:

 

这个程序所做的只不过是测试该模块是否正常导入,然后在屏幕上打印一个列表,但是这在现在已经足够了。

最后,由于本书是关于数据挖掘或者数据结构中的知识发现的书籍,因此使用某种数据库软件绝对是个好主意。我选择MySQL实现本书中的项目,因为它是免费软件,易于安装,可用于许多种操作系统。

要得到MySQL,可以进入http://dev.mysql.com/downloads/mysql/,找到你要用操作系统的免费社区版本(Community Edition)下载页面。

为了让Anaconda Python与MySQL通信,必须安装一些MySQL Python驱动程序。我喜欢pymysql驱动程序,因为它相当健壮,没有标准驱动程序常会有的一些Bug。从Anaconda中,启动一个终端窗口,运行如下命令:

 

现在所有模块似乎都已经安装,可以在需要它们时使用。如果还需要其他模块,或者其中一个模块过时,现在我们也已经知道如何在必要时安装或者升级模块了。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4天前
|
数据采集 存储 API
网络爬虫与数据采集:使用Python自动化获取网页数据
【4月更文挑战第12天】本文介绍了Python网络爬虫的基础知识,包括网络爬虫概念(请求网页、解析、存储数据和处理异常)和Python常用的爬虫库requests(发送HTTP请求)与BeautifulSoup(解析HTML)。通过基本流程示例展示了如何导入库、发送请求、解析网页、提取数据、存储数据及处理异常。还提到了Python爬虫的实际应用,如获取新闻数据和商品信息。
|
4天前
|
Python
python魔法方法如何应用
这个Python示例展示了类继承和方法重写。`Student`类继承自`Person`,并覆盖了`say_hello`方法。通过`super().__init__(name)`调用父类的`__init__`初始化`name`属性,`Student`添加了`age`属性,并在重写的`say_hello`中使用。创建`Student`实例`student`并调用其`say_hello`,输出定制的问候信息。
15 1
|
1天前
|
机器学习/深度学习 数据采集 数据挖掘
Python 的科学计算和数据分析: 解释什么是数据规整(Data Wrangling)?
数据规整是将原始数据转化为适合分析和建模的格式的关键步骤,涉及缺失值处理(删除、填充、插值)、异常值检测与处理、数据类型转换、重采样、数据合并、特征选择和特征变换等任务。这些预处理步骤确保数据质量和准确性,为后续的数据分析和机器学习模型构建奠定基础。
12 4
|
2天前
|
存储 安全 数据处理
python如何将数据写到数组里
【4月更文挑战第12天】
|
5天前
|
机器学习/深度学习 人工智能 算法
|
5天前
|
安全 Python
python字典的内置方法
Python字典主要方法包括:`keys()`(返回所有键)、`values()`(返回所有值)、`items()`(返回所有键值对)、`get()`(安全取值,键不存在时返回默认值)、`setdefault()`(设置默认值)、`update()`(合并字典)、`pop()`(删除并返回值)、`clear()`(清空字典)、`copy()`(浅拷贝)、`fromkeys()`(新建字典并设置默认值)、`popitem()`(随机删除键值对)。
6 0
|
11天前
|
jenkins 测试技术 持续交付
软件测试|docker搭建Jenkins+Python+allure自动化测试环境
通过以上步骤,你可以在Docker中搭建起Jenkins自动化测试环境,实现Python测试的自动化执行和Allure报告生成。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
28 6
|
13天前
|
人工智能 监控 数据可视化
【Python】Python商业公司贸易业务数据分析可视化(数据+源码)【独一无二】
【Python】Python商业公司贸易业务数据分析可视化(数据+源码)【独一无二】
|
14天前
|
存储 Python
python基础篇: 详解 Python 字典类型内置方法
python基础篇: 详解 Python 字典类型内置方法
25 1
|
16天前
|
Java 测试技术 Python
Python开启线程和线程池的方法
Python开启线程和线程池的方法
12 0
Python开启线程和线程池的方法