hama-matcha’s blog

思ったことを書き残すモノ

Pythonのrandom.seedでデータセットをランダムに分ける

はじめに

今回はデータセットをランダムに分ける時random.seedを使用すると便利だったので書き残しときます。

抽出

0~23までの数値を17 : 5 : 2 の24個のデータから重複なしで値を抽出します。
順番は17個抽出、5個抽出、2個抽出します。
3分割している理由は 学習用 : チューニング用 : テスト用 です。

コード

# ランダムな整数値の生成(0~24) seed有り
# 24個の数値を17 : 5 : 2 でランダムに分ける

import random
random.seed(1) # seed一度ランダム抽出された値を固定

all_list = list(range(24))
random_a = random.sample(all_list, 17)
print("a_list : {}".format(sorted(random_a)))

set_all_a = set(all_list) - set(random_a)
list_all_a = list(set_all_a)
random_b = random.sample(list_all_a, 5)
print("b_list : {}".format(sorted(random_b)))

set_a_b = set(all_list) - set(random_a) - set(random_b)
list_a_b = list(set_a_b)
random_c = random.sample(list_a_b, 2)
print("c_list : {}".format(sorted(random_c)))

見やすいように一応昇順ソート。
random.seedの引数を変えることにより固定する値を変更できます。

結果

a_list : [0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 19, 22]
b_list : [11, 13, 17, 20, 21]
c_list : [5, 23]

終わりに

enumerate関数と併用するといい感じかも?