【原】Andrew Ng斯坦福机器学习(5)——Lecture 5 Octave Tutorial—5.5 控制语句: for, while, if 语句

5.5 控制语句: for, while, if 语句

  参考视频: 5 - 5 - Control Statements_ for, while, if statements (13 min).mkv

1、for 循环 通过 index 访问列向量
 1 >> v = zeros(10,1)
 2 v =
 3    0
 4    0
 5    0
 6    0
 7    0
 8    0
 9    0
10    0
11    0
12    0
13 >> for i = 1 : 10,
14      v(i) = 2 ^ i;
15    end;
16 >> v
17 v =
18       2
19       4
20       8
21      16
22      32
23      64
24     128
25     256
26     512
27    1024
2、for 循环 直接访问列向量元素
 1 >> indices = 1 : 10;
 2 >> indices
 3 indices =
 4     1    2    3    4    5    6    7    8    9   10
 5 >> for i = indices,
 6       disp(i);
 7    end;
 8  1
 9  2
10  3
11  4
12  5
13  6
14  7
15  8
16  9
17  10
3、while 循环访问列向量
 1 >> i = 1;
 2 >> while i <= 5,
 3       v(i) = 100;
 4       i = i + 1;
 5    end;
 6 >> v
 7 v =
 8     100
 9     100
10     100
11     100
12     100
13      64
14     128
15     256
16     512
17    1024
4、while(true) 和 break
 1 >> i = 1 ;
 2 >> while(true),
 3      v(i) = 999;
 4      i = i + 1;
 5      if i == 6,
 6         break;
 7      end;
 8    end;
 9 >>
10 >> v
11 v =
12     999
13     999
14     999
15     999
16     999
17      64
18     128
19     256
20     512
21    1024
5、if else 语句
1 >> v(1) = 2;
2 >> if v(1) == 1,
3       disp(‘The value is one‘);
4    elseif v(1) == 2,
5       disp(‘The value is two‘);
6    else,
7       disp(‘The value is not one or two‘);
8    end;
9 The value is two
6、自定义函数 function

  定义函数 squareThisNumber(x),内容如下: 

1 function y = squareThisNumber(x)
2   y = x^2;
3 endfunction

  将函数保存为squarethisnumber.m,注意此时是小写。

  这时候调用函数 squareThisNumber(2) 提示找不到函数

1 >> squareThisNumber(2);
2 error: ‘squareThisNumber‘ undefined near line 1 column 1
3 >>
4 >> ls
5 [.]                         featuresX.dat               priceY.dat
6 [..]                        hello.dat                   squarethisnumber.m

  将文件命名为函数一致squareThisNumber.m(大小写也一致),这时候调用函数成功

1 >> ls
2 [.]                         featuresX.dat               priceY.dat
3 [..]                        hello.dat                   squareThisNumber.m
4 >> squareThisNumber(2);
5 >> a = squareThisNumber(2);
6 >> a
7 a =  4

  这说明:Octave 是大小写敏感的,文件名必须和函数名大小写一致。

7、多个返回值的函数

  Octave 函数有和其他语言不一样的地方是可以返回多个值。定义方法squareAndCubeThisNumber(x)如下:

1 function [y1, y2] = squareAndCubeThisNumber(x),
2   y1 = x ^ 2;
3   y2 = x ^ 3;
4 endfunction

  调用:

1 >> a = squareAndCubeThisNumber(2)  % 接受了第一个返回值
2 a =  4
3 >> [a, b] = squareAndCubeThisNumber(2)  % 接受两个返回值
4 a =  4
5 b =  8
8、更复杂的函数

  保存下面的函数到costFunctionJ.m中

 1 function J = costFunctionJ(X, y, theta),
 2   % X is the "design matrix" containing our training examples
 3   % y is the class labels
 4
 5   m = size(X, 1);   % number of training examples, size of rows
 6   predictions = X * theta; % predictions of hapothesis on all m examples
 7   sqrErrors = (predictions - y) .^ 2; % squared errors .^ 指的是对数据中每个元素平方
 8
 9   J = 1 / (2 * m) * sum(sqrErrors);
10
11 endfunction

  针对上边的数据集初始化矩阵。调用函数,计算代价函数的值。

1 >> X = [1 1; 1 2 ; 1 3];
2 >> y = [1;2;3];
3 >> theta = [0;1];      % Θ为0,1  h(x)=x  此时完全拟合数据,代价函数的值为0
4 >> j = costFunctionJ(X,y,theta)
5 j = 0
1 >> theta = [0;0];      % Θ 为0,0 h(x)=0 此时不能拟合数据
2 >> j = costFunctionJ(X,y,theta)
3 j =  2.3333
4
5 >> (1^2 + 2^2 + 3^2) / (2*3)  % 代价函数的值
6 ans =  2.3333

原文地址:https://www.cnblogs.com/maxiaodoubao/p/9873191.html

时间: 2024-10-10 03:19:26

【原】Andrew Ng斯坦福机器学习(5)——Lecture 5 Octave Tutorial—5.5 控制语句: for, while, if 语句的相关文章

【原】Andrew Ng斯坦福机器学习(6)——Lecture 6_Logistic Regression

Lecture6 Logistic Regression 逻辑回归 6.1 分类问题 Classification6.2 假设表示 Hypothesis Representation6.3 决策边界 Decision Boundary6.4 代价函数 Cost Function6.5 简化的代价函数和梯度下降 Simplified Cost Function and Gradient Descent6.6 高级优化 Advanced Optimization6.7 多类别分类:一对多  Mult

【原】Andrew Ng斯坦福机器学习Coursera 选择填空

Week 2 Gradient Descent for Multiple Variables [1]多变量线性模型  代价函数 Answer:AB [2]Feature Scaling 特征缩放 Answer:D [] Answer: [] Answer: [] Answer: [] Answer: [] Answer: [] Answer: [] Answer: [] Answer: [] Answer: [] Answer: [] Answer: [] Answer: [] Answer:

Andrew Ng的机器学习课程1(from coursera, 2014)

第一周:简介机器学习,有监督学习,无监督学习. 1-1 1-2 1-3 1-4 第二周: 2-1 2-2:介绍cost function定义. 2-3:在回归函数是一个经过原点的直线的情况下,演绎cost function最小化的计算. 2-4:在回归函数是一条直线时,通过等高线演绎cost function最小化的计算. 2-5:简介梯度下降算法,但没有介绍偏微分部分. 2-6:以目标函数是一个经过原点的函数为例演绎梯度下降算法. 2-7:结合线性回归假设和梯度下降算法,得到第一个机器学习算法

斯坦福机器学习

---title: 斯坦福机器学习-线性回归photos: - http://7xrw7v.com1.z0.glb.clouddn.com/bb2cf32cadac65e934ab587c5f456329.pngtags: - 斯坦福机器学习date: 2016-09-05 16:34:34--- 摘要: - 单变量线性回归- 代价函数- 梯 度 下 降- 学习率- 多 变 量 线 性 回 归- 特 征 缩 放- 多 项 式 回 归- 正 规 方 程 <!--more--> 不积跬步,无以至千

斯坦福机器学习实现与分析之一(前言)

自去年底开始学习Andrew Ng的机器学习公开课,欲依其课件试着实现部分算法以加深理解,然在此过程中遇到部分问题,或为程序实现,或为算法理解.故而准备将此课程整理,并记录自己的理解,或对或错可共同讨论. 此课程主要包括三部分:监督学习算法.无监督学习算法以及学习理论.监督学习部分讲了回归.生成学习算法与SVM:无监督学习则讲了K-means,MOG,EM,PCA,ICA以及增强学习等算法:学习理论则是讲解算法的评估,模型与特征的选择等方法.此处课程整理的顺序将与原讲义相同. 另外,考虑此处主要

Logistic回归Cost函数和J(θ)的推导----Andrew Ng【machine learning】公开课

最近翻Peter Harrington的<机器学习实战>,看到Logistic回归那一章有点小的疑问. 作者在简单介绍Logistic回归的原理后,立即给出了梯度上升算法的code:从算法到代码跳跃的幅度有点大,作者本人也说了,这里略去了一个简单的数学推导. 那么其实这个过程在Andrew Ng的机器学习公开课里也有讲到.现在回忆起来,大二看Andrew的视频的时候心里是有这么一个疙瘩(Andrew也是跳过了一步推导) 那么这里就来讲一下作者略去了怎样的数学推导,以及,怎么推导. 在此之前,先

斯坦福大学Andrew Ng教授主讲的《机器学习》公开课观后感

课程设置和内容 视频课程分为20集,每集72-85分钟.实体课程大概一周2次,中间还穿插助教上的习题课,大概一个学期的课程. 内容涉及四大部分,分别是:监督学习(2-8集).学习理论(9集-11集).无监督学习(12-15集).强化学习(16-20集).监督学习和无监督学习,基本上是机器学习的二分法:强化学习位于两者之间:而学习理论则从总体上介绍了如何选择.使用机器学习来解决实际问题,以及调试(比如:误差分析.销蚀分析).调优(比如:模型选择.特征选择)的各种方法和要注意的事项(比如,避免过早优

斯坦福大学Andrew Ng - 机器学习笔记(1) -- 单变量&amp;多变量线性回归

大概用了一个月,Andrew Ng老师的机器学习视频断断续续看完了,以下是个人学习笔记,入门级别,权当总结.笔记难免有遗漏和误解,欢迎讨论. 鸣谢:中国海洋大学黄海广博士提供课程视频和个人笔记,在此深表感谢!

斯坦福大学Andrew Ng - 机器学习笔记(2) -- 逻辑回归 &amp; 正则化

大概用了一个月,Andrew Ng老师的机器学习视频断断续续看完了,以下是个人学习笔记,入门级别,权当总结.笔记难免有遗漏和误解,欢迎讨论. 鸣谢:中国海洋大学黄海广博士提供课程视频和个人笔记,在此深表感谢!