sklearn.train_test_split()によるトレーニング用データ/検証用データの分割

sklearn.train_test_split()によるトレーニング用データ/検証用データの分割

◎環境:Python 3.6.7、scikit-learn 0.21.2

概要

scikit-learnのtrain_test_split()を用いて、データをトレーニング用と検証用に分割する方法をやってみる。

sklearn document - train_test_split()

ライブラリーのインポート

from sklearn.model_selection import train_test_split
import numpy as np
import matplotlib.pyplot as plt

元データの準備

サンプルとして、元データを以下のように準備

from sklearn.model_selection import train_test_split
import numpy as np
import matplotlib.pyplot as plt

f:id:storikai:20190605112944p:plain

データの分割

# トレーニング用データ/検証用データの分割
X_train,X_test,y_train,y_test = train_test_split(X,y,train_size=0.8) # トレーニング用データ80%で分割

print('X_train :')
print(X_train)
print('y_train :')
print(y_train)
print('X_test :')
print(X_test)
print('y_test :')
print(y_test)

fig = plt.figure()
ax1 = fig.add_subplot(1,1,1)
ax1.scatter(X_train,y_train,label='train',marker='o')
ax1.scatter(X_test,y_test,label='test',marker='+')
ax1.grid(True)
ax1.legend()
fig.show()

#X_train :
#[0.78947368 0.36842105 0.10526316 0.31578947 0.57894737 0.26315789
# 0.05263158 0.89473684 0.21052632 0.         0.63157895 0.84210526
# 0.47368421 0.42105263 1.         0.73684211]
#y_train :
#[4.57894737 3.73684211 3.21052632 3.63157895 4.15789474 3.52631579
# 3.10526316 4.78947368 3.42105263 3.         4.26315789 4.68421053
# 3.94736842 3.84210526 5.         4.47368421]
#X_test :
#[0.68421053 0.15789474 0.94736842 0.52631579]
#y_test :
#[4.36842105 3.31578947 4.89473684 4.05263158]

f:id:storikai:20190605113030p:plain

※補足:データはシャッフルされる(する/しないの指定は可能)
※補足:分割はランダムであり、結果は毎回異なる(シード値の指定により、結果を毎回同じにすることも可能)