2013-11-14 25 views
0

我目前使用R通過使用隨機森林迴歸來執行特徵選擇。我想70:30分割我的數據,這很容易做到。但是,我希望能夠這樣做10次,每次10次獲得與之前不同的一組示例。如何分割數據70:30並在每次分割時獲取不同範圍的數據

> trainIndex<- createDataPartition(lipids$RT..seconds., p=0.7, list=F) 
> lipids.train <- lipids[trainIndex, ] 
> lipids.test <- lipids[-trainIndex, ] 

這就是我現在正在做的事情,它對我的​​數據70:30分裂很有效。但是當我再次執行此操作時,我的訓練集中有70%的數據相同,而我的測試數據中也有相同數據的30%。我知道這是createDataPartition的工作原理,但是有什麼方法可以讓我在下次執行時獲得不同的70%的數據?

感謝

+0

我還沒有使用'createDataPartition',但不能只使用'sample'來獲得隨機索引值和這些索引的子集嗎? – TheComeOnMan

+0

將來,請包含您使用的軟件包,因爲'createDataPartition'不在base R.您是否找到'times'參數? – Justin

+0

@Codoremifa我還沒有遇到過示例,但它似乎是我的問題的答案。謝謝! – user2062207

回答

2

在未來,請包括自createDataPartition您正在使用的包是不是在基地R.我假設你正在使用的caret包。如果這是正確的,你是否發現了times的論點?

trainIndex<- createDataPartition(lipids$RT..seconds., p=0.7, list=F, times=10) 

正如評論所說,你可以很簡單地使用sample

sample(seq_along(lipids$RD..seconds), as.integer(0.7 * nrow(lipids))) 

而且sample每次運行時會選擇不同的隨機種子,所以你會得到不同的順序。

+0

會對不起!我正在使用脫字符號。我遇到了時代的爭論,但是當我這樣做的時候: - 'lipids.train < - lipid [trainIndex,]' 我將70%的數據全部集中在一起,我不知道如何使用使用10個不同的數據子集創建10次隨機森林模型的時間參數,但示例方法似乎完美地工作。感謝您的幫助! – user2062207

0
library(dplyr) 
n <- as.integer(length(data[,1])*0.7) 
data_70 <- data[sample(nrow(data),n), ] 
data_30 <- anti_join(data, data_70)