R语言数据挖掘:实用项目解析(txt+pdf+epub+mobi电子书下载)


发布时间:2020-05-18 04:51:43

点击下载

作者:(印)普拉迪帕塔·米什拉(Pradeepta Mishra)

出版社:机械工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

R语言数据挖掘:实用项目解析

R语言数据挖掘:实用项目解析试读:

前言

随着数据规模和种类的增长,应用数据挖掘技术从大数据中提取有效信息变得至关重要。这是因为企业认为有必要从大规模数据的实施中获得相应的投资回报。实施数据挖掘的根本性原因是要从大型数据库中发现隐藏的商机,以便利益相关者能针对未来业务做出决策。数据挖掘不仅能够帮助企业降低成本以及提高收益,还能帮助他们发现新的发展途径。

本书将介绍使用R语言(一种开源工具)进行数据挖掘的基本原理。R是一门免费的程序语言,同时也是一个提供统计计算、图形数据可视化和预测建模的软件环境,并且可以与其他工具和平台相集成。本书将结合R语言在示例数据集中的应用来阐释数据挖掘原理。

本书将阐述数据挖掘的一些主题,如数学表述、在软件环境中的实现,以及如何据此来解决商业问题。本书的设计理念是,读者可以从数据管理技术、探索性数据分析、数据可视化等内容着手学习,循序渐进,直至建立高级预测模型(如推荐系统、神经网络模型)。本书也从数据科学、分析学、统计建模以及可视化等角度对数据挖掘这一概念进行了综述。

本书内容

第1章 带领读者初识R编程基础,借助真实的案例帮助读者了解如何读写数据,了解编程符号和语法指令。这一章还给出了供读者动手实践的R脚本,以更好地理解书中的原理、术语以及执行特定任务的深层原因。之所以这样设计,是为了让没有太多编程基础的读者也能使用R来执行各种数据挖掘任务。这一章将简述数据挖掘的意义以及它与其他领域(诸如数据科学、分析学和统计建模)的关系,除此之外,还将展开使用R进行数据管理的讨论。

第2章 帮助读者理解探索性数据分析。探索数据包括数据集中变量的数值描述和可视化,这将使得数据集变得直观,并使我们能对其快速定论。对数据集有一个初步的理解很重要,比如选择怎样的变量进行分析、不同变量之间的关联,等等。创建交叉二维表有助于理解分类变量之间的关系,对数据集实施经典统计检验来验证对数据的种种假设。

第3章 涵盖从基础的数据可视化到调用R语言中的库实现高级的数据可视化。观察数字和统计能从多个侧面“告诉”我们关于变量的“故事”,而当图形化地了解变量和因子之间的关系时,它将展示另一个“故事”。可见,数据可视化将揭示数值分析和统计无法展现的信息。

第4章 帮助读者学习利用回归方法的预测分析基础,包括线性和非线性回归方法在R中的实现。读者不仅可以掌握所有回归方法的理论基础,也将通过R实践获得实际动手操作的经验。

第5章 介绍了一种产品推荐方法——购物篮分析(MBA)。这种方法主要是将交易级的商品信息关联,从中找出购买了相似商品的客户分类,据此推荐产品。MBA还可以应用于向上销售和交叉销售中。

第6章 介绍了什么是分类、聚类是如何应用到分类问题的、聚类用的是什么方法等内容,并对不同的分类方法进行了对比。在这一章,读者将了解使用聚类方法的分类基础知识。

第7章 涵盖以下内容及相应的R语言实现:推荐系统是什么,实现推荐的工作原理、类型和方法,使用R语言实现商品推荐。

第8章 使用R语言和一个实际数据集实现主成分分析(PCA)、奇异值分解(SVD)和迭代特征提取等降维技术。随着数据的量与类的增长,数据的维度也在随之增长。降维技术在不同领域都有很多应用,例如图像处理、语音识别、推荐系统、文本处理等。

第9章 讲解了多种类型的神经网络、方法,以及通过不同的函数来控制人工神经网络训练的神经网络变体。这些神经网络执行标准的数据挖掘任务,例如:采用基于回归的方法预测连续型变量,利用基于分类的方法预测输出水平,利用历史数据来预测数值变量的未来值,以及压缩特征从而识别重要特征以执行预测或分类。

准备工作

为了学习本书附带的例子和代码,读者需要从https://cran.r-project.org/下载R软件(也可以从https://www.rstudio.com/下载R Studio),然后安装。没有特定的硬件要求,只需要一台至少2GB RAM的计算机,适用于任何操作系统,包括MAC、Linux和Windows。

读者对象

本书适用于刚开始从事数据挖掘、数据科学或者预测建模的读者,也适用于有中等统计与编程水平的读者。基本的统计知识对于理解数据挖掘是必需的。阅读前几章并不需要编程知识。本书将讲解如何使用R语言进行数据管理和基本的统计分析。本书亦适用于学生、专业人员及有志成为数据分析师的读者。

排版约定

在本书中,为了区分不同内容,字体风格也会随之变化。以下是字体风格示意:

书中的代码、文件名、文件扩展名、路径名、URL地址、用户输入、推特标签看起来会是这样:“在处理ArtPiece数据集时,我们将通过一些与业务相关的变量来预测一个艺术作品是否值得购买。”

所有命令行的输入或输出在书中显示如下:

作者的话

如果读者对于本书所涉及的内容有疑问,可以在Twitter上搜索@mishra1_PK,我非常乐意为大家提供帮助。

非常感谢我的妻子Prajna和女儿Aarya,也要感谢我的朋友和工作中的同事在我完成本书的过程中给予我的支持与鼓励。

关于审稿人

Alexey Grigorev是一名熟练的数据科学家和软件工程师,有超过5年的专业经验。他现在是Searchmetrics Inc的一名数据科学家。在日常工作中,他热衷于使用R和Python进行数据清洗、数据分析和建模工作。他也是Packt出版的其他数据分析书籍的审稿人,比如《测试驱动的机器学习》与《掌握R数据分析》。第1章使用R内置数据进行数据处理

本书主要介绍在R语言平台上实现数据挖掘的方法和步骤。因为R是一种开源工具,所以对各层次的学习者而言,学习使用R语言进行数据挖掘都会很有意思。本书的设计宗旨是,读者可以从数据管理技术着手,从探索性数据分析、数据可视化和建模开始,直至建立高级预测模型,如推荐系统、神经网络模型等。本章将概述数据挖掘的原理及其与数据科学、分析学和统计建模的交叉。在本章,读者将初识R编程语言基础,并通过一个真实的案例,了解怎样读取和写入数据,熟悉编程符号和理解句法。本章还包含了R语言脚本,可供读者动手实践,以加深对原理和术语的理解,领会数据挖掘任务的来龙去脉。本章之所以这样设计,是为了让那些编程基础薄弱的读者也可以通过执行R语言命令来完成一些数据挖掘任务。

本章将简述数据挖掘的意义以及它与其他领域(如数据科学、分析学和统计建模)的关系,还会就使用R进行数据管理的话题展开讨论。通过学习本章的内容,读者应掌握以下知识点:

·了解R语言中所使用的各种数据类型,包括向量和向量运算。

·数据框的索引及因子序列。

·数据框的排序与合并以及数据类型的转换。

·字符串操作以及数据对象格式化。

·缺失值(NA)的处理方法。

·流控制、循环构建以及apply函数的应用。1.1 什么是数据挖掘

数据挖掘可以定义为这样的过程:从现有数据库中“解读”出有意义的信息,然后加以分析,并将结果提供给业务人员。从不同数据源分析数据,进而归纳出有意义的信息和洞见——这属于统计知识的探索,不仅有助于业务人员,也有助于多个群体,如统计分析员、咨询师和数据科学家。通常,数据库中的知识探索过程是不可预知的,对探索结果也可以从多个角度进行解读。

硬件设备、平板、智能手机、计算机、传感器等电子设备的大规模增长促使数据以超前的速度产生与收集。随着现代计算机处理能力的提升,可以对增长的数据进行预处理和模型化,以解决与商业决策过程相关的各种问题。数据挖掘也可以定义为利用统计方法、机器学习技术、可视化和模式匹配技术从离散的数据库和信息资源库中进行知识密集型搜索。

零售商店内所有物品的条形码、制造业所有货物的射频识别标签、推特简讯、Facebook上的贴子、遍布城市用于监控天气变化的传感器、录像分析、基于观看信息统计的视频推荐……这些结构化和非结构化数据的增长创造了一个催生各种各样的工具、技术和方法的生态系统。前文提到应用于各种数据的数据挖掘技术,不仅提供了有用的数据结构信息,也就企业未来可采取的决策提出了建议。

数据挖掘包括以下几个步骤:

1)从数据库和数据仓库中抽取需要的数据。

2)检查数据,删除冗余特征和无关信息。

3)有时需要与其他未关联数据库中的数据相合并。所以,需要找到各个数据库的共同属性。

4)应用数据转换技术。有时,一些属性和特征需要包含在一个模型中。

5)对输入的特征值进行模式识别。这里可能会用到任何模式识别技术。

6)知识表达。其中包括把从数据库中提炼出来的知识通过可视化方式展示给利益相关者。

在讨论了数据挖掘的流程和核心组成之后,我们也需注意到实施数据挖掘时可能遇到的挑战,比如运算效率、数据库的非结构化以及怎样将其与结构化数据结合、高维数据的可视化问题,等等。这些问题可以通过创新的方法来解决。本书在项目实践中会涉及一些解决方法。

它是怎么与数据科学、分析和统计建模关联的

数据科学是个很宽泛的话题,其中也包含了一些数据挖掘的概念。根据之前对数据挖掘的定义,即它是从数据中发现隐藏模式,找出有意思的关联并能提供有用的决策支持的过程,可知数据挖掘是数据科学项目的子集,涉及模式识别、特征提取、聚类以及监督分类等技术。分析学和统计建模包含了很多预测模型——基于分类的模型,通过应用这些方法解决实际业务问题。数据科学、分析学和统计建模、数据挖掘这些术语之间明显是有重叠的,所以不应该把它们看作完全独立的术语。根据项目要求和特定的业务问题,它们重叠的部分可能有所不同。但总的来说,所有概念都是相关联的。数据挖掘过程也包括基于统计和机器学习方法来提取数据,提取自动化规则,也需要利用好的可视化方法来展示数据。1.2 R语言引论

本节将开始使用基础的R编程知识来做数据管理和数据处理,其中也会讲到一些编程技巧。R可以从https://www.r-project.org/下载。用户可以基于自己的操作系统下载和安装R二进制文件。R编程语言作为S语言的扩展,是一个统计计算平台。它提供高级预测建模、机器学习算法实施和更好的图表可视化。R还提供了适用于其他平台的插件,比如R.Net、rJava、SparkR和RHadoop,这提高了它在大数据场景下的可用性。用户可以将R脚本移植到其他编程环境中。关于R的详细信息,读者请参考:

https://www.r-project.org/.1.2.1 快速入门

启动R时的信息如下图所示。所有输入R控制台的都是对象,在一个激活的R会话中创建的对象都有各自不同的属性,而一个对象附有的一个共同属性称作它的类。在R中执行面向对象编程有两种比较普遍的方法,即S3类和S4类。S3和S4的主要区别在于前者更加灵活,后者是更结构化的面向对象编程语言。S3和S4方法都将符号、字符和数字当作R会话中的一个对象,并提供了可使对象用于进一步计算的功能。1.2.2 数据类型、向量、数组与矩阵

数据集可分为两大类型:原子向量和复合向量。在R语言中,原子向量可以分为5种类型,即数值或数字型、字符或字符串型、因子型、逻辑型以及复数型;复合向量分为4种类型,即数据框、列表、数组以及矩阵。R中最基本的数据对象是向量,即使将单数位数字赋给一个字母,也会被视为一个单元素向量。所有数据对象都包含模式和长度属性,其中模式定义了在这个对象里存放的数据类型,长度则定义了对象中包含的元素个数。R语言中的c()函数用于将多种元素连接成一个向量。

让我们来看R中不同数据类型的一些示例:

在上述代码中,向量x1是一个数值型向量,元素个数是5。class()和mode()返回相同的结果,因此都是在确定向量的类型:

在上述代码中,向量x2是由5个元素组成的一个逻辑型向量。逻辑型向量的元素或值可以写成T/F或者TRUE/FALSE。

在上述代码中,向量x3代表了一个长度为25的字符型向量。该向量中的所有元素都可以用双引号("")或单引号('')调用。

因子是数据的另一种格式,因子型向量中列出了多种分类(也称“水平”)。在上述代码中向量a是一个字符型向量,它的两个水平/分类以一定频率重复。as.factor()命令用于将字符型向量转换成因子数据类型。使用该命令后,我们可以看到它有5个水平:Analytics、DataMining、MachineLearning、Projects和Statistics。table()命令可用于显示因子变量频数表的计算结果:

数据框是R中另一种常见的数据格式,它可以包含所有不同的数据类型。数据框是一个列表,其中包含了多个等长的向量和不同类型的数据。如果只是从电子表格导入数据集,那么该数据类型将默认为数据框。之后,每个变量的数据类型均可更改。因此,数据框可定义为由包含不同类型的变量列组成的一个矩阵。在前面的代码中,数据框x包含了三种数据类型:数值型、逻辑型和字符型。大多数真实数据集会包含不同的数据类型,比如,零售商店里存储在数据库中的客户信息就包括客户ID、购买日期、购买数量、是否参与了会员计划等。

关于向量的一个要点:向量中的所有元素必须是同类型的。如果不是,R会进行强行转换。例如,在一个数值型向量中,如果有一个元素是字符型,该向量的类型会从数值型转换成字符型。代码如下所示:

R是区分大小写的,比如,“cat”与“Cat”,它们是不同的。所以,用户在给向量分配对象名字时必须格外注意。

有时,要记住所有对象名字不总是那么容易,示例如下:

若想知道当前R会话中的所有活动对象,可使用ls()命令。list命令也会输出当前R会话中的所有活动对象。下面我们来看看什么是列表、如何从列表中提取元素以及如何使用list函数。1.2.3 列表管理、因子与序列

列表是一个可包含抽象对象的有序对象集合。列表中的元素可以通过双重中括号获取。不要求所包含的对象是同一类型,示例如下:

在上面的例子中,客户ID及其手机号是数值型变量,而客户名字及其电子邮箱地址是字符型变量。上面的列表中共有4个元素。如果要从列表中提取元素,则可使用双重中括号;如果只需从中提取子列表,则使用中括号即可,示例如下:

关于列表,接下来的操作是如何合并一个以上的列表。多个列表可以通过cbind()函数合并,即列合并函数,示例如下:

因子可定义为在分类或名义变量中以一定频率出现的水平。换句话说,在分类变量中重复出现的水平就被称为因子。在下面给出的样例脚本中,一个字符型向量“域”包含了很多个水平,使用factor命令可以估算每个水平的出现频率。

序列是重复的迭代个数,无论是数值、分类值还是名义值,都可以组成一个序列数据集。数值序列可利用一个冒号运算符生成。如果要用因子变量生成序列,可以使用gl()函数。在计算分位数和画图函数时,这个函数特别有用。gl()函数也可应用于其他一些场景,示例如下:

代码的第一行生成升序的序列,第二行生成降序的序列,最后一行生成因子数据类型序列。1.2.4 数据的导入与导出

如果设定了Windows目录路径,那么要导入一个文件到R系统,就并不需要输入文件所在的全路径。如果Windows目录路径设定的是系统的其他路径,而你仍然要读取那个文件,则需要给出文件所在的全路径:

文档中的所有文件都可以不指定详细路径就能读取得到。所以建议读者将目录设定成文件所在目录。

文件格式有很多种,其中CSV或者TXT格式最适合R语言平台,示例如下。不过,我们也可以导入其他格式的文件。

如果使用的是read.csv命令,不需要将header(表头)设置成True,也不需要将separator(分隔符)设置成comma(逗号)。但如果使用的是read.table命令,那就必须这样设置,否则R会从表头开始读取数据。

在输入提取文件路径时,使用“/”或者“\\”都可以。在实际项目中,典型的数据是以Excel格式存储的。而如何从Excel表读取数据是一个挑战。如果先将数据存成CSV格式再导入R并不总是那么方便。下面的脚本将展示如何在R中导入Excel文件。我们需要调用两个外部的库来导入像Excel这样的关系数据库管理系统(RDBMS)文件。这两个库将在脚本中提及,其中还给出了一部分样例数据:

导入SPSS文件的方法如下所示。传统企业级软件系统产生的数据要么是SPSS格式,要么是SAS格式。导入SPSS和SAS文件的语法需要额外的包或者库。导入SPSS文件需要使用Hmisc包,导入SAS文件则需要使用sas7bdat库:

若要从R中导出一个数据集到任何一个外部地址,可以把read命令改成write命令,再把目录路径改为导出文件的路径。1.3 数据类型转换

数据类型有很多种,比如数值型、因子型、字符型、逻辑型等。即使数据的格式没有预先处理得很好,用R把一种数据类型转换成另一种也并不困难。在改变变量类型之前,先查看现在的数据类型很关键,这可以用下面的命令实现:

当检查一个数值变量是否为数值型时,输出结果会显示为TRUE或FALSE。其他数据类型也是如此。如果任何数据类型不符合,可以通过以下代码进行转换:

在使用as.character()时,即使是一个逻辑向量,也会由逻辑型变成字符型。如果是一个数值变量,比如变量x1,因为它已经是数值格式,所以不会被转换。一个逻辑向量也可以从逻辑型转换成因子型,见以下代码:1.4 排序与合并数据框

在做数据管理时,排序与合并是两个重要概念。它们的操作对象可以是单一向量或者是一个数据框,还可以是一个矩阵。R语言中的sort()用于对向量进行排序。降序命令选项可用以改变排序的方向(升序或降序)。在处理像ArtPiece.csv这样的数据框时,用order命令对数据进行排序,可以设置多个变量是升序还是降序。如要执行降序,可以在一个变量名前加一个负号。下面利用一个数据集来阐释R语言中的排序概念,代码如下:

ArtPiece数据集里有16个变量:10个数值变量和6个分类变量。使用names命令可输出数据集中所有变量的名字。借助attach函数,当前R会话中的所有变量名都会保存下来,用户就不需要每次在输入变量名时在前面加上数据名:

排序默认采用升序排列,如果想对向量进行降序排列,则需要在排序的变量名前加一个负号。如下所示,变量Critic.Ratings也可以以降序排列。要以降序排列,命令中的decreasing需要设置成True:

除了对单个数值向量排序,大多数时候数据集需要按一些输入变量或数据框中的当前属性进行排序。对单个变量排序和对数据框排序有很大不同。下面的代码演示了如何使用order函数对数据框排序:

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载