如何将训练和测试数据集划分为 R 中决策树的比率?

How to divide train and test datasets into ratios in R for a decision tree?

这是作业中的说明,我有两个单独的代码实现,但我无法解释说明的要求:

使用以下比例划分数据集;

a) 50 次训练:50 次测试

b) 75 次训练:25 次测试

c) 25 次训练:75 次测试

d) 85 次训练:15 次测试

sample.split 中的参数 SplitRatio 让我感到困惑,我已经检查了文档,但我不清楚它的作用,它看起来像是我确定 true 或 false 的成功百分比决策树。 问题: 我是否将 SplitRatio 设置为 0.5 以获得 50 列、50 列测试比率,或者我只是修改数据集本身以包含 50 行、75、25 等的随机种子? ?我在这里将 SplitRatio 设置为 0.9,并将数据集本身修改为仅包含 50 个条目。如果我将它更改为 0.5,它会显着改变决策树,如果我包含整个数据集而不是 50,也会发生同样的事情。

#---------------------------------
#    Ratio 50 Train : 50 Test
#---------------------------------

set.seed(1)
set50 <- sample(nrow(cancerdata), 50, replace=FALSE)
#set50

cancerset5050 <- cancerdata[set50,]
cancerset5050

?sample.split

spl = sample.split(cancerset5050$study.Diagnosis, SplitRatio = 0.9)
spl

dataTrain = subset(cancerset5050, spl==TRUE)
dataTest = subset(cancerset5050, spl==FALSE)

m5050 <- J48(as.factor(study.Diagnosis)~., dataTrain) 

summary(m5050)

## visualization the model
## use partykit package
if(require("partykit", quietly = TRUE)) plot(m5050)

dataTest.pred <- predict(m5050, newdata = dataTest)
table(dataTest$study.Diagnosis, dataTest.pred)

我认为您对sample.split函数的理解是正确的。如果你设置 SplitRatio = 0.5,那么你将有 50% 的样本在训练集中,剩下的 50% 在测试集中。

我认为在分离训练集和测试集之前,您应该将响应变量转换为因子。

也就是

cancerset5050$study.Diagnosis <- as factor(cancerset5050$study.Diagnosis)

然后继续训练和测试

dataTrain = subset(cancerset5050, spl==TRUE)
dataTest = subset(cancerset5050, spl==FALSE)

m5050 <- J48(study.Diagnosis ~., dataTrain)