如何根据R中的决策树模型测试数据?

ber*_*436 3 verification r machine-learning decision-tree

我使用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
Run Code Online (Sandbox Code Playgroud)

我如何在R中做到这一点?

Pas*_*ten 6

为了能够使用它,我假设您将训练集分成子集训练集和测试集.

要创建训练模型,您可以使用:

model <- rpart(y~., traindata, minbucket=5)   # I suspect you did it so far.
Run Code Online (Sandbox Code Playgroud)

要将其应用于测试集:

pred <- predict(model, testdata) 
Run Code Online (Sandbox Code Playgroud)

然后,您将获得预测结果的向量.

在您的训练测试数据集中,您也有"真实"的答案.让我们说一下训练集中的最后一列.

简单地将它们等同将产生结果:

pred == testdata[ , last]  # where 'last' equals the index of 'y'
Run Code Online (Sandbox Code Playgroud)

当元素相等时,你会得到一个真,当你得到一个假,这意味着你的预测是错误的.

pred + testdata[, last] > 1 # gives TRUE positive, as it means both vectors are 1
pred == testdata[, last]    # gives those that are correct
Run Code Online (Sandbox Code Playgroud)

看看你有多少正确率可能会很有趣:

mean(pred == testdata[ , last])    # here TRUE will count as a 1, and FALSE as 0
Run Code Online (Sandbox Code Playgroud)

  • 自从这个答案写完以来,`rpart`库大概已经改变了.我不得不使用以下内容使其工作:`pred < - predict(model,newdata = testdata,type ='class')`(否则你得到一个完整的概率矩阵). (5认同)