Octave 循环与向量化

Octave 循环与向量化_第1张图片
初始化v
Octave 循环与向量化_第2张图片
for循环,针对各个赋值
Octave 循环与向量化_第3张图片
两者for循环方式等价

Octave 循环与向量化_第4张图片
while 循环
Octave 循环与向量化_第5张图片
注意每个if while for 都要有对应的end表示结束

虽然没有强制要求,最好还是通过缩进来表达逻辑关系


Octave 循环与向量化_第6张图片
注意elseif中间没有空格

整个if结束了才用end

因为之前是按照上课演示的敲,发现每个条件后面都会跟一个逗号,所以测试一下没有逗号是否可以运行

Octave 循环与向量化_第7张图片
没有逗号也可以运行


Octave 循环与向量化_第8张图片
自定义的函数
Octave 循环与向量化_第9张图片
函数文件得在当前路径下或添加到搜索路径中
Octave 循环与向量化_第10张图片
多个返回值的函数
成功调用
Octave 循环与向量化_第11张图片
对于代价函数的表示
成功计算

向量化(Vectorization):

向量化是指将数据通过矩阵和向量的方式进行计算,使得过程更易于理解也更易于编写

对于很多数据,如果直接计算则需要多个for循环,不仅麻烦还不好理解,以假设函数为例:

Octave 循环与向量化_第12张图片
视频截图

在未向量化之前,我们若想求h(x),代码如上图中一般用过for循环,不易理解且繁琐,然而若通过向量化,直接θ'*X得到假设值的向量矩阵

下求梯度下降法的向量化:

假设特征数为2,假设方程为h(x)

此时要不断循环

Octave 循环与向量化_第13张图片
循环赋值求最小

于是对于θ中的每一项都得写个for循环进行赋值

此时将整个赋值过程,改为:

其中 α 仍为学习速率,是一个实数,而 θ 和 δ 都是一个n+1维的向量,其中 θ为:

θ的内容

根据定义 δ 应为:

改为矩阵表示为:


Octave 循环与向量化_第14张图片
最终的结果大小应为一个3*1的向量

左边的矩阵就是X的矩阵的转置,而右边的矩阵可通过h(x)的向量减去y得到,最终计算的过程应为:


梯度下降法的求值过程

一步可以直接计算,非常方便

你可能感兴趣的:(Octave 循环与向量化)