StratifiedShuffleSplit 交叉驗證


python中數據集划分函數StratifiedShuffleSplit的使用

文章開始先講下交叉驗證,這個概念同樣適用於這個划分函數

1.交叉驗證(Cross-validation)
交叉驗證是指在給定的建模樣本中,拿出其中的大部分樣本進行模型訓練,生成模型,留小部分樣本用剛建立的模型進行預測,並求這小部分樣本的預測誤差,記錄它們的平方加和。這個過程一直進行,直到所有的樣本都被預測了一次而且僅被預測一次,比較每組的預測誤差,選取誤差最小的那一組作為訓練模型。下圖所示

這里寫圖片描述

2.StratifiedShuffleSplit函數的使用
官方文檔
用法:

from sklearn.model_selection import StratifiedShuffleSplit StratifiedShuffleSplit(n_splits=10,test_size=None,train_size=None, random_state=None)

 

2.1 參數說明

參數 n_splits是將訓練數據分成train/test對的組數,可根據需要進行設置,默認為10

參數test_size和train_size是用來設置train/test對中train和test所占的比例。例如:
1.提供10個數據num進行訓練和測試集划分
2.設置train_size=0.8 test_size=0.2
3.train_num=num*train_size=8 test_num=num*test_size=2
4.即10個數據,進行划分以后8個是訓練數據,2個是測試數據

*:train_num≥2,test_num≥2 ;test_size+train_size可以小於1*

參數 random_state控制是將樣本隨機打亂

2.2 函數作用描述
1.其產生指定數量的獨立的train/test數據集划分數據集划分成n組。
2.首先將樣本隨機打亂,然后根據設置參數划分出train/test對。
3.其創建的每一組划分將保證每組類比比例相同。即第一組訓練數據類別比例為2:1,則后面每組類別都滿足這個比例

2.3 具體實現

from sklearn.model_selection import StratifiedShuffleSplit
import numpy as np
X = np.array([[1, 2], [3, 4], [1, 2], [3, 4], [1, 2],[3, 4], [1, 2], [3, 4]])#訓練數據集8*2 y = np.array([0, 0, 1, 1,0,0,1,1])#類別數據集8*1 ss=StratifiedShuffleSplit(n_splits=5,test_size=0.25,train_size=0.75,random_state=0)#分成5組,測試比例為0.25,訓練比例是0.75 for train_index, test_index in ss.split(X, y): print("TRAIN:", train_index, "TEST:", test_index)#獲得索引值 X_train, X_test = X[train_index], X[test_index]#訓練集對應的值 y_train, y_test = y[train_index], y[test_index]#類別集對應的值 

運行結果:
這里寫圖片描述

從結果看出,1.訓練集是6個,測試集是2,與設置的所對應;2.五組中每組對應的類別比例相同

 

from:https://blog.csdn.net/m0_38061927/article/details/76180541


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM