2
我使从模型的预测和这样有没有什么办法可以很容易地用R预测对象来计算错误分类率?
> prediction = predict (m, df)
,它返回一个因子可变,我可以转换为行向量数据帧中的R的数据帧。然后,我可以将该行向量数据帧与正确结果的行向量合并,然后手动计算两个数据向量发散的位置。
有没有更简单的方法来做到这一点?
我使从模型的预测和这样有没有什么办法可以很容易地用R预测对象来计算错误分类率?
> prediction = predict (m, df)
,它返回一个因子可变,我可以转换为行向量数据帧中的R的数据帧。然后,我可以将该行向量数据帧与正确结果的行向量合并,然后手动计算两个数据向量发散的位置。
有没有更简单的方法来做到这一点?
有很多方法可以解决这个问题,而且您没有提供太多的信息。以下是获得这种信息的几个简单的例子:
> library(randomForest)
> data(imports85)
> model <- randomForest(bodyStyle~curbWeight+cityMpg ,data=imports85)
>
> #contingency table
> (tab <- table(predict(model,imports85),imports85$bodyStyle))
convertible hardtop hatchback sedan wagon
convertible 6 0 0 0 0
hardtop 0 7 0 0 0
hatchback 0 1 63 4 3
sedan 0 0 7 92 1
wagon 0 0 0 0 21
> #error per class
> diag(prop.table(tab,1))
convertible hardtop hatchback sedan wagon
1.0000000 1.0000000 0.8873239 0.9200000 1.0000000
> #overall error
> mean(predict(model,imports85) == imports85$bodyStyle)
[1] 0.9219512
虽然我一般会建议使用像caret()
,可以在训练进行交叉验证,并与这些结果提供给您。
在你显示的表格中,是列的预测值和行的实际值,如混淆矩阵http://en.wikipedia.org/wiki/Confusion_matrix – ahandler
当使用table()两个选项,第一个输入映射到行,第二个输入映射到行,第二个输入尝试像'table(1:5,6:10)'这样的更清晰。所以不行,不是在上面的例子中,而是根据需要切换顺序。 – David