2025.7.10 train_test_split
データセットを訓練用とテスト用への分割を行う。渡すデータにはリスト、ndarray、pandas、tensor 型などが利用できる。
名前付き引数 test_size で、分割する際のテストデータの比率を指定できる。省略すると 0.25が与えられる。
この関数のポピュラーな使い方は、学習データと教師データをそれぞれ1つずつ渡し、訓練用とテスト用に分割するやりかたであろう。
code:p1.py
from sklearn.model_selection import train_test_split
X = 1,2,3], 2,3,4, 3,4,5, 4,5,6, [4,5,6
y = 1,1,2,1,2
X_train, X_test, y_train, y_test = train_test_split(X, y)
一般化された使用例
渡すデータはいくつでもよく、0軸目の要素数が揃っていればよい。
異なる型が混在していてもよい。
code:p2.py
from sklearn.model_selection import train_test_split
import numpy as np
import torch as pt
X = 1,1,2,1,2
Y = np.array(1,2,3], 2,3,4, 3,4,5, 4,5,6, [4,5,6)
Z = pt.tensor([
1,2,3], 2,3,4, 3,4,5, [4,5,6,
1,2,3], 2,3,4, 3,4,5, [4,5,6,
1,2,3], 2,3,4, 3,4,5, [4,5,6,
1,2,3], 2,3,4, 3,4,5, [4,5,6,
1,2,3], 2,3,4, 3,4,5, [4,5,6,
])
X1, X2, Y1, Y2, Z1, Z2 = train_test_split(X, Y, Z)
print('X1:\n', X1)
print('X2:\n', X2)
print('Y1:\n', Y1)
print('Y2:\n', Y2)
print('Z1:\n', Z1)
print('Z2:\n', Z2)
与えるデータは0軸目のサイズが揃っていれば良い。この例では、
X は長さが 5 のリスト
Y は形状が (5, 3) のndarray
Z は形状が (5, 4, 2) のtensor
であるが、0軸目長が5のデータを与えると、5件のデータと解釈する。
補足
shuffle
分割の際にデータをシャッフルすることを指定する
torch.utils.data.DataLoader でバッチを生成するときにシャッフルですることもできる
訓練(Train)・検証(Validation)・テスト(Test)の3つに分割したければ、train_test_splitを2回呼び出して対応する。
stratify
層化サンプリングのためのオプション
test_size, train_size
全体のデータ数に対する訓練とテストデータの割合を指定する引数
どちらかのみを指定すると、もう一方の値は総和が1となるように設定される
これらの和が1を越えないように与える、和が1以下だった場合には全データが使われない。