1. 程式人生 > >Octave學習之入門第一天

Octave學習之入門第一天

            出於對機器學習的好奇與……好奇,博主大三學期選了《機器學習及模式識別》的課程。在做實驗時要用到Matlab,如此高階大氣上檔次的軟體作為一個苦逼的大學生,博主並沒有任何打算要買。於是選擇了老師推薦使用的Octave。

估計我又要踏上“淺學瞭解”一門語言的不歸路了(可以這樣說:博主兩年淺學了4、5門語言,深感迷茫)。但這次我是認真的,要發展機器學習的道路了(博主好方)。

       首先,從度娘下載了一個Octave,尼瑪啊、竟然是這樣:

       

       哭這科技黑讓我想起cmd管理Mysql還有Node.js的驕(ku)傲(bi)感爆棚的日子,沒錯,它只有這個,度孃的只有這個!偷懶不成,從室友那裡拷了一個官網的4.0版本,自帶GUI.吐舌頭

       OK,安裝成功,

       

       。。。

       此處省略做實驗一那個熬夜做到一點才逐漸熟悉軟體及實驗內容的過程

       。。。

       實驗二做到了神經網路這塊,第一塊給出了一個已經訓練好的3層神經網路,

       

        按照指導書進行了一系列思考推算終於把這個h(x)搞成功,識別數字正確率97.5%。

        然後,突發奇想能不能不識別它的樣本?

        然後:

               ①、我用企鵝截圖並手寫了個6(黑底白字)。

               ②、用Ps簡單處理了一下,調成20*20大小。

               ③、下載了一個Image Package.並安裝。

                       >>pkg install "路徑"

                       >>pkg load image

               ④、讀入影象:I = imread('six.jpg');

               ⑤、轉化double:J = im2double(I);

               ⑥、矩陣轉化為行向量:X = reshap(J,1,400);  %1 表示按列取下1個元素放400個一行

               ⑦、儲存為six.mat:save six.mat X;%X是要存的資料,讀時load('six.mat')會自動結果記為X

               ⑧、讀出來並進行了增加對比度:X = imadjust(X,[0.3 0.5],[]);%這樣標識低於0.3改為0,高於0.5改為1。

               然後用神經網路判斷:

               

               尼瑪啊,這很像5 嗎?

               

               

       經分析,我覺得是:①我的灰度沒有做好。②因為採用截圖並用了ps,導致中間的噪聲對一個20*20的影象影響還是比較大的。③該神經網路訓練時的樣本的標準和我的相差很多。

        通過這個過程,可見影象的預處理是機器學習及識別的重要一環,

        還好我選修了數字影象處理課程微笑

        突然覺得如(ya)釋(li)重(shan)負(da).