前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Octave入门之数据操作—ML Note28

Octave入门之数据操作—ML Note28

作者头像
讲编程的高老师
发布2020-08-14 10:39:07
1.7K0
发布2020-08-14 10:39:07
举报

本文是吴恩达《机器学习》视频笔记第28篇,对应第2周第10个视频。

“Octave Tutorial——Moving data around”

01

笔记

机器学习最离不开的就是数据。我们使用Octave写机器学习代码的时候,如何将硬盘上的数据导入Octave中?如何将这些数据放入矩阵?如何将计算的结果数据保存下来?这些问题都需要解决。

矩阵和向量

从上一篇笔记已经知道如何使用Octave定义一个矩阵。

还可以用size命令查看矩阵的形状。

这个size()函数它实际上返回的也是一个矩阵(1×2):

如果只想看矩阵的行数,或者列数的话,可以使用下面的命令:

>>size(A,1)
ans =  3
>>size(A,2)
ans =  2
>>

如果是一个向量的话,可以用length命令查看长度:

>>v=[1 2 3 4 5]
v =
   1   2   3   4   5
>>length(v)
ans =  5
>>length(A)
ans =  3

当然,你也可以用length命令作用于矩阵上,得到的是行数。我理解就是,你用length得到的是一对象的最外一层的个数。

路径

我们在打开Octave的时候,它已经有一个默认的路径了,即我们当前工作环境所处的硬盘上的路径位置,可以使用pwd命令查看。

还可以使用ls命令查看当前路径下的文件夹之类的,注意用的是ls而不是dir。

我们可以把要处理的数据文件移动到当前路径,当然也可以将工作路径转移到数据文件所在的文件夹。使用cd命令即可,比如:

>>cd 'G:\ML Wu'>>pwdans = G:\ML Wu>>

注意:cd后面的路径必须加单引号或者双引号。

载入一个数据文件到Octave

本视频用到的两个dat文件,没有找到下载链接,所以只能自己模拟着创建一下。使用记事本创建一个txt文件打开编辑,注意中间是tab(制表符)不是空格键。

然后像下图一样另存为一个dat文件。

然后利用load命令就可以将这个文件加载到Octave中,加载完成之后可以使用who命令查看Octave中所有的变量,如下图:

当然,load命令还可以这样用:

load('featureX.dat')

这个时候我们直接敲入featureX,就可以显示featureX中的所有数据,在这里为了简单,我只写了20行。吴老师的视频里是47行的。

可以通过size命令查看featureX的大小:

同样的办法创建priceY.dat并导入Octave,priceY是20行1列的。

如果把前面的who命令之后再加个s,显示出来的变量就更加详细。

如果随着Octave执行的时间变长,导入的变量越来越多,这时候就可以使用clear命令来删除某个不用的变量。比如:

存储变量

如果把Octave看成也给黑匣子,前面我们把硬盘上的文件送入黑匣子了,那如何把黑匣子的变量给保存下来呢?

我们把priceY的前十行给保存下来,可以这样,先把前十行给一个变量v。

如果想把v保存到硬盘上,很简单。使用save命令,后面跟上文件名和要保存的变量名即可。如下:

这时候在Octave当前的工作路径下就多了一个hello.dat文件,

打开以后是这个样子的,文件前面是一些注释,后面是变量的数据。

如果只使用clear命令,后面不跟变量名,就是默认删除当前所有的变量,慎用。

但是,这个时候比较有意思了,如果我们使用load命令把刚刚保存的hello.dat文件给导入,你会发现我们导入之后的变量名不是hello而是v。

这一点非常好。

如果save的时候把.dat改成*.mat可以进行一些压缩,当变量很大的时候有用。当然,还可以保存成txt同时指定编码格式。

操作数据

我们学会了load数据、save数据,那具体该怎样操作数据呢?

还是定义一个3×2的矩阵A:

首先,访问矩阵中的某一个元素可以使用矩阵名加行号、列号,A(3,2)表示A矩阵的第三行、第二列,即6.

如果把索引的第二个数改成冒号,就是索引那一整行;同样的,如果把行数改成冒号,表示索引那一整列。比如:

如果想访问矩阵中的某几行可以么?也是可以的,比如想访问A矩阵的第1行、第3行就可以这样:

也可以用上面访问类似的方法去更改对应位置上的值,比如:

还可以给一个矩阵添加一列:

这个时候,A就变成了一个3×3的矩阵了。

还有一个比较有意思的操作,就是把A逐列拿出来组成一个新的列:

还可以有这样的骚操作:

将A、B两个矩阵按列或者行的形式拼接。有了上面这种操作提醒,我想你应该也知道了如何给一个矩阵添加一行了。

你看,Octave还是很强大的,通过一些简单的指令可以构建非常复杂的矩阵。

不仅如此,Octave还可以实现更复杂的操作,后面视频还会讲。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-07-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 讲编程的高老师 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 矩阵和向量
  • 路径
  • 载入一个数据文件到Octave
  • 存储变量
  • 操作数据
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档