当前课程知识点:R语言数据分析 >  中部:执具 >  第7章 数据对象——面向数据对象学习R语言 >  7.4 矩阵与数组(II)

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

7.4 矩阵与数组(II)在线视频

下一节:7.5 列表与数据框(I)

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

7.4 矩阵与数组(II)课程教案、知识点、字幕

大家好

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

今天继续和大家一块交流

矩阵与数组的相关内容

说到矩阵的时候

其实我们在以前学线性代数的时候

经常碰到解方程组的问题

比如说这么一个简单的方程组

我们要解的话 以前一般都通过消元法

我来解这个方程组

一旦有了R之后 有这个工具之后

其实我只要调用这个

solve()这么一个函数就可以

solve(A, b)

它接收两个参数

第一个A代表这个系数矩阵

而b毫无疑问就是个常数项

咱们针对这个线性方程组

我们看一看R里面怎么解它

我们看一看R里面怎么解它

毫无疑问首先我应该

我先要把这个系数矩阵给创建了

还是同样这个系数矩阵

毫无疑问是一个3乘3的长度为9的一个矩阵

包含3行3列包含这么9个元素

我们对照这个线性方程组

我们写一下这个系数矩阵

1 2 3

2 2 5

3 5 1

一般来讲我们在创建矩阵的时候

推荐大家按照它固有的形式来排列它

虽然它是一个9

本质上是一个长度为9的一个数值向量

但我们最好是按照这个矩阵的方式

来编排来排版

排版我们的代码

毫无疑问这个时候因为我是按照

1-2-3 2-2-5 3-5-1

这个方式来填充的

这个时候我byrow应该设为TRUE

就按行进行填充

得到一个矩阵就是

1-2-3

2-2-5

3-5-1

好 常数项毫无疑问

这个是比较创建就比较简单了

就是1到3

1:3 = 1 2 3

然后要解这个线性方程组的话

将这个创建A和这b放到

solve()这个函数里面来作为参数

传递给它就可以了

很容易我们得到它相应的这个解

1 0 0

x1等于1

x2和x3都为0

我们讲了solve()这个函数的话

前面是A是这个系数

这个b的话 第2个参数是

是我们右侧这一部分

假如把这个b改成E的话

改成单位矩阵的话

毫无疑问AX等于E的话这个X等于多少

这个时候其实等于A’

A’就是A的一个逆矩阵

也就是说通过这个solve()函数其实可以求

一个矩阵的逆

咱们看一看R里面怎么实现

毫无疑问

这个时候我们可以先创建一个单位矩阵

通过这个diagonal

当然diag()这是用来生成一个对角矩阵的

比如说我这里面给它一个向量的话

比如说diag(1:3)

1到3的话就比较

生成了1 2 3

这个对角线上为1 2 3的一个对角矩阵

假如我只交给它一个参数3的话

那就都是什么 1 1 1

3乘3一个单位矩阵就创建好了

这个时候我再将这个A和这个单位矩阵

作为参数传递给solve()这个函数的话

毫无疑问

结果就是A的一个逆矩阵了

这么一种方式

其实就实现了我们所谓的矩阵求逆的过程

也是通过solve()这个函数

那毫无疑问我们将这个逆矩阵

当然我们假如这个solve()只接受一个参数的话

我默认这个b就是就是单位矩阵

所以这个结果其实就是A的一个逆矩阵了

假如矩阵相乘的话

这个时候要通过两个百分号

将这个乘号括起来

就表示A的逆矩阵乘以A

是什么呢

逆矩阵和它自己相乘是单位矩阵

应该就是

我们得结果应该对角相等都为1

但是我们现在看到结果不是这样的

发现对角线上差不多都为1

有比如说比1大一点点的比1小一点点的

然后非对角线上的元素差不多为0

但不确切为0

这是为什么

难道R连这么一个简单的问题解决不了吗

其实这并不是R本身的问题

它是一个数据存储的问题

我们再看下面这个例子

比如说sqrt这表示开根号

前面是sq=square rt=root

就是表示开根号

这个前面是根号2

根号2再平方

应该就是2是不是

但是你发现sqrt(2)

然后根号2再平方的话

你发现它和2是相等的吗

不是

它返回结果是FALSE

为什么呢

这其实和前面这个我们看到的

它的逆矩阵和本身相乘不为单位矩阵

它道理是一样的

什么意思

比如说我对根号2这么一个无理数

其实你全世界所有电脑拿过来你都存不下它

假如把它所有位都存下来的话

无理数是无穷无尽的

但我们计算机里面存储它是有限的

存储的位数是有限的

所以它只是近似的

前面这一部分只是近似的表示根号2

它并不是确切的数学意义上的根号2

它在平方之后它就不是2

平方之后就不是2了

同样我这个逆矩阵在求的过程中

它其实本身也是存储有限位

也是一个近似的表达

所以这个时候我们一般怎么办

我们可以通过比如说dplyr

这个包里面有一个near()这个函数

就差不多就可以了

就比如说sqrt 根号2再平方

和2是不是差不多

就非常近似

是不是这样的

这个时候我们结果就是TRUE了

同样我们针对这个我们逆矩阵和单位矩阵

它相乘之后和单位矩阵相比

和diag(3)相比

每一个元素是不是都相同

你发现它返回结果也是相近的

这个near()它结果就是

这个时候我们可以做一个判断

就不要直接和它相等

也是通过这个near()函数来判断

这里面我们讲了一下

通过R来解一个简单的线性方程组

同时通过solve()函数简单讲一下我们

R里面如何求这个矩阵的逆矩阵

其实在R里面

不管是矩阵相乘也好

转置

求它的行列式

求逆

包括比如说我们求矩阵的特征值

求它的

比如说

对矩阵进行分解

其实都有实现

强烈建议大家看一下这个

它是R和Matlab进行一个对照的

就是Matlab里面是哪些函数

R里面是哪些函数

几乎将我们这里面能碰到的

关于矩阵的一些操作都进行了实现

咱们时间有限

我们在课堂上就不详细展开了

以上就我们关于这个矩阵的最基本的内容

还是回到我们这个数据对象地图

在讲完了第二组里面第一个矩阵之外

接下来我们就开始进入第二组里面

下一个内容就是数组

其实矩阵和数组为什么把它们放在一组

因为矩阵它本质上就是数组

它是一个二维的数组

然后数组的话可以是高维的

可以是三维四维甚至更高维

但一般来讲

我们通常能用得到的三维数组居多

当然我们脑子里能想象到的

其实也顶多有三维的数据空间

再高维其实基本上也

超出我们的想象的范围了

绝大部分这情况之下也是以三维数组居多

比如说我们一个彩色图像

它其实就本质上存储就是

一个三维数组的方式来存储

我们接下来就以这么一个总统山的

这么一个图像为例

它是怎么处理的

它是怎么一种数组的方式进行处理

我们来以这个为例

我们简单讲述一下这个三维数组的操作

我们这个图像是482×345这么一个图像

这个图像我们可以

已经托管在这个github里面

咱们可以通过这个url

我们将它download直接将它下载到本地

下载到本地之后

我通过调用这个library(imager)一个函数

我可以将这个图片先加载到我们的R里面来

作为这个presidents

交给这个变量

好 我们看一下

通过这个str来看看这个数据结构是什么样

一看到这个482和345

我们就比较兴奋了

其实它就是一个数组

和我们前面看到的这个图像是完全一致的

就是482长

就是它的长和宽分别是482 345

究竟是个什么原理

咱们后面再看还有一个1

3对不对

123

因为它是一个RGB

它是一个彩色图像

它真正的内部工作原理是这样的

我们作为一个彩色图像的话

毫无疑问它是图层有三个图层

有R 有G 有B

同样在R里面要存储的话

它其实存储为一个三维数组

大家注意了比如说这个X轴

Y轴 Z轴

我们的X轴

是多少1到482

Y轴1到345

Z轴大家看看1 2 3

它其实我们可以理解为

就是三个二维数组

分别代表三个图层

所以接下来我们在做这个图像处理的时候

其实我们就可以把它当做一个数组来进行处理

比如说我现在一旦读到这个R里面来了

这个load.image()把这个图片

我们硬盘上存储的jpg文件

读到这个R里面来了

我们可以plot一下

大家看一下

这毫无疑问1到482

1到345

假如我现在只想看这个红色图层

我可以把它的第二个第三个图层怎么样

都赋为0

这时我再plot以一下的时候

你发现它变成红色的

假如我把第一个和第三个图层去

赋值为0的话

这个时候变成

只留下这个绿色的部分

同样假如把前两个去掉的话

就只留下这个蓝色的部分了

blue这部分

当然我们也知道

这个假如调色的话

我只保留前面两个图层

第三个图层不要的话

这时候就变成黄色

我要是把第三个图层去掉

赋值为0

这时候再plot的时候你发现什么

这个照片已经泛黄了

所以我们看得出来

其实所谓的图片的操作

其实本质上都是

我们数组的操作

当然前面都是相对比较简单一些操作

就是一个颜色一个变换

我们再看一个相对复杂一点点的

比如说我们这个总统山里面这个照片里面

我们要在林肯总统的头像上面

加一个类似于马赛克的这么一个效果

怎么加

其实我们在上面叠加噪声就可以

我首先找到这个位置

找这个区域

350到449

就是x

然后y

110到259

就是一个分别为100和150的这么一个区域

这个时候它其实三个

因为它是一个RGB的图像

所以它应该有三个图层

RGB都是这么一个方式

这个区域它的维度分别多少

100

150

3

就是i j k分别为100 150 3

这个时候我就可以

100乘以150乘以3

生成这么长的一些噪声

我就通过这个均匀分布来产生它

当然这个prod() product这是表示乘

就是i*j*k 分别相乘

好 生成这么一个噪声数据之后

我来创建通过array这个函数来创建一个数组

所以它无论是数组也好矩阵也好

创建的过程都是赋值

通过相应的函数

比如说通过c() 通过factor() 通过matrix()

通过我们这边array()

来创建这么一个小区域的一个数组

它的维度我们刚才看了

分别是100 150 3

然后它的数据是什么呢

刚才我们生成的这个均匀分布的一个数据

将它交给array()这个函数

就产生了相应这个区域的一个数组了

要实现这个打马赛克

类似马赛克的效果怎么办

我只要将这一部分

随机的噪声和谁相加

和原始图像这部分区域相加

也是这个区域相加

相加完之后

再交给原始这个presidents

这么一个数组 这么一个对象

当然这里面我们加了一个系数

分别是乘以0.6和0.4

它们只要加起来为1就可以

好 我们再看看这个加完之后效果是为

我一plot

你发现plot之后

就是我们加了一个类似于马赛克的一个效果

当然我们前面讲了这些

无论是变颜色也好

还是加一个小的这个马赛克的效果

其实相对都是比较简单的一个图像操作

但是我们其实有一个最基本的理念

无论我这个数据在硬盘上面

我在从其它渠道拿到的数据是什么样的

是图像的是音频的还有其它一些数据

最终到我们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章 作业

7.4 矩阵与数组(II)笔记与讨论

也许你还感兴趣的课程:

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