学習とテストに分ける。
文言だけを見ると、テスト前の授業とテスト本番。というような学生時代を思い出す。
もっと飛躍させるなら、「練習ではつよいのに、試合本番はよわい。」あのころの自分を思い出す。冷静になって振り返れば、練習の時も強かったのではなくて、あまりにも試合本番が弱すぎて、慰めるように練習では強いと思い込んでいただけかもしれないけど。
今回も、Smart-Hintさんを参考にさせていただきます。
https://smart-hint.com/ml/train_test_split/
本題
機械学習の1ステップ「学習用とテスト用にデータを分ける」を学ぶ
なぜ分けるのか
機械学習で作成したデータの精度を図るため
(機械学習で得た予測 と 使わなかったデータ を比較して、精度を図るため)
どうやって分けるのか
Hold-Out法というのが定番らしい
コードの実装
ぼく的ポイントとなる部分だけをピックアップする
x,y = train_test_split(a)
print(x)
print(y)
内容
配列を分割
ポイント
train_test_split()メソッドを使うと、無作為に配列を2分割できる
イメージ
おつかい組とお留守番組が、自動で振り分けられるみたいな感じか。
a = np.arange(10)
train_test_split(a, test_size=0.5)
内容
学習用とテスト用にデータ(配列)を分割する
+
半分の割合で分割する
ポイント
第二引数にTest_sizeを渡してやる(0~1の間)
内容
テスト用、学習用にデータ(配列)を分割する(※分割方法は、固定する)
ポイント
train_test_splitを実行する際に、渡すrandom_stateを同じにすると、全く同じように分割がされる
random_stateの使い道
自分ではうまく言語化できないので、複数のネットの情報を参照。
・乱数に依存するアルゴリズムの計算結果に再現性を持たせるため
・、乱数を使う計算は同じパラメータでも乱数のseedが異なれば結果も異なりますので再現性を確保するため
・機械学習モデルを使ったプログラムを組んでいる場合、毎回機械学習の結果がコロコロと変わるとプログラムを組みにくいから
自分なりの解釈
キーワード:再現性
機械学習の精度に、再現性を持たせるため。