簡體   English   中英

如何在不使用和拆分測試集的情況下將我的數據集拆分為訓練和驗證?

[英]How can i split my dataset into training and validation with no using and spliting test set?

我知道這對於訓練和驗證集拆分是錯誤的,但你可以在這里理解我真正需要的東西。 我只想使用訓練集和驗證集。 我不需要任何測試集

#Data Split
from sklearn.model_selection import train_test_split 

x_train,x_val,y_train,y_val=train_test_split(x,y,test_size=0.976,random_state=0)

測試是驗證;

x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=0)

x_testy_test是您的驗證測試或測試集。 他們是一樣的。 這是總xy樣本的一小部分,用於驗證您的 model 尚未經過訓練的數據。

通過使用random_state ,您可以獲得可重現的結果。 換句話說,每次運行腳本時都會得到相同的集合。

術語validation集和test集有時可互換使用,有時表示略有不同。 @Sy Ker 的觀點是正確的:您使用的sklearn模塊確實為您提供了一個驗證集,盡管模塊中使用的術語是test 實際上,您所做的是獲取用於訓練的數據和用於評估的數據,無論使用什么術語。 我添加這個答案是為了回答您實際上可能需要某種形式的測試集。

使用test_train_split將為您提供一對允許您訓練 model 的集合(在百分比參數中指定比例 - 通常應該為 10-25% 左右,以確保它是一個有代表性的子樣本)。 但我建議更廣泛地考慮這個過程。

只需使用數據集底部的y%行,就可以簡單地(並且很可能不正確地)拆分數據以用於測試和 model 評估。 如果正在進行標准化/標准化,請確保它在測試集上進行訓練並將其應用於評估集,以便對兩者應用相同的處理。

sklearn和其他人也可以非常簡單地進行交叉驗證,在這種情況下,應該對“驗證”集有所不同。 交叉驗證將獲取您的一部分數據並將其細分為更小的組,以進行重復的測試和培訓。 在這種情況下,您可能會從train_test_split中的數據拆分開始,並將在這種情況下設置的“測試”保留為完全保留——這意味着交叉驗證過程從不使用(或“看到”)數據在它的測試/訓練過程中。

然后,您從test_train_split過程中獲得的測試集可以作為一組很好的數據,用作測試 model 如何針對從未見過的數據執行的測試。 您可能會看到這被稱為“holdout”集,或者再次稱為“test”和/或“validation”的某個版本。

此鏈接對交叉驗證和保留集進行了快速但直觀的描述。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM