这是作业中的说明,我有两个单独的代码实现,但我在解释说明的问题时遇到了麻烦:
使用以下比率来划分数据集;
a) 50列车:50测试
b) 75列车:25测试
c) 25列车:75测试
d) 85次列车:15次试验
sample中的SplitRatio参数。分裂让我感到困惑,我已经检查了文档,但我不清楚它的作用,它看起来像是我决定决策树的真或假的成功百分比。问题:我是否让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)