机器学习(4):吴恩达笔记

Octave语言前言

  • 在硅谷的大规模机器学习中,人们一般先用Octave实现算法的基本想法,然后用其他语言(java、C++)改写。这是因为python、numpy、r语言等机器学习语言相对于Octave、matlab更繁琐,先使用octave能够提高效率

Octave命令

https://blog.csdn.net/u011415481/article/details/49969447
https://blog.csdn.net/u011415481/article/details/49969447

数学运算命令

机器学习(4):吴恩达笔记_第1张图片

逻辑运算命令

机器学习(4):吴恩达笔记_第2张图片

  • 不等于符号为~=,不是!=
  • xor表示异或运算
变量声明命令

机器学习(4):吴恩达笔记_第3张图片

  • 如果我们希望分配变量,但是不希望在屏幕上显示结果,可以在声明后加分号,抑制打印输出
  • disp函数:可以直接将要显示的字符放入括号中
  • sprintf函数:其表达格式为:sprint(‘%d’,a);其中%d为数字,%s为字符串
  • 但是我们发现,sprintf表达会将字符加上单引号,而用disp表达不会有单引号。disp(sprintf('%s',name))联合disp和sprintf函数,可以避免显示字符串时出现单引号
向量矩阵命令

机器学习(4):吴恩达笔记_第4张图片

  • 声明矩阵时,分号表示矩阵换行
  • 声明向量,用空格 隔开是行向量,用分号隔开是列向量
  • ones是生成各元素不为0且相等矩阵的快捷方式, zeros是各元素为0的矩阵,eyes构建单位矩阵
  • rand生成数值介于0~1之间的随机数;randn高斯随机变量,产生标准正态分布的随机数
  • hist绘制直方图命令。将元素平均分到几个等间隔的容器中(默认为10个),并且返回每个容器的元素个数
如何移动、加载、操作数据

机器学习(4):吴恩达笔记_第5张图片

  • size返回矩阵的行数和列数,可以都返回,也可以选择返回某一个
  • length返回向量的维度,若为矩阵,则返回矩阵的最大维度。我们一般不将其用于矩阵

机器学习(4):吴恩达笔记_第6张图片

  • Octave初始时有一个默认路径,pwd查看;cd ‘’转到其他目录;ls是linux中的命令,查看当下目录的文件
  • who查看当前工作空间的所有变量,whos则是详细查看,可以看到数据维度、占用的内存空间、数据类型等
  • clear用来清除当前工作空间存储的所有变量,但是若我们先把变量v保存在文件中,在load hello.mat后可以直接读取v变量(v变量已经存在了hello.mat文件中)
  • save命令把数据按照二进制形式压缩存储,而且文件越大,压缩的幅度越大。我们也可以通过把数据用acsii存成文本文档,把数据存成一个人能看懂的形式
数据计算命令
  • .*将两个矩阵中相同位置元素相乘 ;./将矩阵中相同位置元素相除
  • log是求e的对数,exp是求e的指数,abs求绝对值
  • -V是每个元素去相反数,V+1是每个元素都+1
  • max(A) 表示求出A中的最大值,但是需要注意,如果A是矩阵的话,是对每一列求出最大值,如果A是向量,则是直接求出最大值

机器学习(4):吴恩达笔记_第7张图片

机器学习(4):吴恩达笔记_第8张图片

向量化思想的重要意义

  • 无论octave、matlab还是python,都自带各种线性代数库。这些库经过了高度优化,容易阅读和获取。如果我们在实现机器学习算法时,能好好利用这些库,而不是自己重构函数,不仅能提高工作效率,而且能加快算法运行速度,用更少的代码实现更多的功能
  • 下图是两种写法,显然后者简单,这充分表明向量化实现简单有效,因此向量化思想是重要的

机器学习(4):吴恩达笔记_第9张图片

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