当前课程知识点:R语言数据分析 >  中部:执具 >  第6章 基础编程——用别人的包和函数讲述自己的故事 >  6.2Mini案例

返回《R语言数据分析》慕课在线视频课程列表

6.2Mini案例在线视频

下一节:6.3 站在巨人的肩膀上

返回《R语言数据分析》慕课在线视频列表

6.2Mini案例课程教案、知识点、字幕

大家好

欢迎来到《R语言数据分析》课程

在深入讲解R语言的具体知识之前

我今天想先跟大家交流一个迷你小案例

通过30行左右代码

让大家直观感受一下如何通过R语言

来实现数据分析

我们说到数据分析

一个完整的流程的话

大概要包含这么六个步骤

六个环节

当然这是一个

一个跨行业的数据分析的一个方法论

一个通用的过程

我们一般称之为CRISP

它包含哪六个步骤

首先什么

对业务进行理解

就是先明确一下

究竟想分析哪个主题

有哪些分析点

大概想到什么结果

这第一部分对业务需求进行理解

第二步 采集数据

并且对数据进行理解

对数据进行探索性的分析

第三步 对数据进行预处理

比如说对数据进行分箱

对数据进行垃圾数据的清洗

或者说我们要对数据进行一个降维等等

在数据预处理完之后

我们就可以做什么

(对)处理好的数据进行建模

这个也是我们

数据分析里面一个比较核心的环节

比较核心的环节

在建完模之后进入第五个环节

也就所谓的什么

我们要对模型进行评估

假如评估的结果符合我们的需求的话

怎么样

我们要Deployment

也就是说对模型进行部署

应该说除了第一个环节之外

后面的数据的理解

就是探索性的分析 数据预处理

建模 模型的评估

包括我们模型的发布都涉及到编码的问题

只有第一个业务理解

是跟我们R语言编代码没什么关系的

当然这个模型的那个部署这一块

除了R语言本身之外

可能涉及到和外部应用的接口问题

比如说我们要部署这个R语言

所建的模型的话

你可以把什么可以把我们这个模型

导出为什么

比如说这个PMML

就是一个模型的标记语言

然后在其他的一些那个平台里面

比如说通过Java写的

通过Java重新把这个模型加载起来之后

再重新进行使用

当然也可以什么

比如说R本身提供一个服务

在两个应用之间进行交互也可以

这其实就是一个完整的数据分析过程

接下来我们就以一个Mini小案例

以我们一个实际的问题情境来看一看

通过R如何实现这么一个完整的数据分析流程

首先我们是跟代码没关系的

先说问题情境本身

咱们这个迷你小案例是什么问题

我们关注的是学生的文理分科的问题

当然现在已经有不少省市已经在做高考的改革

文理分科已经慢慢的取消了

但是也有一个说法就是什么

文科和理科即便取消

它也是什么

名亡实存

偏文还是偏理

这其实还是一个人的方向的选择的问题

当然涉及到这个文理分科

选文科还是选理科

偏文还是是偏理的话

它有很多因素

比如你的兴趣

你的爱好

你之前的积累等等

对吧

包括家里面的

其他一些亲戚朋友

他从事哪个行业可能都会受影响

当然我们这个问题情境里面

我们只考虑这么几个因素

第一是性别的因素

第二个是各门科目的成绩的因素

也就是说我要做这个文理分科

要选择的话

那我跟我的性别是不是有关系

跟各门课成绩的好坏是不是有关系

我们通过数据来说话

这也是我们文理分科这个迷你小案例

一个最基本的问题情境

我们一旦明确这个需求之后

也就是说我们通过哪些因素

怎么影响这个文理分科这个问题情境

一旦定义好之后

我们来看一看我们的数据

这份数据

是一个某高中的一份实际的数据

当然这里面我已经做了脱敏的处理

就是一些姓名等等

都进行修改了

但是后面的性别 成绩

包括文理分科的具体的选择情况

这个是真实的

咱们这份数据总共包含这么以下这些字段

首先是姓名

然后是班级

接下来就是性别

是男还是女 这个学生

再之后就有九门课的成绩

包括语文 数学 外语

政治 历史 地理 化学 生物九门课

我们分别在这里面命名的时候都是用什么

拼音的第一个字母

因为我们后面整个这门课都是用同一份数据

所以同学们在看这份数据的时候

得大概知道每个字段代表什么含义

慢慢对这份数据比较熟悉

最后还有一个字段是什么

就是文理分科

也是以这个拼音的第一个字母来写的

文理分科的一个情况

就是他们后面实际上是选择了文科还是理科

这个我们也做了一个记录

当然在讲这个问题情境

包括这个数据的时候

我们需要补充一点

就是所有做数据分析的时候

你必须对什么

对这个问题本身感比较感兴趣

当然我们这个课为了演示

演示相应的后面的算法原理的时候

我们对这个问题情境本身没有太多要求

所以我们选了这个文理分科

一个比较容易理解的问题情境

不需要有太多的

对这个问题情境本身有一个太多的要求

这是我们这个拿到数据的最基本情况

具体数据集大家可以上

上我们的github这个托管的网站(下载)

具体来讲

我们要如何通过这个R语言实现这个数据分析

如何来看一看

哪些因素怎么影响我后面的文理分科的选择

其实我们只要用大概三十几行代码就可以

我们直接看看编好的代码它是怎么样的

这也是我们刚才那个源代码编辑的一个窗口

我们将它移到这个位置来

我们逐行来看一下

它包含这么几个部分

首先是什么

首先第一部分

就读取数据

通过这个library()

这么一个函数

在R里面

函数调用的话都是什么

前面是函数名

后面是一个括符

将参数交给这个函数

通过library()这个函数

直接加载readxl这么一个包

这么一个扩展包

加载完了扩展包之后

怎么样

通过这个扩展包里面的read_excel()

这个函数来读取硬盘上的

相应的数据文件

这边是一个相对的路径

就是我当前工作路径下面

一个data这么一个子文件夹

子文件夹下面有个什么

成绩表cjb.xlsx

这么一个excel文件

这个时候通过这么一个函数

就直接将成绩表这个数据

读到cjb 也就是成绩表

这个数据对象里面来了

它是一个数据框

读完之后

我们通过View()这个函数

看一看读进来的数据是什么样子的

我们刚开始拿到数据是什么

是Excel的形式

一旦读进来之后

读到我们那个RStudio里面来

通过这个View()这个函数

或者是比如说你读完之后也可以

在左下角的窗口点一下相应的

这个小按钮

它也会出来

就显示在这个部分

我们一看

其实已经将什么

将硬盘上的数据

读到我们的RStudio里面来了

一旦读完之后怎么样

我们要对这个数据进行理解

我们已经拿到数据之后

前面问题情境也明确了

现在我们拿数据也看到了

我们开始对数据进行理解

看看数据的高矮胖瘦

看看数据的形态

那我们先看看

进行数据的一个探索性的分析

这个时候我们加载了一个包叫tidyverse

它实际上是应该是一个扩展包的套装(全家桶)

就是有多个包

它应该至少包含包含八个包

加载完这个包之后

我们刚才已经将那个数据读到这个

cjb这个对象里面来了

我们通过这个管道操作符%>%

进行一系列的操作

首先是什么

我选择其中两列

一个是数学sx 一个是文理分科wlfk

我们的问题情境是

究竟什么情况之下

他/她选文科

什么情况之下选理科

我们看看数学成绩是不是和这个文理分科有关系

我先把这个数学和文理分科先选出来

这两列选出来

选完之后

我通过一个箱线图来绘制

他们之间的什么关系

就做一个分组统计

把这个数学和文理分科

进行一个分组绘图

这时候我们调了什么

是ggplot()这么一个函数

然后具体的绘图的方式

是boxplot 也就箱线图

我们看一下 绘图的结果

这个时候可以看得出来

左侧是什么

左侧是理科 右侧是文科

箱线图的话

毫无疑问

我们看有那么几个可以关注的点

首先是中位数

中位数可以看得出来

中位数代表了它集中的趋势

也就是说

这些同学的大致的数学成绩大致的水平

理科生毫无疑问它的什么

中位数相对是高一点的

对不对

相对高一点

那证明我们拿到这份数据里面

理科生的数学成绩相对是偏好一点的

同时 我们可以看一下这个箱子的长度

除了刚才看到这个中位数看集中趋势之外

我们可以通过这个箱子的长度来看什么

看这个分散的程度

毫无疑问

理科生的什么

理科生的数学成绩相对比较集中

文科生相对什么分散

也就说我们可以通过这个

分组的箱线图得一个最基本的结论

是什么

文理分科

就数学而言

理科生相对是集中在比较高的成绩上面的

文科生的话相对是什么

它中位数小

并且它相对分散一点

也就是说文理分科应该跟我们数学是有关系的

跟我们数学成绩是有关系

当然我们可以通过类似的方法去探索

这个比如文理分科和

其他一些那个因素是否也有关系

然后不同的因素之间是不是也有相关关系

比如说不同的课之间是不是正相关

还是负相关等等

可以做进一步的探索性的分析

当然咱们这个为了演示的话

这些具体过程我们就先忽略了

再往下走

在探索完数据之后

我们就可以做什么呢

可以做数据的预处理

因为我们现在是想分析这个不同的因素

最后与什么 和我这个文理分科的关系

我可以通过这个关联规则来挖它

就把这个关联关系给找到

假如要进行关联规则挖掘的话

通过这个arules::apriori()的这个函数进行挖掘

但是这个apriori()里这个函数的话它有一个限制

就是要求所有参与的变量都是什么

都是因子

那这时候我们就先做一个数据预处理

先把它要

该分箱做分箱

该做数据转换做转换

同样是针对这个cjb

我们刚才这个数据对象

这个数据对象

我们做一系列的操作

首先什么

我先增加一列总成绩zcj

然后怎么样

我对这个总成绩为零的这些学生

因为他/她可能是因为某些原因没有参加考试

这个时候再把它作为一个

我们的挖的对象的话

作为我们研究的数据对象的话就不合适了

它可能会误导我们

会影响我们后面正确规则的生成

所以我们剔除这个脏数据

然后我们对性别xb 文理分科wlfk

这两个向量我们进行类型转换

将向量转换成什么

转换成factor 转换成因子

再之后我们刚才看到了

语文也好 数学也好

外语也好等等这九门课

成绩是百分制成绩

我们现在需要进行什么

将它转换成五分制

我们这边定义了一个函数

将百分制转换成五分制

就是转换成优 良 中 及格 不及格

五分制的成绩

转换之后

它其实也就是所谓的实现了数据的分箱

我们一旦进行这个脏数据的处理

进行类型转换

也进行了这个数据分箱的话

那好

这个成绩表

得到一个新的cjb的数据对象了

我们看一下原始的成绩表的数据对象是这样的

这上面我们这个

这个表格所看到的

一旦转化完之后

转换之后的就变成下面这个数据了

那好

一旦做了这个数据预处理之后

我们就可以进入什么

进入下一个环节

数据分析下一个环节是什么

就开始建模

我们看建模怎么做的

同样 为了建模的话

也得调用一个什么

先加载一个扩展包

arulesViz

它会自动加载什么arules相关的包

一旦加载完之后

我们就可以开始

利用相应的其中这个包里面相应的函数

进行这个关联规则的挖掘了

这里面用的函数什么

就是apripri()这个函数

当然我们并不是所有的属性

所有的列都参与这个挖掘

只是性别以及各门科目的成绩

以及文理分科

这几列参与挖掘

所以我们先什么

先对成绩表

先将这些列先选出来

然后交给什么apriori()这个函数

当然我们后面也有一些相应的参数的设置

比如说这个支持度supp=0.06

置信度conf=0.8等等

一旦执行完这个函数之后

我们就将执行结果交给什么

my_model

赋值给my_model

这个时候其实就完成了所谓的建模的工作

就从数据的预处理完了之后

我再将这个数据交给相应的算法

这个算法之后就(挖)出了相应的模型了 my_model

建完模型之后

还可以进一步怎么

看看这个模型的具体性能指标

我们说关联规则的话

它至少得有三个指标

支持度 置信度 还有提升度

我们通过这个通过inspectDT()

这么一个函数来看一看

每一条规则它相应的指标是什么样的

当然可以进一步的通过这个plot

来绘制一下

最终的模型的一个结果

咱们看一下左侧的话就是什么

是挖出来的规则

比如说第一条

性别=女

政治=优 生物=中

那这个时候它历史上一般来讲

它文理分科选择的话就选了文科 wlfk=文科

在历史上它那个置信度是多少

置信度是94%

也就是一百个同学里面

历史上只要符合前面那个条件的话

它后面文理分科都选择了多少

都是选择文科

一百个同学里面有94个同学

将近95个同学是这样选的

也就说过去这个模式存在的

那可能未来的话

比如说你有亲戚有朋友

有小孩

也符合这么一前面这个条件的话

那假如参照以前历史上发生的规律的话

那这时候我们可以推荐她什么

选择文科

再比如后面这个

比如xb=男 sx=优 wy=优 等等

符合这个条件的话

这个时候

wlfk=理科

在历史上出现多少次

一百次里面出现94次是这样的

就是一百个同学

假如他符合这个条件的话

他有94个是选了理科

那毫无疑问对我们来讲也是有一定的参考意义的

所以我们一旦挖这个关联规则之后

你发现我们可以通过数据来说话

究竟哪些因素哪些条件之下

他可能选择文科选择理科

这比我们简单的拍脑袋 简单凭经验就有

进一步的什么说服力了

右侧是将具体模型的结果进行了一个展示

当然前面我们在讲这个小案例的时候

里面有些语法

当然这个代码可能讲的相对是还是比较简单

我们在后续的课程里面会对它进行详细展开阐述

我们今天这个课的目的主要什么

通过这个小案例跟大家直观感受一下

其实R代码就这么一个编写的过程

怎么做数据的读取

怎么做

数据的可视化

怎么做探索 怎么做这个预处理

以及怎么建模

模型大概是怎么评估

这么一个简单过程

我们先看一下

先直观感受一下

那我们看完之后就发现R仅有的命令是什么

其实绝大部分都是什么

就是函数

就是函数调用

调用完之后

我有一个结果赋给某个数据对象

然后接着这个数据对象继续流转

所以赋值其实在

整个这个数据流转过程里面非常重要

非常重要

这也回到我们前面的一个最基本的理念

其实我们编写代码的时候

一个是过程

一个是实体

很多时候我们关注这个实体的时候

更容易理解什么

假如我们关注这个实体的流转过程的话

其实我们对这个代码也更容易理解了

我们来看一下

整个我们前面的迷你小案例里面这个

数据流转的过程

或者说这个实体流转的过程

先是在硬盘上面有这么一个成绩表的什么

这个数据文件

然后我读到什么成绩表

cjb这个数据对象里面来了

对这个成绩表这个数据怎么样

我进行一个什么进行一个预处理

预处理完之后怎么样

我对它进行建模

生成一个模型

再对模型进行什么

进行一个评估

进行可视化

这其实就是一个什么

就是一个数据流转的过程和

这个数据对象一个实体流转的过程

我们通过这个角度来理解这个

R代码的话应该是更加清晰一点

我们归纳一下

究竟这个R代码包含哪些部分

基本上就是两类

一类是对象

一类是这个过程

一类是实体

一类是什么

一类是这个过程

当然这里面也有很多运算符

比如说怎么赋值的 <-

包括我们后面会接触到的什么+ - * /

四则运算

包括一些逻辑运算& | ! 等等

但是 本质上运算符其实还是什么

还是一个函数

所以我们可以简单归纳一下

就所谓R代码的组成

其实就是什么对象加函数

一个是实体

一个是过程

虽然我们代码其实不长

也就三十几行

但是其实我们这个

整个这个完整的数据分析的流程

其实已经跑了一遍了

已经跑了一遍

除了前面这个理解这个业务

跟编代码没关系

后面几个环节都有

比如说我们有数据的理解

探索性分析

有数据的预处理

有建模的过程

也有评估的过程

当然这里面我们为了简洁起见

这模型的部署

我没有讲

比如说如何导出这个模型

或者说R如何和外面的一些那个

平台进行接口

这个我们忽略了

但是这个完整的过程

这个过程其实虽然麻雀虽小

但五脏俱全

希望通过这么一个迷你小案例

大家应该对R的这个数据分析的流程

应该有个直观的认识

本次课到此结束

谢谢大家

R语言数据分析课程列表:

上部:问道

-第1章 气象万千、数以等观

--第1章 气象万千、数以等观

--第1章 作业

-第2章 所谓学习、归类而已

--2.1 所谓学习、归类而已(I)

--2.2 所谓学习、归类而已(II)

--2.3 所谓学习、归类而已(III)

--2.4 所谓学习、归类而已(IV)

--第2章 作业

-第3章 格言联璧话学习

--第3章 格言联璧话学习

--第3章 作业

-第4章 源于数学、归于工程

--第4章 源于数学、归于工程

--第4章 作业

-讨论题

--如何发挥人工智能的头雁效应

中部:执具

-第5章 工欲善其事、必先利其器

--第5章 工欲善其事、必先利其器

--第5章 作业

-第6章 基础编程——用别人的包和函数讲述自己的故事

--6.1 编程环境

--6.2Mini案例

--6.3 站在巨人的肩膀上

--6.4 控制流

--6.5 函数(I)

--6.6 函数(II)

--第6章 作业

-第7章 数据对象——面向数据对象学习R语言

--7.1 向量与因子(I)

--7.2 向量与因子(II)

--7.3 矩阵与数组(I)

--7.4 矩阵与数组(II)

--7.5 列表与数据框(I)

--7.6 列表与数据框(II)

--第7章 作业

-第8章 人人都爱tidyverse

--第8章 人人都爱tidyverse

--第8章 作业

-第9章 最美不过数据框

--第9章 最美不过数据框

--第9章 作业

下部:博术

-第10章 观数以形

--10.1 一维数据空间(I)

--10.2 一维数据空间(II)

--10.3 二维数据空间

--10.4 高维数据空间

--第10章 作业

-第11章 相随相伴、谓之关联

--11.1 导引

--11.2 关联规则(I)

--11.3 关联规则(II)

--11.4 关联规则(III)

--第11章 作业

-第12章 既是世间法、自当有分别

--12.1 导引

--12.2 近邻法(I)

--12.3 近邻法(II)

--12.4 决策树(I)

--12.5 决策树(II)

--12.6 随机森林

--12.7 朴素贝叶斯

--12.8 逻辑斯蒂回归

--12.9 人工神经网络(I)

--12.10 人工神经网络(II)

--12.11 支持向量机

--第12章 作业

-第13章 方以类聚、物以群分

--13.1 导引

--13.2 划分方法

--13.3 层次方法

--第13章 作业

-第14章 庐山烟雨浙江潮

--第14章 庐山烟雨浙江潮

--第14章 作业

6.2Mini案例笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。