LoginSignup
29
21

More than 5 years have passed since last update.

sklearn の train_test_split でデータの順番の情報を保持しておく

Posted at

sklearn の train_test_split でデータの順番の情報を保持しておく

この記事ではscikit-learn0.18.1を利用しています。

はじめに


データを学習用とテスト用に分割する train_test_split は非常に便利なのですが、
時系列データなど「順番」に意味がある場合、分割後もその情報を持っていたいケースがあるかと思います。

シンプルなデータであれば、順番の情報を持った上で分割し、後から取り除く・・・などあるのですが、
データが画像のような複雑な場合はうまくいかない。どうしよう・・・と思っていたら、
以下のようなシンプルな方法でできました。

データの分割


# coding:utf-8

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])
indices = np.array(range(X.shape[0]))

X_train, X_test, Y_train, Y_test, indices_train, indices_test = train_test_split(X, Y, indices, test_size=0.33, random_state=111)

indices で順番の情報を持っておいて、これもまとめて分割しています。

keras で画像データを解析していて、この問題に直面しました。
データフレームにすればインデックス番号を利用できると思ったけど、多次元データのデータフレーム化は
なかなかうまくいかず、numpy でいろいろやろうと思ったけどうまくいかず。
で、調べていたら上のようなシンプルなやり方がありました。

29
21
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
29
21