前言
為了 更好的訓(xùn)練數(shù)據(jù)并且更好測試模型,一般做機器學(xué)習之前都會進行訓(xùn)練集和測試集的切分竹祷。
train_test_split實現(xiàn)
其實我們可以先把數(shù)據(jù)的輸入X和輸出向量y進行一個水平拼接谈跛,然后隨機之后拆開,但是過程比較麻煩塑陵。在sklearn中shuffle的并不是訓(xùn)練集感憾,而是訓(xùn)練集長度大小的隨機索引。
產(chǎn)生隨機索引值
shuffle_indexes=np.random.permutation(len(X)) #X為數(shù)據(jù)的輸入
shuffle_indexes
np.random.permutation( x )這個函數(shù)可以產(chǎn)生x和隨機數(shù)猿妈,并且隨機數(shù)的范圍是0~x
shuffle_indexes=np.random.permutation(3)
shuffle_indexes
array([2, 0, 1])
設(shè)置切分的比例
test_ratio=0.2
test_size=int(len(X) * test_ratio)
求出切分索引
test_indexes=shuffle_indexes[:test_size]
train_indexes=shuffle_indexes[test_size:]
獲得數(shù)據(jù)
X_train=X[train_indexes]
y_train=y[train_indexes]
X_test=X[test_indexes]
y_test=y[test_indexes]
sklearn中的劃分
有了之前的知識就能更好的理解sklearn中的切分函數(shù)的每個參數(shù)的意思吹菱。
導(dǎo)入包
from sklearn.model_selection import train_test_split
調(diào)用
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,
random_state=0)
參數(shù)意義:
X,數(shù)據(jù)集的輸入
y, 數(shù)據(jù)集的輸出
test_size 默認參數(shù)彭则,這個測試集所占百分比。
radom_state 默認參數(shù)占遥,隨機數(shù)種子俯抖,一般調(diào)試的時候希望每次切分要是一樣的,就給這個種子一個固定的值就好了瓦胎。