Octave教程(吴恩达机器学习)

此文是转载内容!!!!!

本次课主要是关于编程,帮助你学会如何编程实现学习算法。编程需要的工具是Octave或者Matlab。本部分介绍关于Octave/Matlab的知识,以及如何提交相关编程作业.

Lesson 1 Octave/Matlab教程


Part 1 基本操作

本节主要介绍关于Octave的基本操作

Octave教程(吴恩达机器学习)_第1张图片 在Octave中可以进行 基本的算术运算,逻辑运算 ,操作如图所示,简单方便,其中%用于注释的作用。

注:在Matlab中,符号使用完全相同。

使用ps1('>> ');可以改变提示符的样子,注意这个地方有分号。

可以直接在命令行中给 变量赋值 ,加上分号后可以不直接打印出来,直接输入参数,可以直接打印出相应的值。

用pi对a进行赋值,函数disp(a)用于打印显示变量,sprintf函数也用于显示。disp和sprintf可结合也可心单独使用。format可以使接下来打印的结果格式发生改变。

Octave教程(吴恩达机器学习)_第2张图片 这里讲解了如何给矩阵和向量赋值。

Octave教程(吴恩达机器学习)_第3张图片 第一个例子是如何构造列向量,即用分号分隔即可。

第二个例子是构造横向量,从1开始到2,每个值间隔0.1

构造横向量,从1到6

构造2X3的全为1的矩阵

Octave教程(吴恩达机器学习)_第4张图片 ones()函数可以简化构造

Octave教程(吴恩达机器学习)_第5张图片 ones,zeros构造全为1或者0的矩阵,rand构造全部为随机数的矩阵

Octave教程(吴恩达机器学习)_第6张图片 randn产生标准正态分布的随机数或矩阵的函数。对于hist,它的全称是histogram,全称直方图,即用直方图的形式统计出各范围内元素的个数,如

用hist显示为

Octave教程(吴恩达机器学习)_第7张图片 其中hist(w,a),这个数字a表示把直方图分为a份。

Octave教程(吴恩达机器学习)_第8张图片 eye()函数产生单位矩阵

不知道函数的功能,可以用help函数来查询


Part 2 对数据进行灵活操作

Octave教程(吴恩达机器学习)_第9张图片 本节主要讲如何在Octave中对数据进行灵活地处理,即对数据的各种可能的操作方式。

Octave教程(吴恩达机器学习)_第10张图片 打印一个2x3的矩阵,size计算规模,size值仍这向量,可以再计算规模

Octave教程(吴恩达机器学习)_第11张图片 size(A,1)计算第一个维度,即2x3中的2,size(A,2)计算第二个维度,即3。

length(v)或者length(A)表示计算向量的维度或者矩阵中最大的维数。

pwd显示当前工作目录

cd '.....'切换工作目录

ls列出当前目录中文件

who显示当前工作空间中已经定义的变量

load X和load('X')的作用一致,都是将文件内容导入。这两个dat文件里边就是关于房价的数据

如featureX.dat

Octave教程(吴恩达机器学习)_第12张图片 priceY.dat

文本中数据导入后,用矩阵的形式存储,可打印在控制台中


whos可以显示更加详细的变量的信息

直接使用clear命令,可以删除所有的变量

Octave教程(吴恩达机器学习)_第13张图片 clear featuresX则删除某一个变量

Octave教程(吴恩达机器学习)_第14张图片 priceY(m:n)表示取向量的第m个元素到第n个元素进行赋值

Octave教程(吴恩达机器学习)_第15张图片 对于矩阵来说,元素编号是从上到下,从左向右依次编号

Octave教程(吴恩达机器学习)_第16张图片

注意对比,上面两张图的赋值,上上是从已知向量截取再赋值,上图是对一个新的变量赋值。

该命令将向量数据存储到本地文件hello.mat中,但只能用matlab来读取

保存为文本格式,可读。保存为.dat格式也是可以的

Octave教程(吴恩达机器学习)_第17张图片 A(x,y)表示对矩阵进行索引,使用:表示该行或者列的所有元素

上面表示很奇特,表示将第一和三行的所有元素进行显示

也可以通过这各形式对矩阵赋值

Octave教程(吴恩达机器学习)_第18张图片 通过上述方式对矩阵增加一列

Octave教程(吴恩达机器学习)_第19张图片 将所有元素放在一个向量中

可以通过上述方式将两个矩阵进行组合,用;表示将B矩阵放在A矩阵下面,用,或者不用,则表示把矩阵B放在旁边

Part 3 数据运算

本节介绍如何对数据进行运算

Octave教程(吴恩达机器学习)_第20张图片 为方便后续讲解,首先初始化三个矩阵

A*C表示A与C矩阵正常相乘

A .* B点乘表示两个矩阵中的每个对应位置的元素相乘

可以理解为.为对每个元素进行依次处理

A .^ 2对矩阵每个元素进行平方

1./A表示对A的每个元素进行除法,用1 来除以第个元素

log(A)表示以e为底,对每个元素求log

exp(A)表示以e的A中每个元素为幂的结果

abs(A)表示对A的每个元素求绝对值

-A表示对A的每个元素求负数

v+1表示对v中每个元素都加1

A‘表示矩阵A的转置

max(v)表示向量v中最大的元素,矩阵的含义有点不同,得到的是一个向量,包含了来自各列的最大元素组成的行向量

A<3表示对每个元素都进行比较,得到的结果为1或者0

find(A<3)得到一个向量,列出相应小于3的元素的索引

magic(n)表示生成nxn的矩阵,每行每列得到的和相同,且元素从1到n^n

Octave教程(吴恩达机器学习)_第21张图片 上面给了一个使用find的例子。实际上这些功能都不需要记,有知道时,直接使用help就行。

Octave教程(吴恩达机器学习)_第22张图片 sum将矩阵所有元素进行相加

prod将数组元素全部相乘,如果是矩阵,则是对每一列看作向量进行相乘,得到向量

floor对每个元素向下取整

ceil对每个元素向上取整

rand得到3x3的随机数矩阵

Octave教程(吴恩达机器学习)_第23张图片 pinv求矩阵的逆

Part 4 数据可视化

Octave教程(吴恩达机器学习)_第24张图片 本节主要讲解如何对数据可视化

对变量t进行赋值,构造正弦函数,然后作图,得到如上图所示的结果

Octave教程(吴恩达机器学习)_第25张图片 hold on将图形保持,使用r追加图像

xlabel对x轴命名

legend对每条线进行说明

title追加名字

print保存图像到本地

将图像关闭

对图像命名,出现两个图

将一张图分为两部分,呈现第1部分

分别设置x轴和y轴的范围

clf清除现有图像中的内容

也可以对矩阵进行可视化,用imagesc

Part 5 循环语句,条件语句和函数

Octave教程(吴恩达机器学习)_第26张图片 本节讲解编程中的程序结构和函数

Octave教程(吴恩达机器学习)_第27张图片 这是一个for循环语句的例子

Octave教程(吴恩达机器学习)_第28张图片 用矩阵,可以直接表示多个值

Octave教程(吴恩达机器学习)_第29张图片 习惯于循环后打逗号,代码有缩进便于阅读,用end表示代码的结束。

和写c代码相似,有分号打分号,无分号打逗号

上面是使用if语句的例子,和c是完全一致的

使用quit或者exit可以使matlab退出

Octave教程(吴恩达机器学习)_第30张图片 用wordpad自定义一个函数,如图所示

Octave教程(吴恩达机器学习)_第31张图片 切换到路径下,或者用addpath加入搜索路径,可以使用自定义函数。

还可以定义有两个值的函数,一起输出两个值。

注:自定义函数的用法,必须创建.m文件,且文件名和函数名称必须一致。

下面举个计算成本函数的例子

Octave教程(吴恩达机器学习)_第32张图片 有这样一个数据集合,请计算他的成本函数

Octave教程(吴恩达机器学习)_第33张图片 首先输入数据集合

然后输入自定义函数

Octave教程(吴恩达机器学习)_第34张图片 直接计算结果


Part 6 向量化

Octave教程(吴恩达机器学习)_第35张图片 本节讲解如何使用计算机和软件自带的库来加速运算。将大量数据向量化,使用矩阵工具进行运算,可以借助机器大大加快处理速度。

Octave教程(吴恩达机器学习)_第36张图片

举一个数据向量化的例子

对于图上面的运算,可以抽象为两个向量

如果不用矩阵,直接运算的话,程序如下图左所示。用矩阵则如图右所示,更简单。

Octave教程(吴恩达机器学习)_第37张图片

以上图中的运算为例子,如何快速的同步运算thelta,如何向量化,加速运算

Octave教程(吴恩达机器学习)_第38张图片 仔细体会吧!

你可能感兴趣的:(Octave)