我使用R中的rpart包从训练数据构建了一个决策树。现在我有更多的数据,我想用这些数据来检验模型。我希望逻辑上/迭代地执行以下操作:
for each datapoint in new data run point thru decision tree, branching as appropriate examine how tree classifies the data point determine if the datapoint is a true positive or false positive
我在R中如何实现这一点?
回答:
要使用这个方法,我假设你已经将训练集分成了一个子训练集和一个测试集。
要创建训练模型,你可以使用:
model <- rpart(y~., traindata, minbucket=5) # 我猜你已经这样做了。
要将其应用于测试集:
pred <- predict(model, testdata)
你会得到一个预测结果的向量。
在你的训练测试数据集中,你也有“真实”的答案。假设这是训练集中的最后一列。
简单地将它们等同起来就会得到结果:
pred == testdata[ , last] # 其中'last'等于'y'的索引
当元素相等时,你会得到一个TRUE,当你得到一个FALSE时,这意味着你的预测是错误的。
pred + testdata[, last] > 1 # 给出真阳性,因为这意味着两个向量都是1pred == testdata[, last] # 给出那些正确的
你可能有兴趣看看你有多少百分比是正确的:
mean(pred == testdata[ , last]) # 这里TRUE将计为1,FALSE将计为0