scikit-learn用train_test_splitランダム分割データセットとトレーニングセット


train_test_split()関数は,試料データを訓練セットとテストセットとしてランダムに分割するために用いられ,もちろん人為的なスライス分割も可能である.
利点:ランダムで客観的にデータを区分し、人為的な要素を減らす
完全なテンプレート:
train_X,test_X,train_y,test_y = train_test_split(train_data,train_target,test_size=0.3,random_state=5)
パラメータの説明:
train_data:区分対象サンプルデータ
train_target:分割対象サンプルデータの結果(ラベル)
test_size:テストデータがサンプルデータに占める割合、整数であればサンプル数
random_state:乱数シードを設定し、毎回同じ乱数であることを保証します.0または記入しないと、取得するたびにデータが異なります
In [11]: from sklearn.model_selection import train_test_split
In [12]: import numpy as np
In [13]: X,y = np.arange(12).reshape(6,2),np.arange(6)
In [14]: X
Out[14]:
array([[ 0,  1],
       [ 2,  3],
       [ 4,  5],
       [ 6,  7],
       [ 8,  9],
       [10, 11]])
In [15]: y
Out[15]: array([0, 1, 2, 3, 4, 5])
In [16]: train_X,test_X,train_y,test_y = train_test_split(X,y,test_size=0.3,random_state=
    ...: 17)
In [17]: train_X
Out[17]:
array([[ 8,  9],
       [ 0,  1],
       [10, 11],
       [ 2,  3]])
In [18]: train_y
Out[18]: array([4, 0, 5, 1])
In [19]: test_X
Out[19]:
array([[4, 5],
       [6, 7]])
In [20]: test_y
Out[20]: array([2, 3])

サンプルをランダムに生成するには:
from sklearn.datasets import make_classification
X, y = make_classification(     #x  ,y  (     )
        n_samples=2000,     # 
        n_features=20,     #  100   
        n_classes=2,        # , 
        random_state=17)    # , 

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3,    #70% ,30% 
                                                        random_state=17)        # 

sklearnを利用したmake_classificationは、ランダムにサンプルデータのセットを生成し、train_を使用します.test_splitで区切る