機械学習でデータを訓練データとテストデータに分けるのは、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]
"""