##ポイント
➀機械学習などでは、特にランダム処理が必要となる。データに対して相関性など依存関係をもたせるとデータ分析に影響をもたらす可能性があるためである。
➁ランダム処理には大きく、乱数生成と用意されデータのシャッフルを行う 二つのやり方に分類される。
##ランダム処理のまとめ一覧
import random #ランダム処理に必要なライブラリのインポート
・データの準備
#0~9のリスト生成
a = list(range(10))
print(a)
>>>[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
・データのシャッフル
#リストのシャッフル
random.shuffle(a)
print(a)
>>>[0, 1, 9, 5, 6, 4, 2, 8, 3, 7]
・シャッフルしたデータを固定する。
'''データをシャッフルするごとにリストの中身が異なるのは不便なことがある。
seedを用いることで、シャッフルの固定化を行うことができる。'''
c = list(range(5))
random.seed(0)
random.shuffle(c)
print(c)
>>>[2, 1, 0, 4, 3]
・データ抽出
#リストから三つのデータを抽出し、新規リストを作成。その後、シャッフルを実行
#母集団からデータの一部を標本として、抽出するときに有効
b = random.sample(a, 3)
print(b)
>>>[4, 9, 2]
・整数の乱数を生成する
sample_list = ['転職', 'あきらめて会社に居残る', '様子をみる']
#0~2の値をランダム生成
index=random.randint(0,2)
sample_list[index]
>>>様子をみる
・浮動小数の乱数を生成する
#floatのランダム生成(1~3)
judge=random.uniform(1,3)
if judge >1.5:
print('乱数は1.5より大きいです')
else:
print('乱数は1.5以下です')
・文字列のなかから文字をランダムで取得する
#文字列の中から、ランダムで文字を取得する
value=random.choice('abcdefg')
value
>>>b
・numpyを用いて、ランダムな行列を生成する
import numpy as np
#numpyを用いることで、簡単に行列に関するランダム生成を行うことができる。
arr1 = np.random.rand(4, 4) # 4 x 4の配列の乱数
print(arr1)
arr2 = np.random.rand(3, 2, 2) # 3 x 2 x 2の配列の乱数
print(arr2)
>>>
[[0.41656682 0.2629626 0.14942424 0.3543975 ]
[0.51200162 0.23385965 0.62659274 0.19056221]
[0.27613723 0.45423013 0.46009073 0.50387105]
[0.93519298 0.88835726 0.44611031 0.62408758]]
[[[0.75928824 0.55752824]
[0.50373056 0.88856187]]
[[0.97135706 0.12369758]
[0.53365778 0.02798405]]
[[0.77609176 0.9043028 ]
[0.7760245 0.64095079]]]