將資料集切分成「訓練 測試資料集」和交叉驗證

2021-07-25 05:18:59 字數 1361 閱讀 3702

把資料集分為兩部分:分別用於訓練和測試

sklearn提供乙個將資料集切分成訓練集和測試集的函式。

from sklearn.cross_validation import train_test_split
xd_train,xd_test,y_train,y_test=train_test_split(x_d,y,random_state=14)

得到兩個資料集,訓練集xd_train 和測試集xd_test。y_train和y_test分別是以上兩個資料集的類別資訊。

從樣本中隨機的按比例選取train data和test data。呼叫形式為:

x_train, x_test, y_train, y_test = cross_validation.train_test_split(train_data, train_target, test_size=0.4, random_state=0)

test_size是樣本佔比。如果是整數的話就是樣本的數量。預設把資料集的25%作為測試集

random_state是隨機數的種子。不同的種子會造成不同的隨機取樣結果。相同的種子取樣結果相同。

sklearn包中cross validation的介紹:

或者

def splitdatat(data,m,k,seed):
test=
train=
random.seed(seed)
for user,iter in data:
if random.randint(0,m)==k:
else:
return trian,test
此方法,每次選取不同的k(0

既然只切一次有問題,那就多切幾次,多進行幾次實驗。每次切分時,都要保證這次得到的訓練集和測試集與上次不一樣。

sklearn提供幾種交叉驗證方法。

from sklearn.cross_validation import cross_val_score
scores=cross_val_score(estimator,x,y,scoring='accuracy')
cross_validation預設是使用k fold方法切分資料集。它大體上保證切分後得到的子資料集中類別分布相同,以避免某些子資料集出現類別分布失衡的情況。

訓練集與測試集切分

為了 更好的訓練資料並且更好測試模型,一般做機器學習之前都會進行訓練集和測試集的切分。其實我們可以先把資料的輸入x和輸出向量y進行乙個水平拼接,然後隨機之後拆開,但是過程比較麻煩。在sklearn中shuffle的並不是訓練集,而是訓練集長度大小的隨機索引。shuffle indexes np.ra...

資料集中訓練資料集和測試資料集特徵同分布

用標準資料來訓練,但是在真實的測試過程中,輸入資料的並不會是標準資料,導致了訓練與測試的兩個過程中資料分布的不一致。首先,訓練集合與測試集合的分布完全一樣,這個不太現實,因為相對於有限的訓練集,測試集合理論上趨於無限大,所以無法窮盡。然而我們也不能為了單單去擬合我們手裡的測試集而調整模型。那麼要了解...

PYTHON 訓練集與測試集切分

通常,我們在建模之前會對原始資料進行切分,現對該方法進行打包。資料切分,按照7 3切分訓練集與測試集 data df 原始資料 object col 目標變數 defdata split data df object col from sklearn.model selection import t...