俺人〜OREGIN〜俺、バカだから人工知能に代わりに頑張ってもらうまでのお話

俺って、おバカさんなので、とっても優秀な人工知能を作って代わりに頑張ってもらうことにしました。世界の端っこでおバカな俺が夢の達成に向けてチマチマ頑張る、そんな小さなお話です。現在はG検定、E資格に合格し、KaggleやProbSpaceのコンペに参画しながら、Pythonや機械学習、統計学、Dockerなどの勉強中です。学習したことをブログにアウトプットすることで、自分の身に着けていきたいと思います。まだまだ道半ばですが、お時間がありましたら見て行ってください。

エピソード2-7: Numpyで行列を扱ってみる〜 E資格への道〜

今回は、Numpyで行列を扱ってみます。 

行列は、Numpyのarrayオブジェクトを利用して簡単に扱うことができます。

学生の頃、行列の計算には悪戦苦闘していたので、逆行列も簡単に計算できるNumpyは、もはや、神ツールの域に感じました。

では、早速イジっていきます。

 

 0. まずは、お約束のnumpyライブラリをimport。


f:id:kanriyou_h004:20190330212710p:plain

「import numpy as np」とすることで、「np」にて参照して、各種関数や定数を呼び出すことができます。

 1. リスト形式を、np.array()に引数として渡す。


f:id:kanriyou_h004:20190407211317p:plain

a,b,c,dに乱数で整数を格納して、np.array()の引数として渡すことで、

\begin{pmatrix} a & b \\ c & d \end{pmatrix}

の行列をarrayオブジェクトに格納できます。

2. 行列の積を、np.dot()で計算する。


f:id:kanriyou_h004:20190407213341p:plain

np.dot()の引数に、行列を渡すことで、行列の積が計算できます。

手計算だと恐ろしく手間がかかるので、こんなに簡単に計算できると、もうNumpyが手放せません。

3. 逆行列を、np.linalg.inv()で計算する。


f:id:kanriyou_h004:20190407213748p:plain

逆行列もnp.linalg.inv()の引数に、行列を渡すことでいとも簡単に計算できます。

4. 転置行列を、T属性で計算する。


f:id:kanriyou_h004:20190407214137p:plain

転置行列は、arrayオブジェクトのT属性で計算できます。

 積や逆行列と違い、Numpyの関数ではなく、arrayオブジェクトのT属性で計算する点に注意が必要です。

5. ベクトルを、n×1の行列で定義する。


f:id:kanriyou_h004:20190407215118p:plain

ベクトルは、n×1の行列で定義することで、行列との掛け算などができます。 

 

f:id:kanriyou_h004:20190407220612p:plain

ベクトルの内積も、np.dot()の引数の一つ目のベクトルを転置することで、計算できます。

f:id:kanriyou_h004:20190407220928p:plain

ベクトルのクロス積は、np.dot()の引数の二つ目のベクトルを転置することで計算できます。

 

Numpyを使うことで、行列やベクトルの計算がいとも簡単に実施することができました。

これで、ベクトル計算に手間を取られたり計算ミスをしたりすることなく、大量のデータを計算することができます。

とてもありがたいです!

では、引き続き、頑張って勉強していきたいと思います。

 


 2019年3月9日(土)にG検定を受験し、見事合格できました!

受験の体験記や勉強法などを別のブログにまとめました。

これから受験される方がいらっしゃいましたらご参考まで。

g-kentei.hatenablog.com