2016-11-20 39 views
3

從文檔:caret包中的createDataPartition函數如何拆分數據?

對於自舉樣本,使用簡單隨機採樣。

對於其他數據拆分,當y是試圖平衡拆分中的類分佈的因素時,隨機抽樣在y 的級別內完成。

對於數字y,根據百分位 將樣本分成組,並在這些子組內對樣本進行抽樣。

對於createDataPartition,通過組 參數設置百分位數。

我不明白爲什麼需要這個「平衡」的東西。我想我表面上理解它,但是任何額外的見解都會非常有幫助。

回答

5

這意味着,如果有一個數據集ds與10000行

set.seed(42) 
ds <- data.frame(values = runif(10000)) 

2 「類」 具有不相等的分配(9000 VS 1000)

ds$class <- c(rep(1, 9000), rep(2, 1000)) 
ds$class <- as.factor(ds$class) 
table(ds$class) 
# 1 2 
# 9000 1000 

可以創建一個樣品,它試圖維持因素類的比率/「平衡」。

dpart <- createDataPartition(ds$class, p = 0.1, list = F) 
dsDP <- ds[dpart, ] 
table(dsDP$class) 
# 1 2 
# 900 100