吴恩达机器学习笔记——Day2——Octave使用基础

观看的视频来自网易云课堂——《吴恩达机器学习》

http://吴恩达机器学习 - 网易云课堂 https://study.163.com/course/courseMain.htm?courseId=1210076550&_trace_c_p_k2_=8b38dadea2254aabb5eced2e8defd456

构建大规模机器学习项目,大多使用Octave来构造算法原型以便快速实现算法 

进行大规模的部署可以用C++或Java重现算法

Octave可以通过几句简单的代码快速组合复杂矩阵

Octave命令

在Octave官网https://www.so.com/link?m=b93e7AfVXt2Svsdh0DbBbcGZjoA4glXlq%2BG%2FqB6WAexJdW7WZNSu4j39lSLeIfgM8ESMxgqNRUDL2BtlDVh6jdgDr6ILRj6MDnPuV%2Fe8KNiMC6N9Ly7faXQ4fP14OG94N点击下载

 随后打开Octave(CLI)也就是命令行格式,其支持各种基础数学运算1+1、逻辑运算&&、||之类,若输入判别方程,0代表False,1代表True。

大体算法类似于matlab

输出可以直接打出变量名,如:a 回车将直接打印出变量值,或用 disp(a),若需要打印字符串则需要disp(sprintf('字符串'))。

format long :会让字符串显示默认的位数

format short :输出打印少量的小数点后的位数

a = 起始值:步长:终止值

sqrt(n):n维方阵

eye(n):n维单位矩阵

ones(行,列):全1矩阵

zeros(行,列):全0矩阵

magic(n):输出任意行列,其每行、每列、每条对角线中的元素加起来都等于相同的值 

rand(行,列):随机矩阵(均为介于0和1之间的随机值)

randn(行,列):符合正态分布的随机矩阵(符合高斯分布,均值为0,标准差或方差为1)

hist(矩阵名):可以直接将该矩阵绘制出一幅直方图

size(矩阵名):返回矩阵的行数和列数,生成的是1x2的矩阵

length(矩阵):得到矩阵的长度

矩阵名 = [1 2 3 ;4 5 6]:定义矩阵时,同一行内元素用空格分隔,换行使用; 切换

读取和存储数据

pwd:查看路径

cd ' 路径 ':更改路径

ls:列出桌面路径

load 文件名.dat :载入数据

who:显示Octave中存储的所有变量

whos:显示Octave中存储的所有变量、维度、占用字节数和数据类型

clear 变量名:删除变量

save  文件名.mat  变量名:将变量保存到文件中

save  文件名.txt  变量名 -ascii:将变量保存到文本文档中

操作数据

矩阵(行,列):输出该行该列指定元素

矩阵(行,:):输出该行全部元素

矩阵(:,列):输出该列全部元素

矩阵([行   行],:):输出行和行中的全部元素,其余行不算

矩阵(行,列)= [新的矩阵]:更换矩阵内的元素

矩阵(矩阵   [新矩阵]):增加列向量

矩阵(矩阵 ;[新矩阵]):增加行向量

矩阵(  :):将矩阵内的元素全部输出为一列向量

计算

A  *  B:两个矩阵相乘

加建乘除都同上

【‘  .  ’用于元素的运算】

A  .* B:将A中的每一个元素与B中对应位置的元素相乘

A .^ 2:将A中的每一个元素平方

1 ./ A :将A中的每一个元素除以1

log(矩阵):对矩阵求对数运算

exp(矩阵):以e为底矩阵内元素为指数的幂运算

abs(矩阵):对矩阵求绝对值

- 矩阵:对矩阵取相反数

对矩阵内所有元素相加可以设置相同维度的全1矩阵进行相加或直接  矩阵 + 1

矩阵 ':矩阵转置

[ 命名的变量名 ,ind ] = max(矩阵):可以得到最大值及其索引

矩阵也同样适用于逻辑计算,若真输出1,假则输出0

find(矩阵逻辑运算):输出满足逻辑运算元素的索引

prod(矩阵):可以得到所有元素的乘积

floor(矩阵):使矩阵内的元素向下取整

ceil(矩阵):是矩阵内的元素向上取整

max(矩阵 , 矩阵):会生成一个由两个矩阵内较大的数形成的新的矩阵

max(矩阵):可以得到矩阵每一列的最大值

max(矩阵,[ ] .1 ):生成每一列最大值组成的行向量

max(矩阵,[ ] .2 ):生成每一行最大值组成的列向量

max(max(矩阵)):生成整个矩阵的最大值

sum(矩阵):可以得到所有元素的和

sum(矩阵,1):可以得到每一列的总和

sum(矩阵,2):可以得到每一行的总和

fipud(矩阵):使矩阵垂直翻转、上下颠倒

pinv(矩阵):对于矩阵求逆矩阵

数据绘制【同matlab】

图像绘制会便于检查数据的走向是否正确,便于改进自己的代码

首先制作 x 行向量,与 y 的函数方程

plot(x,y):绘制图像

hold on:保持图像,让新图像在旧图像的基础上绘图

xlabel('    '):添加横坐标标签

ylabel('    '):添加纵坐标标签

legend('  ' , '  ' , ... ,' '):添加图例,对每一个绘制图像进行标注

title('   '):添加标题

print  -dpng  '文件名.png' :保存为png文件

close:关闭Octave中显示的图像

figure(1);plot(...):打开一个窗口绘制一张图片

figure(2);plot(...):打开第二个窗口绘制

subplot(m,n,a):将图像分割成m*n的网格,其使用第a个格子

axis([x1   x2   y1  y2 ]):改变 x 和 y 的范围

clf:可以清除一幅图像

imagesc(矩阵):绘制彩色格图,不停的彩色格子代表着矩阵中不同的值

colorbar:增加颜色条,显示对应元素对应的不同的值

colormap gray:控制图像颜色为灰色系

控制语句

indices :代表索引

disp(变量):打印变量

for i=... ,

循环体

end

while  判断式 ,

循环体;

end;

if   判别式 ,

表达式 / break;

end;

if   判别式,

表达式1;

elseif 判别式,

表达式2;

else,

表达式3;

end;

定义和调用函数

使用Octave环境定义函数,需提前创建一个文件,用函数名命名,以  .m  为结尾。 .m文件可以用记事板创建,再用写字板打开进行编辑,因为记事板会使代码间距变得很乱。

.m 文件内容:

function y = 函数名 ( x ) :返回一个值将其存放到变量y中,且有一个自变量x

y = f(x); :定义的函数主体

调用文件

首先pwd查看当前路径,可以将编辑好的.m文件放到该路径下,或者 cd 更改至文件所在路径,甚至还可以addpath(‘路径’),增加一条路径。只要在Octave中的路径内,输入函数名,Octave就可以自己找到该函数进行运算。随后直接调用函数即可。此外,Octave还支持一个自变量x返回多个值y。

绘制图像

针对课时40的代价函数计算

%计算代价函数J的.m文件

function J = costFunction(x,y,theta)   %定义一个函数,x:训练样本x值、y:y轴对应值、w为自变量,返回值为J
m = size(X,1);   %将x的行数当作样本数量
predictions = x *我;    %预测值=wx+b,b=0

sqrErrors = (predictions - y).^2;   %计算平均平方误差 = (预测值 - 目标值)^2

J = 1/(2m) * sum(sqrErrors);   %计算代价函数

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>