コーディング学習の要点3

ランダムな並び替え

np.random.permutation(10) 
番号を並び替えて、先頭から適当な数だけサンプリングする。

array([7, 2, 6, 0, 5, 4, 9, 1, 3, 8])

reshapeについて

x_test[0].reshape(28,28)

リストで区切られるようになる。
plt.imshow(x_test[0].reshape(28,28))
plt.show()
→こうすることで初めて画像と認識できるようになる。

plt.imshow(x_test[0],reshape(28,-1))
片方を28に固定して、それに合うように割り振る。

np.argmax()

In [1]: import numpy as np

In [2]: a = np.random.randint(10, size = 10) # まずは1次元配列から。

In [3]: a  # aの値を確認する。
Out[3]: array([2, 3, 3, 1, 4, 4, 5, 0, 5, 4])

In [4]: np.argmax(a)
Out[4]: 6

In [5]: a.argmax()
Out[5]: 6

この例では、ランダムで生成した配列の中身が[2, 3, 3, 1, 4, 4, 5, 0, 5, 4]となっています。最大値は5ですが、インデックスは6と8の二回出現します。こういった場合には、最初の最大値のインデックスを返します。0からスタートします。

np.eye()

In [1]: import numpy as np

In [2]: np.eye(3) # 3×3の単位行列
Out[2]:
array([[ 1.,  0.,  0.],
       [ 0.,  1.,  0.],
       [ 0.,  0.,  1.]])

In [3]: np.eye(10)
Out[3]:
array([[ 1.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  1.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  1.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  1.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  1.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  1.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  1.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  1.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  1.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  1.]])

単位行列を生成する。

np.astype()

t_train = np.eye(10)[t_train.astype("int")]

print(t_train[1])

[1. 0. 0. 0. 0. 0. 0. 0. 0. 0.]

このようにして、正解ラベルをone-hot-vectorに変換します

print('Label: ', np.argmax(t_test[perm[i]]))

こうすることで、何番目にマックスが来るか表示して、数字の正解を表示します。

np.zeros_like

import numpy as np
x = np.arange(9).reshape(3, 3)
x
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])
# 配列 x の要素を0で初期化した新しい配列を生成
np.zeros_like(x)
array([[0, 0, 0],
       [0, 0, 0],
       [0, 0, 0]])

コメント

タイトルとURLをコピーしました