2014-11-14 77 views
2

有時,當將具有分類列的數據幀拆分爲測試和訓練集時,訓練集將不包含分類變量的所有級別。當你再訓練模型,並試圖預測測試集,預測將失敗:如何在測試和訓練集中拆分數據幀時保留所有級別的分類變量R

例如:

x <- data.frame(...) # data frame with columns with very dispersed categorical variables 
set.seed(123) 
smp_size <- floor(0.75 * nrow(x)) 
train_idx <- sample(seq_len(nrow(x)), size = smp_size) 
train_set <- x[train_idx, ] 
test_set <- x[-train_idx, ] 
m <- lm(some_formula, data=train_set) 
predict(m, newdata=test_set) 

Error in model.frame.default(Terms, newdata, na.action = na.action, xlev = object$xlevels) : 
    factor xxxx has new levels yyy ... 

有誰知道一個方便的方法來設置所有分類變量的水平訓練和測試都設置爲原始數據集中的水平?

謝謝。

回答

0

插入符函數createDataPartition()會嘗試處理您描述的問題。

鑑於你上面的例子,你應該能夠使用這種方式:

train_idx <- createDataPartition(y, times = 1, p = 0.75, list=F)

這裏是關於函數createDataPartition的R文件的一部分: 「隨機抽樣內完成當y是試圖平衡分裂內類別分佈的因素時,y的水平。「

相關問題