訓練集與測試集切分
阿新 • • 發佈:2018-12-24
前言
為了 更好的訓練資料並且更好測試模型,一般做機器學習之前都會進行訓練集和測試集的切分。
train_test_split實現
其實我們可以先把資料的輸入X和輸出向量y進行一個水平拼接,然後隨機之後拆開,但是過程比較麻煩。在sklearn中shuffle的並不是訓練集,而是訓練集長度大小的隨機索引。
產生隨機索引值
shuffle_indexes=np.random.permutation(len(X)) #X為資料的輸入
shuffle_indexes
np.random.permutation( x )這個函式可以產生x和隨機數,並且隨機數的範圍是0~x
shuffle_indexes=np.random .permutation(3)
shuffle_indexes
array([2, 0, 1])
設定切分的比例
test_ratio=0.2
test_size=int(len(X) * test_ratio)
求出切分索引
test_indexes=shuffle_indexes[:test_size]
train_indexes=shuffle_indexes[test_size:]
獲得資料
X_train=X[train_indexes]
y_train=y[train_indexes]
X_test=X[test_indexes]
y_test=y[test_indexes]
sklearn中的劃分
有了之前的知識就能更好的理解sklearn中的切分函式的每個引數的意思。
匯入包
from sklearn.model_selection import train_test_split
呼叫
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,
random_state=0)
引數意義:
X,資料集的輸入
y, 資料集的輸出
test_size 預設引數,這個測試集所佔百分比。
radom_state 預設引數,隨機數種子,一般除錯的時候希望每次切分要是一樣的,就給這個種子一個固定的值就好了。