Menu

機械学習 - Octaveのコマンドまとめ ( Control Statements: for, while, if statement )

coursera(コーセラ)ANDREW NG氏のMachine Learning(機械学習)を進めます。

前回からの続きです。

for

vにzerosコマンドを使って10行1列すべて0の行列を代入します

>> v=zeros(10,1)
v =

   0
   0
   0
   0
   0
   0
   0
   0
   0
   0

この行列にfor文を使って2のi乗の値を代入します。

>> for i=1:10,
> v(i) = 2^i;
> end;
>> v
v =

      2
      4
      8
     16
     32
     64
    128
    256
    512
   1024

while

上で使用した行列vを使用します

>> v=zeros(10,1)
v =

      2
      4
      8
     16
     32
     64
    128
    256
    512
   1024

この行列にwhile文を使って最初の5つだけに100の値を代入します。

>> i = 1;
>> while i  v(i) = 100;
> i = i+1;
> end;
>> v
v =

    100
    100
    100
    100
    100
     64
    128
    256
    512
   1024

if

上で使用した行列vの1番目の値に2を代入したものを使用します

>> v(1)=2
v =

      2
    100
    100
    100
    100
     64
    128
    256
    512
   1024

この行列にif文を使って判定をします。

>> if v(1)==1,
> disp('The value is one');
> elseif v(1)==2,
> disp('The value is two');
> else
> disp('The value is not one or two');
> end;
The value is two

オリジナル関数とその定義方法

関数を記入した拡張子.mのファイルを作成して、pwdで確認したOctaveのカレントディレクトリに設置します

squareThisNumber.m

function y = squareThisNumber(x)
y = x^2;

squareThisNumberを使って呼び出します。

>> squareThisNumber(5)
ans =  25

Octaveでは「複数の戻り値」を定義できる

関数を記入したファイルsquareAndCubeThisNumber.mを作成して、pwdで確認したOctaveのカレントディレクトリに設置します

squareAndCubeThisNumber.m

function [y1, y2] = squareAndCubeThisNumber(x)
y1 = x^2
y2 = x^3

squareAndCubeThisNumberを使って呼び出します。

>> [a,b] = squareAndCubeThisNumber(5);
y1 =  25
y2 =  125
>> a
a =  25
>> b
b =  125

実践的な利用

関数を記入したファイルcostFunctionJ.mを作成して、pwdで確認したOctaveのカレントディレクトリに設置します

costFunctionJ.m

function J = costFunctionJ(X, y, theta)

% X is the "design matrix" containing our training examples.
% y is the class labels

m = size(X,1)                     % number of training examples
predictions = X*theta;            % predictions of hypothesis on all m examples
sqrErrors = (predictions-y) .^ 2;  # squared errors

J = 1/(2*m) * sum(sqrErrors);

Xythetaに行列を指定し、costFunctionJを呼び出します。

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

   1   1
   1   2
   1   3

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

   1
   2
   3

>> theta = [0;1]
theta =

   0
   1

>> j = costFunctionJ(X, y, theta)
predictions =

   1
   2
   3

j = 0

用語

データをプロットする

実務の現場では、書かれたように“データを当て込む(入れ込む)”という 意味合いに用いることが多いのも事実だと思います。


複数の戻り値を初めて見ました


参考サイト

Written by masasikatano on Wednesday March 29, 2017

« 機械学習 - Octaveのコマンドまとめ ( Plotting Data ) - 機械学習 - Vectorization »


Share