吴恩达机器学习之Octave教程(Octave Tutorial):基本操作、移动数据、 计算数据、绘图数据、控制语句:for,while,if语句、 向量化、工作和提交的编程练习

吴恩达机器学习栏目清单
专栏直达:https://blog.csdn.net/qq_35456045/category_9762715.html在这里插入图片描述

5.Octave教程(Octave Tutorial)

5.1 基本操作

参考视频: 5 - 1 - Basic Operations (14 min).mkv

在这段视频中,我将教你一种编程语言:Octave语言。你能够用它来非常迅速地实现这门课中我们已经学过的,或者将要学的机器学习算法。

过去我一直尝试用不同的编程语言来教授机器学习,包括C++、Java、Python、Numpy和Octave。我发现当使用像Octave这样的高级语言时,学生能够更快更好地学习并掌握这些算法。事实上,在硅谷,我经常看到进行大规模的机器学习项目的人,通常使用的程序语言就是Octave。(这是当时的情况,现在主要是用Python)
Octave是一种很好的原始语言(prototyping language),使用Octave你能快速地实现你的算法,剩下的事情,你只需要进行大规模的资源配置,你只用再花时间用C++或Java这些语言把算法重新实现就行了。开发项目的时间是很宝贵的,机器学习的时间也是很宝贵的。所以,如果你能让你的学习算法在Octave上快速的实现,基本的想法实现以后,再用C++或者Java去改写,这样你就能节省出大量的时间。
据我所见,人们使用最多的用于机器学习的原始语言是Octave、MATLAB、Python、NumPy 和R。
Octave很好,因为它是开源的。当然MATLAB也很好,但它不是每个人都买得起的。(貌似国内学生喜欢用收费的matlab,matlab功能要比Octave强大的多,网上有各种D版可以下载)。这次机器学习课的作业也是用matlab的。如果你能够使用matlab,你也可以在这门课里面使用。
如果你会Python、NumPy或者R语言,我也见过有人用 R的,据我所知,这些人不得不中途放弃了,因为这些语言在开发上比较慢,而且,因为这些语言如:Python、NumPy的语法相较于Octave来说,还是更麻烦一点。正因为这样,所以我强烈建议不要用NumPy或者R来完整这门课的作业,我建议在这门课中用Octave来写程序。
本视频将快速地介绍一系列的命令,目标是迅速地展示,通过这一系列Octave的命令,让你知道Octave能用来做什么。
启动Octave:
现在打开Octave,这是Octave命令行。
在这里插入图片描述
现在让我示范最基本的Octave代码:
输入5 + 6,然后得到11。
输入3 – 2、5×8、1/2、2^6等等,得到相应答案。
在这里插入图片描述
这些都是基本的数学运算。
在这里插入图片描述
你也可以做逻辑运算,例如 12,计算结果为 false (假),这里的百分号命令表示注释,12 计算结果为假,这里用0表示。
请注意,不等于符号的写法是这个波浪线加上等于符号 ( ~= ),而不是等于感叹号加等号( != ),这是和其他一些编程语言中不太一样的地方。
在这里插入图片描述
让我们看看逻辑运算 1 && 0,使用双&符号表示逻辑与,1 && 0判断为假,1和0的或运算 1 || 0,其计算结果为真。
在这里插入图片描述
还有异或运算 如XOR ( 1, 0 ),其返回值为1
从左向右写着 Octave 324.x版本,是默认的Octave提示,它显示了当前Octave的版本,以及相关的其它信息。
如果你不想看到那个提示,这里有一个隐藏的命令:
输入命令
在这里插入图片描述
现在命令提示已经变得简化了。
接下来,我们将谈到Octave的变量。
现在写一个变量,对变量a赋值为3,并按下回车键,显示变量a等于3。
在这里插入图片描述
如果你想分配一个变量,但不希望在屏幕上显示结果,你可以在命令后加一个分号,可以抑制打印输出,敲入回车后,不打印任何东西。
在这里插入图片描述
其中这句命令不打印任何东西。
现在举一个字符串的例子:变量b等于"hi"。
在这里插入图片描述
c等于3大于等于1,所以,现在c变量的值是真。
在这里插入图片描述
如果你想打印出变量,或显示一个变量,你可以像下面这么做:
设置a等于圆周率π,如果我要打印该值,那么只需键入a像这样 就打印出来了。
在这里插入图片描述
对于更复杂的屏幕输出,也可以用DISP命令显示:
在这里插入图片描述
这是一种,旧风格的C语言语法,对于之前就学过C语言的同学来说,你可以使用这种基本的语法来将结果打印到屏幕。
例如 ^{T}命令的六个小数:0.6%f ,a,这应该打印π的6位小数形式。
也有一些控制输出长短格式的快捷命令:
在这里插入图片描述
下面,让我们来看看向量和矩阵:
比方说 建立一个矩阵A:
在这里插入图片描述
对A矩阵进行赋值,考虑到这是一个三行两列的矩阵,你同样可以用向量。
建立向量V并赋值1 2 3,V是一个行向量,或者说是一个3 ( 列 )×1 ( 行 )的向量,或者说,一行三列的矩阵。
如果我想,分配一个列向量,我可以写“1;2;3”,现在便有了一个3 行 1 列的向量,同时这是一个列向量。
下面是一些更为有用的符号,如:
V=1:0.1:2
这个该如何理解呢:这个集合v是一组值,从数值1开始,增量或说是步长为0.1,直到增加到2,按照这样的方法对向量V操作,可以得到一个行向量,这是一个1行11列的矩阵,其矩阵的元素是1 1.1 1.2 1.3,依此类推,直到数值2。
我也可以建立一个集合v并用命令“1:6”进行赋值,这样V就被赋值了1至6的六个整数。
在这里插入图片描述
这里还有一些其他的方法来生成矩阵
例如“ones(2, 3)”,也可以用来生成矩阵:
在这里插入图片描述
元素都为2,两行三列的矩阵,就可以使用这个命令:

你可以把这个方法当成一个生成矩阵的快速方法。
w为一个一行三列的零矩阵,一行三列的A矩阵里的元素全部是零:
在这里插入图片描述
还有很多的方式来生成矩阵。
如果我对W进行赋值,用Rand命令建立一个一行三列的矩阵,因为使用了Rand命令,则其一行三列的元素均为随机值,如“rand(3,3)”命令,这就生成了一个3×3的矩阵,并且其所有元素均为随机。
在这里插入图片描述
数值介于0和1之间,所以,正是因为这一点,我们可以得到数值均匀介于0和1之间的元素。
如果,你知道什么是高斯随机变量,或者,你知道什么是正态分布的随机变量,你可以设置集合W,使其等于一个一行三列的N矩阵,并且,来自三个值,一个平均值为0的高斯分布,方差或者等于1的标准偏差。
在这里插入图片描述
还可以设置地更复杂:
并用hist命令绘制直方图。
在这里插入图片描述
绘制单位矩阵:
在这里插入图片描述
如果对命令不清楚,建议用help命令:
在这里插入图片描述
以上讲解的内容都是Octave的基本操作。希望你能通过上面的讲解,自己练习一些矩阵、乘、加等操作,将这些操作在Octave中熟练运用。
在接下来的视频中,将会涉及更多复杂的命令,并使用它们在Octave中对数据进行更多的操作。

5.2 移动数据

参考视频: 5 - 2 - Moving Data Around (16 min).mkv

在这段关于 Octave的辅导课视频中,我将开

  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值