斯坦福大学机器学习公开课第五课是“Octave Tutorial”,主要是机器学习公开课的编程作业需要用Octave完成,同样需要用Octave完成作业的还有PGM(概率图模型)课程。和第三课线性代数回顾相似,这里不打算写“Coursera公开课笔记: 斯坦福大学机器学习第五课“Octave 指南(Octave Tutorial)”,而是想换一种思路,将现有的不错的Octave学习资源进行一个整理。
Octave 是一个旨在提供与Matlab语法相容的开放源代码的科学计算与数值分析的工具,同时是GNU旗下的成员之一,官方网站见: GNU Octave , 官方文档比较详细, 见:GNU Octave Doc.
关于Octave的历史,以下是来自维基百科的部分解释:
该软体开始于1988年,其初衷是提供一些化学反应设计课程的辅助工具。
系统性开发则是由John W. Eaton在1992年接手才开始的。第一个alpha测试版是在1993年1月4日放出,1.0稳定版则是在1994年2月17日放出。最新的稳定版3.6.1在2012年2月22日放出。但仍有一些Linux发行版还在默认的软件仓库中使用3.2.4版(2010年1月28日放出)。
其名称与音乐上的八度没有直接关系。该软体乃是以一位早期开发群的成员,同时也以敏于处理数值逼近问题著称的前教授命名。
Octave的绘图功能是基于gnuplot的:
”Octave的绘图功能是利用gnuplot达成的,不像MATLAB 绘图是内建功能,在安装Octave时会一并安装其使用手册与gnuplot“
”由于 Octave 使用了 gnuplot 作为其后端实现,因此使用 gnuplot 可以绘制的所有东西都可以使用 Octave 进行绘制。Octave 的确有一种更丰富的语言来进行计算,它有很多明显的优点,但是仍然有 gnuplot 的一些限制。“
关于Octave的学习资料:
除了Andrew Ng教授的视频外,最喜欢的就是Dr.P.J.G Long 所著的”Introduction to Octave“,不到60页,简洁而又不失重点,是我边学边用Octave的最佳助手;没想到今天在整理资料时,发现浙江大学的莫及同学在11年的1月已经贡献了一份中文翻译版 ,非常不错!
另外一个重要的资料就是Octave自带的帮助文件了,就行Linux下的man一样,对于Octave自带的函数,只需要"help function_name"就可以了,非常方便。例如:
octave:3> help mean
`mean' is a function from the file /usr/share/octave/3.2.4/m/statistics/base/mean.m
-- Function File: mean (X, DIM, OPT)
If X is a vector, compute the mean of the elements of X
mean (x) = SUM_i x(i) / N
If X is a matrix, compute the mean for each column and return them
in a row vector.
With the optional argument OPT, the kind of mean computed can be
selected. The following options are recognized:
`"a"'
Compute the (ordinary) arithmetic mean. This is the default.
`"g"'
Compute the geometric mean.
`"h"'
Compute the harmonic mean.
...
最后就是Octave的安装:
除了Gnu Octave官方网站提供的安装资料外,Coursera斯坦福机器学习公开课上有一个Octave Install的页面,提供了Windows,Mac以及Linux下的三种安装方式,这里建议大家最好在Linux下使用,安装非常方便:
On most modern Linux distributions, you should be able to install Octave using the package manager. For Ubuntu, the following commands should work for most:
sudo apt-get update
sudo apt-get install octave3.2 gnuplot
For Fedora Linux, you can use:
sudo yum install octave
参考资料:
http://www.gnu.org/software/octave/
http://en.wikipedia.org/wiki/GNU_Octave
http://irw.ncut.edu.tw/peterju/octave.html
http://www.cyut.edu.tw/~ckhung/b/ma/linalg.php
http://wiki.ubuntu.org.cn/Octave
http://www-mdp.eng.cam.ac.uk/web/CD/engapps/octave/octavetut.pdf