Machine Learning (Andrew Ng) @ Coursera その3
今回はOctave マンセーうぇえ~いって話。
機械学習やらパターン認識で、Java C++ Python numpy Rとか色々ありましたねぇ。
でもそれらって結構実装に時間食うよね?めんどいよね?PDCA回すの遅れるよね?
シリコンバレーではこういった問題にはとうの昔に気付いておりまして、
すぐにこういった言語で実装し始めるんじゃなくて、
まずはプロトタイピングとしてOctaveが使われておりまっせ。
まずクイックにPDCAを回す競争力の高い企業が集結したシリコンバレーでは、
アイディアの実証がサクッとできてカネがかからんやつがプロトタイピングとして好まれたわけか。
ちなみに、Matlabでもいいんだけどクソたけーよって話もある。
あと、Python numpyでもいいけど、構文ちょっとややこしいやんけ。
とかいう感じで他の言語を軽くディスった上で、今日はOctaveの素晴らしさを布教しようじゃありませんか。
以下、コマンドメモり散らし!
変数の取り扱い
>>1 ~= 2
ans = 1
>>1 && 0
ans = 0
>>1 || 0
ans = 1
>>xor(1,0)
ans = 1
>>1 == 1
ans = 1
>>1 == 1 % this is a comment
ans = 1
>> PS1(">>>") % prompt would be changed to >>>
>>a = 3; % semicolon suppressing input
>>b = "hi";
>>a = pi
a = 3.1416
>>disp(sprintf("2 dicimals: %0.2f", a))
2 dicimals: 3.14
>>
>>format long
>>a
a = 3.14159265358979
行列の基礎的な取り扱い
>>A = [1 2;3 4; 5 6]
A =
1 2
3 4
5 6
>>v = [1 2 3]
v =
1 2 3
>>v'
ans =
1
2
3
>>t = 1:0.1:2
t =
Columns 1 through 3:
1.00000000000000 1.10000000000000 1.20000000000000
Columns 4 through 6:
1.30000000000000 1.40000000000000 1.50000000000000
Columns 7 through 9:
1.60000000000000 1.70000000000000 1.80000000000000
Columns 10 and 11:
1.90000000000000 2.00000000000000
>>v = 1:6
v =
1 2 3 4 5 6
>>ones(2,3)
ans =
1 1 1
1 1 1
>>zeros(1,)
parse error:
syntax error
>>> zeros(1,)
^
>>zeros(1,3)
ans =
0 0 0
>>eye(4)
ans =
Diagonal Matrix
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
>> help eye
乱数
>>rand(1,3) % uniform distribution
ans =
0.740132599360654 0.343361310231155 0.212358308455146
>>randn(3,3) % standard normal distribution
ans =
0.2927837134905641 -0.4591692991645791 1.0210607888876386
1.2940773643349077 1.7832798099665554 0.0756273894367232
0.7627828860428808 -0.7073869504487188 -0.3855058772989866
>> w = -6 + sqrt(10)*(randn(1,1000));
>>hist(w)
>>
ヒストグラムのプロットがこれだけでできるとか幸せか!!
これだけでbin数増やせるとかどんだけ今に生きた我々は幸せか!!
>>hist(w, 50) % add bins
サイズの扱い
>>A
A =
1 2
3 4
5 6
>>size(A)
ans =
3 2
>>sz = size(A)
sz =
3 2
>>size(sz)
ans =
1 2
>>size(A,2)
ans = 2
>>x = [1 2 3 4]
x =
1 2 3 4
>>length(x)
ans = 4
>>length(A) % returns longer dimention
ans = 3
Unixコマンドもサポートしているよという話
>>pwd
ans = C:\Octave\3.2.4_gcc-4.4.0\bin
>>ls
>> load("file.dat")
>>who
Variables in the current scope:
A a ans b sz t v w x
>>whos
Variables in the current scope:
Attr Name Size Bytes Class
==== ==== ==== ===== =====
A 3x2 48 double
a 1x1 8 double
ans 1x29 29 char
b 1x2 2 char
sz 1x2 16 double
t 1x11 24 double
v 1x6 24 double
w 1x1000 8000 double
x 1x4 32 double
Total is 1061 elements using 8183 bytes
>>clear
>>whos
>>x = randn(100,2)
>>whos
Variables in the current scope:
Attr Name Size Bytes Class
==== ==== ==== ===== =====
ans 1x14 14 char
x 100x2 1600 double
Total is 214 elements using 1614 bytes
ファイル読み書き
>>save hello.mat x;
>>clear
>>load hello.mat
>>whos
Variables in the current scope:
Attr Name Size Bytes Class
==== ==== ==== ===== =====
x 100x2 1600 double
Total is 200 elements using 1600 bytes
>>save hello.txt x -ascii % save as text (ASCII)
>>
行列の操作
>>A = [1 2; 3 4; 5 6]
A =
1 2
3 4
5 6
>>A(3,2)
ans = 6
>>A(2,:) % ":" means every element along that row/column
ans =
3 4
>>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]] % append another column vector to right
A =
1 10 100
3 11 101
5 12 102
>>A(:) % put all elements of A into a single vector
ans =
1
3
5
10
11
12
100
101
102
>>A
A =
1 10 100
3 11 101
5 12 102
>>B = [7;8;9]
B =
7
8
9
>>C = [A B]
C =
1 10 100 7
3 11 101 8
5 12 102 9
コメント
コメントを投稿