LoginSignup
14

More than 5 years have passed since last update.

機械学習を1ヵ月で実践レベルにする #3 (Octave 編)

Last updated at Posted at 2016-12-16

3日目です

今日の目標は、Coursera でStanford が提供しているMachine Learning の講座のWEEK 3 をやるということでしたが、実はまだWEEK 2 を終えることができておらず、引き続きWEEK 2 の残りをやりました。

過去記事一覧

Octave チュートリアル

今日は、WEEK 2 の残りでやったOctave チュートリアルが実りのあるものだったので、今後のOctave リファレンスとしても使えるように、ここにそれをまとめようと思います。

扱える型

Octave はscalar, vector, matrix を扱えますが、全部行列だと思ってしまったほうが理解しやすいかと思います。scalar は 1x1 の行列、vector は nx1 の行列だと考えれば全て行列であると考えられます。

起動

% octave-cli

この辺のディレクトリ操作はシェルのように使えます。

>> ls
>> pwd
>> cd hoge

データの初期化、代入

>> a = 1
a =  1
>> a = [1 2]
a =

   1   2

>> a = [1;2;3]
a =

   1
   2
   3

>> a = [1 2; 3 4]
a =

   1   2
   3   4

>> a = pi;
>> a
a =  3.1416

>> v = 1:0.3:2 % 初期値:ステップ数:終値
v =

    1.0000    1.3000    1.6000    1.9000

>> v = 1:6 % 初期値:(ステップ数1を省略):終値
v =

   1   2   3   4   5   6

>> ones(2,3)
ans =

   1   1   1
   1   1   1

>> zeros(3,2)
ans =

   0   0
   0   0
   0   0

>> 2*ones(2,3)
ans =

   2   2   2
   2   2   2

>> w = rand(2,3)
w =

   0.958006   0.225452   0.932911
   0.039494   0.743074   0.607472

>>  m = magic(3) % nxn の魔法陣を作る
m =

   8   1   6
   3   5   7
   4   9   2

>> eye(5)
ans =

Diagonal Matrix

   1   0   0   0   0
   0   1   0   0   0
   0   0   1   0   0
   0   0   0   1   0
   0   0   0   0   1

データのslice など(豊富なので重要)

>> A = [1 2; 3 4; 5 6]
A =

   1   2
   3   4
   5   6

>> size(A)
ans =

   3   2

>> size(A, 1)
ans =  3
>> size(A, 2)
ans =  2
>> v = [1 2 3 4]
v =

   1   2   3   4

>> length(v)
ans =  4
>> A(1,:)
ans =

   1   2

>> A(2,:)
ans =

   3   4

>> A(:,1)
ans =

   1
   3
   5

>> A(:,2)
ans =

   2
   4
   6

>> A(:)
ans =

   1
   3
   5
   2
   4
   6

>> A(1:1)
ans =  1
>> A(1:2)
ans =

   1   3

>> A(1:3)
ans =

   1   3   5

>> A([1,3], :)
ans =

   1   2
   5   6

>> A(:,2) = [10;11;12]
A =

    1   10
    3   11
    5   12

>> A = [A, [100; 101; 102]]
A =

     1    10   100
     3    11   101
     5    12   102

>> A' % 転置
ans =

     1     3     5
    10    11    12
   100   101   102

便利なもの

>> who % 定義されている変数の一覧
Variables in the current scope:

A    a    ans  m    v    w

>> whos % 定義されている変数の一覧とそのサイズなど
Variables in the current scope:

   Attr Name        Size                     Bytes  Class
   ==== ====        ====                     =====  ===== 
        A           3x2                         48  double
        a           1x1                          8  double
        ans         3x1                         24  double
        m           3x3                         72  double
        v           1x4                         32  double
        w           2x3                         48  double

Total is 29 elements using 232 bytes

WEEK 2 修了テスト

WEEK 2 には修了テストがありました。各ビデオ講座は有志の方による日本語字幕がついているのが非常に助かるのですが、こういったテストなどは英語のままです。これも案の定、ちゃんと提出しないとこの週を修了したことにならないので頑張らないといけません。

内容は、まずこのテスト提出システムの使い方とそのチュートリアル。それからWEEK 1 で主に学んだ、単一変数の線形回帰を、Octave で実装する課題。最後に、WEEK 2 で学んだ多変量の線形回帰をOctave で実装する課題。

提出するとその場で正解が分かる仕組みでした。自分が理解できてるってことを客観的に再確認できるので、安心して修了して次に進むことが出来ました。A4にして15枚くらいのテスト課題で、持ち時間は3時間。結構本気のやつでしたから、これができるようになっているのは素直に嬉しくて、翌週へのモチベーションにつながります。

最後に目標の下方修正

  • 12/17(土) WEEK 3(6h3m の前半)
  • 12/18(日) WEEK 3(6h3m の後半)
  • 12/19(月) WEEK 1 〜 WEEK 3 のReview とやり残し, WEEK 4 (4h42m)
  • 12/20(火) WEEK 5 (5h8m)
  • 12/21(水) WEEK 6 (5h46m)
  • 12/22(木) WEEK 7 (4h57m)
  • 12/23(金) 予備日
  • 12/26(月) WEEK 4 〜 WEEK 7 のReview とやり残し
  • 12/27(火) WEEK 8 (5h26m)
  • 12/28(水) WEEK 9 (6h9m)
  • 12/29(木) WEEK 10, WEEK 11 (2h39m), WEEK 8 〜 WEEK 11 のReview とやり残し

土日も少しずつやることにして挽回を図ることにしました。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14