Pythonを使用すのに、Numpy が必須となります。
1)Numpy
Pythonで機械学習やDeap Learning をするにはとうぜん、数式を扱います。他のProgramでも計算は出来ますが、Pythonでは配列計算ができます。ただ、Pyhthon の配列計算は基本的なもの。
本格的な計算処理にはNumpyを使用するということになります。
2)自分のPythonでNumpy が使えるようになっているかどうか。
Pyhton を使用する環境によって、Numpy が標準で使えるようになってるなっているかどうかは違うようです。Anacondaではすぐに使えるらしいです。
やってみればわかるので、 Pythonでプログラムを実行。
結果はエラーでした。
Numpy のモジュール(module)が無い、というエラーです。
コマンドプロンプトでも再確認しました。
3)Numpy のインストール
Numpy のインストールが必要になりました。
Numpy モジュールのinstall には、pip(the package installer for Python)を使います。
コマンドプロンプトで pip install numpy と入れるだけ、です。
このコマンドは、コマンドプロンプトの上で行うので、Pythonの実行レベルからは^Zで抜けておく必要があります。
インストールのゲージが伸びて、いっぱいになれば インストール完了。
これで、さっきのプログラムが動きます。
・・・と、思って、実施したら、今度は間違いが見つかりました。 (^^'')
小文字と大文字は区別されて認識されますね。
間違いを修正しながら、テストとして、最終的に、以下のプログラムが動くようになりました。
4) Numpyの計算
Numpy が使えると、行列計算が出来るようになります。
【NumPyArray23】 2行3列の行列計算
2行3列の行列の計算をします。[ ]で括った列を並べて、[ ,]で括ります
今回は 1行目(1.0,1.0,1.0),2行目が(2.0,2.0,2.0)の2行3列の行列A
これに、1行の(3.0, 4.0, 5.0)の行列Bとの計算をします。
計算するのは A+B、 A×B、 A/B、 A+B×2
本来の行列計算では、 A×Bだけが行列の内積となる。 A/B は内積の除算になる。
A+B、A+B×2 は行列としての要素合っていないが、 Bを2列にしたものとして処理される。
プログラムと結果です。
【NumPyArray33】 3行3列の行列計算
次に3行3列の行列の計算をします。
1行目(11, 12, 13) 2行目(21, 22, 23) 3行目(31, 32, 33)の行列A
printで行列全体を出力。 [ ]が多くて、何だか行列としてはピンと来ない表記になってしまう気がします。
各要素の取り出し方は、
A1 = A[0] で、行列Aの1行目。 結果は [11 12 13]
A12 = A[0,1] で、要素A12。 結果は 12
print(A[0][1]) と直接出力させることも出来る。 結果は 12
i=1, j=2, print(A[i,j]) と番号を変数で指定しできる。 結果は 32
for文で、行(₌row)を0,1,2に指定して出力したら、少し行列らしく見ることも出来る。
B = A.flatten() で 行列を1列に並べることが出来る。
行列(A)の後に、ピリオドを付けて、.flatten() で とする。
結果は [11 12 13 21 22 23 31 32, 33]
C = B[np.array([0,2,5])] とすると、1番目と、3番目、6番目の値を配列に抽出できる。
結果は [11 13 23]
C = B[np.array([0,3,6,1,4,7,1,5,8])] とすれば、 順番を任意に変える。
この結果は [11 21 31 12 22 32 12 23 33]
条件式で、論理値を配列にすることも出来る。
D = C > 21 で、 C(上で並び替えた配列)の 21より大きいものをTrue 以下をFalseとする。
この結果は [False False True False True True False True True ]
Ture の結果のみを配列にするのであれば
D = C[ C > 21] とする。 3,5,6,8,9番目が配列になる。
結果は [31 22 32 23 33]
プログラムと結果は
配列、行列の計算が簡単に出来るのは科学計算では大きなメリットです。
ただ、要素指定する際に、指定する行、列の数値が0からの番号となる。
調べたい、見たい 行(列)-1 となる。
科学計算の行列(行列)の指定方法とは違ってくるので、行列を使う時に、混乱するところ。
間違えることも多いので、いつもチェックが必要になる。
また、2行3列と3列(行)の足算や引算、特定の位置を選んで並び替えや、行列を1列にする変換などは、ベクトルや物性などの記述として考えると、意味が分からなくなる。
これに対して、Numpy には内積の計算も別に用意されている。 この辺はもっと勉強が必要ですね。
ここまでの、処理を動画で記録した。
【 ( ‘ー`)フゥー=3 ため息がでました。 ここまで書くだけで疲れた。 プログラムの練習と、ブログの書き、ビデオの撮り方・編集など時間がかかります。 そのやり方も、まだまだ、たどたどしい感じです。 沢山の記事を書いている人は ”すごい” なと思いました。 新しい記事を書く間隔も開いてしまいますが、頑張って続けようとは思います。「継続は力ない」いやいや「継続は力なり」(Rが抜けただけで意味が反転した。) 】
0コメント