LoginSignup
21
13

More than 5 years have passed since last update.

時系列データの順番を保持したまま、訓練データとテストデータに分ける

Posted at

機械学習でデータを訓練データとテストデータに分けるのは、scikit learnフレームワークのtrain_test_splitがよく使われています。この関数を使うと、順番がシャッフルされてしまうため、時系列データに対しては使いにくいという問題がありました。そこで、オプションでshuffleをFalseに設定すると、順番を保持したまま、訓練データとテストデータに分けられます。時系列データの機械学習を行うときに便利です。

split_test_data.py

import numpy as np
from sklearn.model_selection import train_test_split

X = np.arange(10).reshape((5, 2))
Y = np.array([1,1,0,1,0])

X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.4) 
# 順番がシャッフルされてしまうので、時系列データに対しては使いにくい

X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.4, shuffle=False)
# オプションで、shuffle=Falseを指定すると順番がシャッフルされないので、時系列データに対しても使いやすい

print(X_train, '\n', X_test,'\n', Y_train,'\n', Y_test)

""" 出力: 
[[0 1]
 [2 3]
 [4 5]]
 [[6 7]
 [8 9]]
 [1 1 0]
 [1 0]
"""

21
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
13