筆者最近在coursera這個線上學習平台學習機器學習的課程,在機器學習實作的練習中,有用到一個Octave語言,想跟各位讀者分享,Octave是一種採用進階程式語言,主要用於數值分析的軟體,可用於解決線性和非線性問題,Octave語言其實可以把它當作MATLAB語言的替代版本,很多功能都跟MATLAB類似,但相較於MATLAB主要有幾個優點:
- 免費安裝(https://ftp.gnu.org/gnu/octave/windows/)
- 安裝容量較小(最新版本: 5.2.0, 1.71G),MATLAB全模組約13G
稍微介紹了一下Octave後,來介紹一下Octave的實際操作,當我們透過Octave的網頁下載程式後,安裝完成後,打開後會出現以下的畫面,跟Windows內建的命令視窗類似。
我們可以在上面做一些簡單的四則運算(可以把Octave當成計算機使用)
以及一些邏輯判斷(0代表錯誤; 1代表正確),在Octave中下註解會使用%加上要說明的內容,當程式遇到%開頭的內容則不會執行,在Octave中不等於的符號是” ~= “,而非其他軟體經常會使用的” != “代表
在Octave可以下PS1(‘’)這個指令,這樣之後每一行語法的開頭會以引號內的內容做開頭,因為Octave預設的開頭是octave : x,像是R語言則是以>作為每一行指令的開頭
在Octave上我們要怎麼產生一個新的變數呢,作法很簡單,如果要產生一個變數B,其值為7,當我們不希望在螢幕上顯示結果,可以在B=7後面加上一個分號,就不會列印出值,當要列印出值時,則只需要在程式列打上變數的名稱即可呈現變數的數值
在Octave如果要產生矩陣,可以用以下兩種寫法,都可以得到一個2*3的矩陣,其中程式當中分號的意思是換行的意思
也可以用同樣的方法為向量賦值,建立向量V並給予數值,V是一個行向量,也是一個1*3的矩陣:
列向量的寫法
如果要產生一串連續數值遞增的向量,如以下程式所示,「起始值:遞增量:終點值」,這樣就會產生以下的結果
此外還有一些額外產生矩陣的指令也跟大家分享,ones(4,3)可以生成一個4行3列的元素全為1的矩陣,如果設定 a = 2*ones(4,3),就會得到一個4行3列元素全為2的矩陣,這也代表Octave可以做一些矩陣的運算,Z = ones(1,3),這是產生一個由3個1組成的行向量,也可以設定 Z = zeros(1,3),這會生成一個1行3列的零矩陣,Z = rand(1,3),會得到一個隨機的1行3列的矩陣,如果輸入 Z = rand(3,3),會得到一個3行3列的矩陣,並且所有的元素均為位於0到1之間的隨機值,所以每次執行這個,都可以得到不同的隨機值集合,並且都介於0和1之間。
Octave也有提供一些當指令不會寫的求救功能,如果對於某些指令不熟悉,可以使用help命令(R語言也有類似的功能),例如help eye就會顯示單位矩陣的指令,也可以鍵入help rand,就會顯示有關rand函式的幫助文件,甚至可以使用help help指令,來顯示出help指令的幫助文件。以上只是針對筆者目前在課程中有聽到的內容跟讀者分享,進一步關於Octave在機器學習領域的實作,就等筆者之後課程學到更進一步的內容再跟讀者們分享了。
參考資料:
Coursera的機器學習課程(吳恩達教授)
https://www.coursera.org/learn/machine-learning/home/welcome
留言列表