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

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

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

Lesson 1 Octave/Matlab教程


Part 1 基本操作

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

在Octave中可以进行 基本的算术运算,逻辑运算 ,操作如图所示,简单方便,其中%用于注释的作用。

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

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

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

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

这里讲解了如何给矩阵和向量赋值。

第一个例子是如何构造列向量,即用分号分隔即可。

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

构造横向量,从1到6

构造2X3的全为1的矩阵

ones()函数可以简化构造

ones,zeros构造全为1或者0的矩阵,rand构造全部为随机数的矩阵

randn产生标准正态分布的随机数或矩阵的函数。对于hist,它的全称是histogram,全称直方图,即用直方图的形式统计出各范围内元素的个数,如

用hist显示为

其中hist(w,a),这个数字a表示把直方图分为a份。

eye()函数产生单位矩阵

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


Part 2 对数据进行灵活操作

本节主要讲如何在Octave中对数据进行灵活地处理,即对数据的各种可能的操作方式。

打印一个2x3的矩阵,size计算规模,size值仍这向量,可以再计算规模

size(A,1)计算第一个维度,即2x3中的2,size(A,2)计算第二个维度,即3。

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

pwd显示当前工作目录

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

ls列出当前目录中文件

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

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

如featureX.dat

priceY.dat

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


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

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

clear featuresX则删除某一个变量

priceY(m:n)表示取向量的第m个元素到第n个元素进行赋值

对于矩阵来说,元素编号是从上到下,从左向右依次编号

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

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

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

A(x,y)表示对矩阵进行索引,使用:表示该行或者列的所有元素

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

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

通过上述方式对矩阵增加一列

将所有元素放在一个向量中

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

Part 3 数据运算

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

为方便后续讲解,首先初始化三个矩阵

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

上面给了一个使用find的例子。实际上这些功能都不需要记,有知道时,直接使用help就行。

sum将矩阵所有元素进行相加

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

floor对每个元素向下取整

ceil对每个元素向上取整

rand得到3x3的随机数矩阵

pinv求矩阵的逆

Part 4 数据可视化

本节主要讲解如何对数据可视化

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

hold on将图形保持,使用r追加图像

xlabel对x轴命名

legend对每条线进行说明

title追加名字

print保存图像到本地

将图像关闭

对图像命名,出现两个图

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

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

clf清除现有图像中的内容

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

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

本节讲解编程中的程序结构和函数

这是一个for循环语句的例子

用矩阵,可以直接表示多个值

习惯于循环后打逗号,代码有缩进便于阅读,用end表示代码的结束。

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

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

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

用wordpad自定义一个函数,如图所示

切换到路径下,或者用addpath加入搜索路径,可以使用自定义函数。

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

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

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

有这样一个数据集合,请计算他的成本函数

首先输入数据集合

然后输入自定义函数

直接计算结果


Part 6 向量化

本节讲解如何使用计算机和软件自带的库来加速运算。将大量数据向量化,使用矩阵工具进行运算,可以借助机器大大加快处理速度。


举一个数据向量化的例子

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

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

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

仔细体会吧!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值