吴恩达机器学习学习笔记二:Octave编程基础、数据可视化、循环语句、函数定义与调用、定义一个计算代价函数

一、Octave编程基础操作

基础的Octave操作

1、加法,正常的:直接输入5+6 回车
在这里插入图片描述
在这里插入图片描述
2、等、不等(==,!或者~都可以)
在这里插入图片描述
3、或与非(||、&&、!或者~)
在这里插入图片描述

(使用 PS1(’>> '); 可以改变输入输出框的样式)
(使用%书写注释)

4、声明变量
(末尾不加分号则会在声明后进行输出,加上分号后不会进行输出)
在这里插入图片描述
声明之后,输入变量名 回车 即可查看该变量,也可以以使用disp(变量)进行查看,也可以使用disp(printf())、disp(sprintf())(后面写法与C语言相同,使用%与’’)。

format long 回车 加变量名 回车 或者 format short 回车 加变量名 回车,可以分别打印多的、少的小数点后位数。

5、向量与矩阵

矩阵:
吴恩达机器学习学习笔记二:Octave编程基础、数据可视化、循环语句、函数定义与调用、定义一个计算代价函数_第1张图片
用分号隔开代表一行结束(换行到下一行)
这么写也可以
吴恩达机器学习学习笔记二:Octave编程基础、数据可视化、循环语句、函数定义与调用、定义一个计算代价函数_第2张图片
向量:
吴恩达机器学习学习笔记二:Octave编程基础、数据可视化、循环语句、函数定义与调用、定义一个计算代价函数_第3张图片
特殊用法:V=1:1:5
代表从1开始,步长为1,到5结束的行向量
吴恩达机器学习学习笔记二:Octave编程基础、数据可视化、循环语句、函数定义与调用、定义一个计算代价函数_第4张图片
特殊用法:ones(m,n)、zeros(m,n)、rand(m,n)
生成m行n列的单位矩阵、零矩阵、随机数矩阵(介于0-1)
吴恩达机器学习学习笔记二:Octave编程基础、数据可视化、循环语句、函数定义与调用、定义一个计算代价函数_第5张图片
特殊用法:eye(m):生成m阶的单位矩阵
吴恩达机器学习学习笔记二:Octave编程基础、数据可视化、循环语句、函数定义与调用、定义一个计算代价函数_第6张图片
特殊用法:size(m):返回矩阵的大小(行 列)
吴恩达机器学习学习笔记二:Octave编程基础、数据可视化、循环语句、函数定义与调用、定义一个计算代价函数_第7张图片

注意:size(A)本质上返回的是一个一行两列的矩阵,可以将它赋值给变量!

size(A,1),会返回第一维度的大小(即行数)

特殊用法:length(m),返回向量(矩阵)中最大维度的大小
在这里插入图片描述
(一般我们是对向量使用该指令)

6、绘制直方图
hist(变量名,数量),数量用于限制有多少个竖条

7、帮助指令
help + 操作名
例:help eye
吴恩达机器学习学习笔记二:Octave编程基础、数据可视化、循环语句、函数定义与调用、定义一个计算代价函数_第8张图片

Octave操作进阶(数据移动)

1、如何加载系统中的数据和查找数据

当我们打开Octave时,我们已经处在一个默认的路径中,使用pwd查看在这里插入图片描述
cd ‘C:\Users\ang\Desktop’,表示更改路径为xxx
使用ls,列出当前路径中的文件吴恩达机器学习学习笔记二:Octave编程基础、数据可视化、循环语句、函数定义与调用、定义一个计算代价函数_第9张图片

如何导入数据?

load data.txt 或者 load(‘data.txt’)
吴恩达机器学习学习笔记二:Octave编程基础、数据可视化、循环语句、函数定义与调用、定义一个计算代价函数_第10张图片

(who指令,可以显示当前Octave在内存中储存的所有变量)

然后使用 data (即变量名 加 回车即可查看该变量)
吴恩达机器学习学习笔记二:Octave编程基础、数据可视化、循环语句、函数定义与调用、定义一个计算代价函数_第11张图片

同样也可以使用size(data)
吴恩达机器学习学习笔记二:Octave编程基础、数据可视化、循环语句、函数定义与调用、定义一个计算代价函数_第12张图片
(六行 两列)

(whos,能告诉更详细的所有变量信息)
吴恩达机器学习学习笔记二:Octave编程基础、数据可视化、循环语句、函数定义与调用、定义一个计算代价函数_第13张图片
删除变量:clear 变量名
clear all(或clear) 删除所有变量
clc 清屏(但不清除变量)

如何存储数据?

v=data(1:5),将data的前五个数据传给v
吴恩达机器学习学习笔记二:Octave编程基础、数据可视化、循环语句、函数定义与调用、定义一个计算代价函数_第14张图片
save 文件名.文件后缀 需要被存储的变量名 (将某个变量存储到硬盘)
在这里插入图片描述
(将变量v存储到hello.txt文件中)
在这里插入图片描述
索引
A(3,2),返回第三行第二列的元素
A(2,:),返回第二行的所有元素
A(:,3),返回第三列的所有元素

吴恩达机器学习学习笔记二:Octave编程基础、数据可视化、循环语句、函数定义与调用、定义一个计算代价函数_第15张图片
A(:,2)=[10; 11; 12]
代表将A的第二列的值替换为,10,11,12

A=[A,[100;101;102]]
代表在A右边再增加一列,100,101,102
吴恩达机器学习学习笔记二:Octave编程基础、数据可视化、循环语句、函数定义与调用、定义一个计算代价函数_第16张图片

A( : )
代表将A的所有元素放到一列上
吴恩达机器学习学习笔记二:Octave编程基础、数据可视化、循环语句、函数定义与调用、定义一个计算代价函数_第17张图片
分块矩阵
[A,B] 和 [A B]一样
吴恩达机器学习学习笔记二:Octave编程基础、数据可视化、循环语句、函数定义与调用、定义一个计算代价函数_第18张图片

2、对数据进行更复杂的操作

吴恩达机器学习学习笔记二:Octave编程基础、数据可视化、循环语句、函数定义与调用、定义一个计算代价函数_第19张图片

A*B代表矩阵乘法,A.*B代表A中的元素与B中的元素对应相乘(不再是矩阵乘法!)
通常 点. 表示元素的运算
A.^2 代表将A中每个元素求平方
1./A 代表将A中每个元素取倒
log(A) 代表将A中每个元素求对数
exp(A) 代表将A以V中元素为指数的幂运算
abs(A) 代表求A的绝对值
-A 代表取反=-1 * A

如何将矩阵中每个元素加1?

->A+ones(length(A),1)
或直接:A+1

其它运算

转置(A’)

吴恩达机器学习学习笔记二:Octave编程基础、数据可视化、循环语句、函数定义与调用、定义一个计算代价函数_第20张图片

寻找最大值及其索引([val,ind] = max(a))

吴恩达机器学习学习笔记二:Octave编程基础、数据可视化、循环语句、函数定义与调用、定义一个计算代价函数_第21张图片
val代表值,ind代表它在向量中的索引(第几个,从1开始),ind可以省略,只使用max求其最大值。

(如果对矩阵使用max,它会返回每一列的最大值)

比较大小

a < 3,将a中每个元素与3相比,大为1,小为0 ,并返回一个同等大小的矩阵(向量)。
吴恩达机器学习学习笔记二:Octave编程基础、数据可视化、循环语句、函数定义与调用、定义一个计算代价函数_第22张图片
扩展:find(A<3),这会找出小于3的元素,返回其索引。
吴恩达机器学习学习笔记二:Octave编程基础、数据可视化、循环语句、函数定义与调用、定义一个计算代价函数_第23张图片

幻方

A=magic(3) 生成一个每条对角线,每列每行加起来都是同一个数的三阶矩阵(在机器学习中用处不大)

求和

sum(a),将a中所有元素求和。
(prod(a),求a中所有元素的乘积)

吴恩达机器学习学习笔记二:Octave编程基础、数据可视化、循环语句、函数定义与调用、定义一个计算代价函数_第24张图片
floor(a),对a向下取整(往小的取:0.5->0),ceil(a),对a向上取整。

max(A,[],1):返回每一列的最大值(输出一行)
max(A,[].2):返回每一行的最大值(输出一列)

默认的MAX是对每列求最值!

如果想直到矩阵的最大值,max(max(A))即可实现。
(也可以将A转换成一个向量:A( : )然后使用max(A))

sum(A,1):对每一列求和(输出一行)
sum(A,2):对每一行求和(输出一列)

一般来说,函数中使用1,代表对列做操作,使用2,代表对行做操作)

如何求对角线的和?

用A.*eye(9),即只要对角线上的元素,主要这里必须用 . * 普通的 * 是矩阵相乘,任何矩阵乘单位矩阵不改变该矩阵,所以无意义。吴恩达机器学习学习笔记二:Octave编程基础、数据可视化、循环语句、函数定义与调用、定义一个计算代价函数_第25张图片
再用sum(A. * eye(9))即可得到对角线之和!

求逆

pinv(A),求伪逆矩阵,可以直接看成对A求逆。
吴恩达机器学习学习笔记二:Octave编程基础、数据可视化、循环语句、函数定义与调用、定义一个计算代价函数_第26张图片

3、数据可视化(Plotting Data)

吴恩达机器学习学习笔记二:Octave编程基础、数据可视化、循环语句、函数定义与调用、定义一个计算代价函数_第27张图片
plot(x,y)(自变量,因变量)

吴恩达机器学习学习笔记二:Octave编程基础、数据可视化、循环语句、函数定义与调用、定义一个计算代价函数_第28张图片

如何同时显示?

plot(t,y1);
hold on;
plot(t,y2);
吴恩达机器学习学习笔记二:Octave编程基础、数据可视化、循环语句、函数定义与调用、定义一个计算代价函数_第29张图片
吴恩达机器学习学习笔记二:Octave编程基础、数据可视化、循环语句、函数定义与调用、定义一个计算代价函数_第30张图片

(还可以使用plot( t,y2,‘r’)给图形上色)

吴恩达机器学习学习笔记二:Octave编程基础、数据可视化、循环语句、函数定义与调用、定义一个计算代价函数_第31张图片
(给图像加上标签)
在这里插入图片描述
吴恩达机器学习学习笔记二:Octave编程基础、数据可视化、循环语句、函数定义与调用、定义一个计算代价函数_第32张图片
(标记两条函数曲线)
在这里插入图片描述
标记顺序按照你生成的顺序!
吴恩达机器学习学习笔记二:Octave编程基础、数据可视化、循环语句、函数定义与调用、定义一个计算代价函数_第33张图片
(加上图像标题)
在这里插入图片描述
吴恩达机器学习学习笔记二:Octave编程基础、数据可视化、循环语句、函数定义与调用、定义一个计算代价函数_第34张图片
(图像保存)
在这里插入图片描述

吴恩达机器学习学习笔记二:Octave编程基础、数据可视化、循环语句、函数定义与调用、定义一个计算代价函数_第35张图片
(分开绘制)

如果你想让两站图分开进行绘制

在这里插入图片描述
吴恩达机器学习学习笔记二:Octave编程基础、数据可视化、循环语句、函数定义与调用、定义一个计算代价函数_第36张图片
(如何将两个图放在同一个窗口中展示,不是在同一个xy轴下)
使用
在这里插入图片描述
说明:前面的1,2代表将格子分为1X2的大小(两个),最后一个1代表现在在第一个格子中进行作图。
吴恩达机器学习学习笔记二:Octave编程基础、数据可视化、循环语句、函数定义与调用、定义一个计算代价函数_第37张图片
(改变x,y 的刻度值)
在这里插入图片描述
(它是对每个图进行修改,不是所有图)
吴恩达机器学习学习笔记二:Octave编程基础、数据可视化、循环语句、函数定义与调用、定义一个计算代价函数_第38张图片

将x限制在0.5 - 1 ,将y限制在-1 - 1

(imagesc())
在这里插入图片描述
吴恩达机器学习学习笔记二:Octave编程基础、数据可视化、循环语句、函数定义与调用、定义一个计算代价函数_第39张图片
不同的值对应着不同的颜色
在这里插入图片描述

使用colorbar,可以在旁边加上颜色说明

吴恩达机器学习学习笔记二:Octave编程基础、数据可视化、循环语句、函数定义与调用、定义一个计算代价函数_第40张图片

使用逗号,可以一个个执行指令。
a=1,b=2,c=3

二、Octave编程中的For、While、if 和函数

1、for循环

吴恩达机器学习学习笔记二:Octave编程基础、数据可视化、循环语句、函数定义与调用、定义一个计算代价函数_第41张图片

使用for i=1:10(也可以用indices=1:10(索引); 然后 for i=indices)
实现循环,之后再使用,(逗号)表示下一条语句,(看情况,如果每一条语句都不需要输出则在每条语句后面加上分号;),最后以end结尾。

2、while(语句同理)

吴恩达机器学习学习笔记二:Octave编程基础、数据可视化、循环语句、函数定义与调用、定义一个计算代价函数_第42张图片
(用逗号隔开while与之后的语句,结束要用end;)

3、if语句

吴恩达机器学习学习笔记二:Octave编程基础、数据可视化、循环语句、函数定义与调用、定义一个计算代价函数_第43张图片
说明:if语句后的括号可加可不加,但最后要加上end,代表这个部分结束了!

exit,quit函数,退出Octave.

4、如何定义和调用函数?

创建一个以 .m 结尾的文件(文件名即为你的函数名),最好用 写字板 或 其他软件来打开它们,不要用记事本,它们会导致行间距很乱。
吴恩达机器学习学习笔记二:Octave编程基础、数据可视化、循环语句、函数定义与调用、定义一个计算代价函数_第44张图片
也可以直接在Octave里面进行函数编写,会更方便一些。
吴恩达机器学习学习笔记二:Octave编程基础、数据可视化、循环语句、函数定义与调用、定义一个计算代价函数_第45张图片

(函数名和文件名一定要一样!!!!)

在这里插入图片描述
此时,Octave还不知道这个函数文件放在哪里。

(需要我们更改Octave的路径,或者将函数文件放入Octave程序所在的文件夹)

在这里插入图片描述

Octave它允许你一个函数返回多个值!!!
吴恩达机器学习学习笔记二:Octave编程基础、数据可视化、循环语句、函数定义与调用、定义一个计算代价函数_第46张图片

在这里插入图片描述

练习:定义一个函数来计算代价函数J(θ)

吴恩达机器学习学习笔记二:Octave编程基础、数据可视化、循环语句、函数定义与调用、定义一个计算代价函数_第47张图片

costFunctionJ函数代码如下:

function J = costFunctionJ (X,y,theta)
% X is the "Design Matrix" containing our training examples. 
% y is hte class labels. 

m=size(X,1); % number of training examples
predictions=X*theta; % predictions of hypothesis on all m examples
sqrErrors=(predictions-y).^2; % squared errors 

J=1/(2*m)*sum(sqrErrors);

吴恩达机器学习学习笔记二:Octave编程基础、数据可视化、循环语句、函数定义与调用、定义一个计算代价函数_第48张图片
(j=0,因为参数中数据恰好一致,完美拟合)
吴恩达机器学习学习笔记二:Octave编程基础、数据可视化、循环语句、函数定义与调用、定义一个计算代价函数_第49张图片
将theta改为0,0后结果为2.3333,即是(1^2 +2^2 + 3^2)/(2*3)

你可能感兴趣的:(机器学习,机器学习,matlab,python)