5.1 基本操作

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

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

过去我一贯考试测验用不同的编程措辞来教授机器学习,包括C++、Java、Python、Numpy和Octave。
我创造当利用像Octave这样的高等措辞时,学生能够更快更好地学习并节制这些算法。
事实上,在硅谷,我常常看到进行大规模的机器学习项目的人,常日利用的程序措辞便是Octave。
(编者注:这是当时的情形,现在紧张是用Python)

吴恩达师长教师课程笔记系列第19节Octave教程之基本操作1

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等等,得到相应答案。

这些都是基本的数学运算。

你也可以做逻辑运算,例如 1==2,打算结果为 false (假),这里的百分号命令表示注释,1==2 打算结果为假,这里用0表示。

请把稳,不即是符号的写法是这个波浪线加上即是符号 ( ~= ),而不是即是感叹号加等号( != ),这是和其他一些编程措辞中不太一样的地方。

让我们看看逻辑运算 1 && 0,利用双&符号表示逻辑与,1 && 0判断为假,1和0的或运算 1 || 0,其打算结果为真。

还有异或运算 如XOR ( 1, 0 ),其返回值为1

从左向右写着 Octave 324.x版本,是默认的Octave提示,它显示了当前Octave的版本,以及干系的其它信息。

如果你不想看到那个提示,这里有一个隐蔽的命令:

输入命令

现在命令提示已经变得简化了。

接下来,我们将谈到Octave的变量。

现在写一个变量,对变量赋值为3,并按下回车键,显示变量即是3。

如果你想分配一个变量,但不肯望在屏幕上显示结果,你可以在命令后加一个分号,可以抑制打印输出,敲入回车后,不打印任何东西。

个中这句命令不打印任何东西。

现在举一个字符串的例子:变量即是\公众hi\公众。

即是3大于即是1,以是,现在变量的值是真。

如果你想打印出变量,或显示一个变量,你可以像下面这么做:

设置即是圆周率,如果我要打印该值,那么只需键入a像这样 就打印出来了。

对付更繁芜的屏幕输出,也可以用DISP命令显示:

这是一种,旧风格的C措辞语法,对付之前就学过C措辞的同学来说,你可以利用这种基本的语法来将结果打印到屏幕。

例如 ^{T}命令的六个小数:0.6%f ,a,这该当打印的6位小数形式。

也有一些掌握输出是非格式的快捷命令:

下面,让我们来看看向量和矩阵

比方说 建立一个矩阵:

对矩阵进行赋值,考虑到这是一个三行两列的矩阵,你同样可以用向量。

建立向量并赋值1 2 3,是一个行向量,或者说是一个3 ( 列 )×1 ( 行 )的向量,或者说,一行三列的矩阵。

如果我想,分配一个列向量,我可以写“1;2;3”,现在便有了一个3 行 1 列的向量,同时这是一个列向量。

下面是一些更为有用的符号,如:

V=1:0.1:2

这个该如何理解呢:这个凑集是一组值,从数值1开始,增量或说是步长为0.1,直到增加到2,按照这样的方法对向量操作,可以得到一个行向量,这是一个1行11列的矩阵,其矩阵的元素是1 1.1 1.2 1.3,依此类推,直到数值2。

我也可以建立一个凑集并用命令“1:6”进行赋值,这样就被赋值了1至6的六个整数。

这里还有一些其他的方法来天生矩阵

例如“ones(2, 3)”,也可以用来天生矩阵:

元素都为2,两行三列的矩阵,就可以利用这个命令:

你可以把这个方法当成一个天生矩阵的快速方法。

为一个一行三列的零矩阵,一行三列的矩阵里的元素全部是零:

还有很多的办法来天生矩阵。

如果我对进行赋值,用Rand命令建立一个一行三列的矩阵,由于利用了Rand命令,则其一行三列的元素均为随机值,如“rand(3,3)”命令,这就天生了一个3×3的矩阵,并且其所有元素均为随机。

数值介于0和1之间,以是,正是由于这一点,我们可以得到数值均匀介于0和1之间的元素。

如果,你知道什么是高斯随机变量,或者,你知道什么是正态分布的随机变量,你可以设置凑集,使其即是一个一行三列的矩阵,并且,来自三个值,一个均匀值为0的高斯分布,方差或者即是1的标准偏差。

还可以设置地更繁芜:

并用hist命令绘制直方图。

绘制单位矩阵:

如果对命令不清楚,建议用help命令:

以上讲解的内容都是Octave的基本操作。
希望你能通过上面的讲解,自己练习一些矩阵、乘、加等操作,将这些操作在Octave中闇练利用。

在接下来的课程中,将会涉及更多繁芜的命令,并利用它们在Octave中对数据进行更多的操作。