ジャンケンの勝敗データ作成

f:id:hanamichi_sukusuku:20210201202913p:plain

 

このプログラムではジャンケンの勝敗データを作成し、データファイルに保存するもの。

 

ジャンケンの公式を定義

judge = lambda a, b: (a - b + 3) % 3

 

lambdaは無名関数。

lambda 引数: 返り値

という形で書く。

これを関数で表すと

def func(引数):

   return 返り値

となる。

 

ジャンケンの結果の計算は(a-b+3)%3という簡単な式で計算することができる。

 

ランダムにデータ作成

import random
random_hand = lambda : random.randint(0, 2)
x_items =
y_items =
for i in range(3000):
 a = random_hand()
 b = random_hand()
 result = judge(a, b)
 x_items.append([a, b])
 y_items.append(result)
 # 作成したデータを表示
print(x_items)
print(y_items)

random.randint()ではランダムに引数に指定した整数の値を取得する。引数は(開始値, 終了値)と指定する。

for文の中でrandom_hand()を呼び出しランダムに0~2までの値を変数a,bに格納。

a,bを引数にjudge()でジャンケンの公式に値を渡し、結果を変数resultに格納。

x_itemsにランダムに出力された0~2の値が格納されたa,bのデータ、y_itemsにジャンケンの結果を表す値を追加。これを3000回繰り返す。

 

データを学習用、テスト用に分割し保存

x_train = x_items[0:2000]
y_train = y_items[0:2000]
x_test = x_items[2000:]
y_test = y_items[2000:]
# データを保存 --- (*5)
items = [[x_train, y_train],
     [x_test, y_test]]
with open("janken-data.pkl", "wb") as fp:
 pickle.dump(items, fp)

x_items[0:2000]でx_itemsに格納されているインデックス番号が0の要素から1999の要素までを範囲指定しx_trainに格納。

x_items[2000:]ではインデックス番号が2000から後の要素を全部範囲指定しx_testに格納。

最後にpickleで作成した学習用、テスト用データのオブジェクトを保存。