對python中數(shù)據(jù)集劃分函數(shù)StratifiedShuffleSplit的使用詳解
文章開始先講下交叉驗(yàn)證,這個(gè)概念同樣適用于這個(gè)劃分函數(shù)
1.交叉驗(yàn)證(Cross-validation)
交叉驗(yàn)證是指在給定的建模樣本中,拿出其中的大部分樣本進(jìn)行模型訓(xùn)練,生成模型,留小部分樣本用剛建立的模型進(jìn)行預(yù)測,并求這小部分樣本的預(yù)測誤差,記錄它們的平方加和。這個(gè)過程一直進(jìn)行,直到所有的樣本都被預(yù)測了一次而且僅被預(yù)測一次,比較每組的預(yù)測誤差,選取誤差最小的那一組作為訓(xùn)練模型。
下圖所示

2.StratifiedShuffleSplit函數(shù)的使用
用法:
from sklearn.model_selection import StratifiedShuffleSplit StratifiedShuffleSplit(n_splits=10,test_size=None,train_size=None, random_state=None)
2.1 參數(shù)說明
參數(shù) n_splits是將訓(xùn)練數(shù)據(jù)分成train/test對的組數(shù),可根據(jù)需要進(jìn)行設(shè)置,默認(rèn)為10
參數(shù)test_size和train_size是用來設(shè)置train/test對中train和test所占的比例。例如:
1.提供10個(gè)數(shù)據(jù)num進(jìn)行訓(xùn)練和測試集劃分
2.設(shè)置train_size=0.8 test_size=0.2
3.train_num=num*train_size=8 test_num=num*test_size=2
4.即10個(gè)數(shù)據(jù),進(jìn)行劃分以后8個(gè)是訓(xùn)練數(shù)據(jù),2個(gè)是測試數(shù)據(jù)
注*:train_num≥2,test_num≥2 ;test_size+train_size可以小于1*
參數(shù) random_state控制是將樣本隨機(jī)打亂
2.2 函數(shù)作用描述
1.其產(chǎn)生指定數(shù)量的獨(dú)立的train/test數(shù)據(jù)集劃分?jǐn)?shù)據(jù)集劃分成n組。
2.首先將樣本隨機(jī)打亂,然后根據(jù)設(shè)置參數(shù)劃分出train/test對。
3.其創(chuàng)建的每一組劃分將保證每組類比比例相同。即第一組訓(xùn)練數(shù)據(jù)類別比例為2:1,則后面每組類別都滿足這個(gè)比例
2.3 具體實(shí)現(xiàn)
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]])#訓(xùn)練數(shù)據(jù)集8*2
y = np.array([0, 0, 1, 1,0,0,1,1])#類別數(shù)據(jù)集8*1
ss=StratifiedShuffleSplit(n_splits=5,test_size=0.25,train_size=0.75,random_state=0)#分成5組,測試比例為0.25,訓(xùn)練比例是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]#訓(xùn)練集對應(yīng)的值
y_train, y_test = y[train_index], y[test_index]#類別集對應(yīng)的值
運(yùn)行結(jié)果:

從結(jié)果看出,1.訓(xùn)練集是6個(gè),測試集是2,與設(shè)置的所對應(yīng);2.五組中每組對應(yīng)的類別比例相同
以上這篇對python中數(shù)據(jù)集劃分函數(shù)StratifiedShuffleSplit的使用詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
從0開始的Python學(xué)習(xí)014面向?qū)ο缶幊蹋ㄍ扑])
這篇文章主要介紹了Python面向?qū)ο缶幊?,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
python如何實(shí)現(xiàn)數(shù)組反轉(zhuǎn)
這篇文章主要介紹了python如何實(shí)現(xiàn)數(shù)組反轉(zhuǎn)問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02
用Python手把手教你實(shí)現(xiàn)2048小游戲
感覺好久沒和大家一起寫小游戲玩了,今天恰巧有空.這次我們來用Python做個(gè)2048小游戲吧.廢話不多說,文中有非常詳細(xì)的代碼示例,需要的朋友可以參考下2021-06-06
python matplotlib.pyplot.plot()參數(shù)用法
這篇文章主要介紹了python matplotlib.pyplot.plot()參數(shù)用法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04
使用 Python 玩轉(zhuǎn) GitHub 的貢獻(xiàn)板(推薦)
這篇文章主要介紹了使用 Python 玩轉(zhuǎn) GitHub 的貢獻(xiàn)板的相關(guān)知識,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-04-04
python 操作sqlite數(shù)據(jù)庫的方法
sqlite的官網(wǎng) sqlite.org/index.html SQLite 作為一個(gè)SQL數(shù)據(jù)庫引擎,是由C語言實(shí)現(xiàn)的,又小又快,具有高可靠性且功能齊全。 作為嵌入式數(shù)據(jù)庫,在移動設(shè)備中使用非常廣泛且方便。本文講解如何使用python操作sqlite數(shù)據(jù)庫2021-06-06
Python與數(shù)據(jù)庫的交互問題小結(jié)
這篇文章主要介紹了Python與數(shù)據(jù)庫的交互,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12

