R 混淆矩阵参数改变输出

R 混淆矩阵参数改变输出,r,machine-learning,random-forest,confusion-matrix,R,Machine Learning,Random Forest,Confusion Matrix,我运行了一个预测随机森林模型。当我运行下面的代码时,我得到了两个不同的混淆矩阵-唯一的区别是我在预测函数中使用data=train,还有一个我只使用“train”。为什么这会造成如此大的差异?召回一辆车的情况要糟糕得多 conf.matrix <- table(train$Status,predict(fit2,train)) Pred:Churn Pred:Current Actual:Churn 2543 984

我运行了一个预测随机森林模型。当我运行下面的代码时,我得到了两个不同的混淆矩阵-唯一的区别是我在预测函数中使用data=train,还有一个我只使用“train”。为什么这会造成如此大的差异?召回一辆车的情况要糟糕得多

conf.matrix <- table(train$Status,predict(fit2,train))

               Pred:Churn Pred:Current
  Actual:Churn         2543          984
  Actual:Current         44        27206

conf.matrix <- table(train$Status,predict(fit2,data = train))

                Pred:Churn Pred:Current
  Actual:Churn         1609         1918
  Actual:Current        464        26786

conf.matrix第二个示例中的
data
参数被忽略,因为正确的参数名称是
newdata
as@mtoto和@agenis。如果没有
新数据
预测.randomForest
将返回模型的包外预测

这就是您想要做的。

从我的帖子上

请注意,两者之间存在差异

predict(model)

predict(model, newdata=train)
获取训练数据集的预测时。第一个选项从随机林中获取现成的预测。当比较训练数据上的预测值和实际值时,这通常是您想要的

第二种方法将训练数据视为一个新的数据集,并沿每棵树运行观察结果。这将导致预测和实际之间的人为紧密关联,因为RF算法通常不会修剪单个树,而是依赖树的集合来控制过度拟合。所以,如果你想得到训练数据的预测,就不要这样做


该参数的名称是
newdata=
而不是
data=
。好的,谢谢,那么为什么data=会工作并影响结果呢?您可能调用的
predict()
predict.randomForest()
不同,后者具有
data=
参数。啊,好的,谢谢。所以当我想用新数据测试模型时,我应该使用newdata=test?