sklearn的train_test_split()各函數參數含義解釋(很是全)

sklearn之train_test_split()函數各參數含義(很是全)數組

在機器學習中,咱們一般將原始數據按照比例分割爲「測試集」和「訓練集」,從 sklearn.model_selection 中調用train_test_split 函數 dom

簡單用法以下:機器學習

X_train,X_test, y_train, y_test =sklearn.model_selection.train_test_split(train_data,train_target,test_size=0.4, random_state=0,stratify=y_train)
# train_data:所要劃分的樣本特徵集函數

# train_target:所要劃分的樣本結果學習

# test_size:樣本佔比,若是是整數的話就是樣本的數量測試

# random_state:是隨機數的種子。
# 隨機數種子:其實就是該組隨機數的編號,在須要重複試驗的時候,保證獲得一組同樣的隨機數。好比你每次都填1,其餘參數同樣的狀況下你獲得的隨機數組是同樣的。但填0或不填,每次都會不同。spa

stratify是爲了保持split前類的分佈。好比有100個數據,80個屬於A類,20個屬於B類。若是train_test_split(... test_size=0.25, stratify = y_all), 那麼split以後數據以下: 
training: 75個數據,其中60個屬於A類,15個屬於B類。 
testing: 25個數據,其中20個屬於A類,5個屬於B類。 blog

用了stratify參數,training集和testing集的類的比例是 A:B= 4:1,等同於split前的比例(80:20)。一般在這種類分佈不平衡的狀況下會用到stratify。ip

將stratify=X就是按照X中的比例分配 ci

將stratify=y就是按照y中的比例分配 

總體總結起來各個參數的設置及其類型以下:

主要參數說明:

*arrays:能夠是列表、numpy數組、scipy稀疏矩陣或pandas的數據框

test_size:能夠爲浮點、整數或None,默認爲None

①若爲浮點時,表示測試集佔總樣本的百分比

②若爲整數時,表示測試樣本樣本數

③若爲None時,test size自動設置成0.25

train_size:能夠爲浮點、整數或None,默認爲None

①若爲浮點時,表示訓練集佔總樣本的百分比

②若爲整數時,表示訓練樣本的樣本數

③若爲None時,train_size自動被設置成0.75

random_state:能夠爲整數、RandomState實例或None,默認爲None

①若爲None時,每次生成的數據都是隨機,可能不同

②若爲整數時,每次生成的數據都相同

stratify:能夠爲相似數組或None

①若爲None時,劃分出來的測試集或訓練集中,其類標籤的比例也是隨機的

②若不爲None時,劃分出來的測試集或訓練集中,其類標籤的比例同輸入的數組中類標籤的比例相同,能夠用於處理不均衡的數據集

經過簡單栗子看看各個參數的做用:

 

舉例以下:

經過簡單例子看看各個參數的做用:

①test_size決定劃分測試、訓練集比例

 

②random_state不一樣值獲取到不一樣的數據集

 設置random_state=0再運行一次,結果同上述相同

 

設置random_state=None運行兩次,發現兩次的結果不一樣

 

③設置stratify參數,能夠處理數據不平衡問題

相關文章
相關標籤/搜索