Stanford大CourseraのMachine Learningを受講することにしました。コース全11週中、第2週目以降、行列による機械学習の計算式を、Octaveという言語で実際に計算して行くことになります。Octaveはアルゴリズムの試作を迅速に行うのに適しており、結果的に開発時間の短縮につながるといわれています。Octaveの書式について、メモしておきます。
行列を扱う
r = [1 2 3 4] または [1, 2, 3, 4]
#行ベクトル
c = [1; 2; 3; 4]
#列ベクトル
m = {1 2; 3 4]
#2*2行列
A * B
#通常の行列の積。
A .* B
#通常の行列の積ではなく、各行列における同位置の数値の積を返す。
A .^2
= A .* A
A'
#行列変換
max(A)
#行列Aの最大値を含む行
magic(3)
#1-9の要素からなる3*3の行列
sum(a)
#1行行列aのgroup合計
prod(a)
#最大値
floor(a)
#小数切り捨て
ceil(a)
#小数切り上げ
rand(3)
#0.0-1.0の一様乱数からなる3*3の行列
randn(3)
#正規分布に従った乱数からなる3*3の行列
max(A, [], 1)
#各列の最大値からなる1行行列 =max(A)
max(A, [], 2)
#各行の最大値からなる1列行列
A(:)
#各列を縦に並べた1列行列
sum(A,1)
#各列の合計からなる1行行列
sum(A,2)
#各行の合計からなる1列行列
eye(9)
#9*9の単位行列(左上から右下に向け斜めに1が並ぶ)
flipud(A)
#列を右から並べ替える
pinv(A)
#行列Aの要素を正規化
プロットする
plot(t,y);
#t,yの関係をplotする
plot(t,y1);
hold on;
plot(t,y2,'r')
#y1のグラフにy2のグラフを赤色で重ねる
xlabel('time')
#x軸のラベルをtimeにする
legend('sin','cos')
#グラフ凡例
title('my plot')
#グラフのタイトル
print -dpng 'myPlot.png'
#cdにグラフ画像をファイルにする
figure(1);plot(t,y1);
#y1のグラフをfig1とする
subplot(1,2,1);
plot(t,y1);
subplot(1,2,2);
plot(t,y2)
#グラフを横に並べて表示、それぞれのグラフを指定
axis([0.5 1 -1 1])
#x, yの範囲を指定
imagesc(A)
#行列の値を色で表現する
A(1,2)
#行列Aの(1,2)の値
v=zeros(10,1)
#10行1列、要素は全てゼロ
for文、while文、if文、ほか
for i=1:10,
v(i)=2^i;
end;
v
#10行1列の各要素を2^iで定義
for i=1:10,
disp(i);
end;
#各iについてそのままiを表示する、1-10が縦に並ぶ
indices=1:10;
indices
#1-10が10行1列の行列として表示される
i=1;
while i<=5,
v(i)=100;
i=i+1;
end;
#iが1-5の間v(i)=100
pwd
#current directory表示
cd
#cdを指定、実行ファイル(.m)のある場所
addpath('c:----')
#pathを加える、current directoryの位置に関わらず実行可能になる