R:RF模型中的混淆矩阵返回错误:data`和`reference`应该是具有相同级别的因子

时间:2018-06-06 15:04:40

标签: r random-forest r-caret confusion-matrix

我是R的新玩家,想要解决二进制分类任务。

数据集有因子变量LABELS有2个类:第一个 - 0,第二个 - 1.下一个图像显示它的实际头部: unbalanced_dataset TimeDate列 - 它只是索引。 类分布定义为:

print("the number of values with % in factor variable - LABELS:")
percentage <- prop.table(table(dataset$LABELS)) * 100
cbind(freq=table(dataset$LABELS), percentage=percentage)

课程分发的结果: classes

我也知道Slot2列是根据公式计算的:

Slot2 = Var3 - Slot3 + Slot4

在分析相关矩阵之后选择特征Var1,Var2,Var3,Var4。

在开始建模之前,我将数据集划分为训练和测试部件。 我尝试使用下一个代码构建用于二进制分类任务的随机森林模型:

rf2 <- randomForest(LABELS ~ Var1 + Var2  + Var3 + Var4, 
                    data=train, ntree = 100,
                    mtry = 4, importance = TRUE)
print(rf2)

结果是:

  Call:
     randomForest(formula = LABELS ~ Var1 + Var2  + Var3 + Var4,
     data = train, ntree = 100,      mtry = 4, importance = TRUE) 

 Type of random forest: classification
 Number of trees: 100
 No. of variables tried at each split: 4

 OOB estimate of  error rate: 0.16%

 Confusion matrix:
           0      1 class.error
    0 164957    341 0.002062941
    1    280 233739 0.001196484

当我试图预测时:

# Prediction & Confusion Matrix - train data
p1 <- predict(rf2, train, type="prob")
print("Prediction & Confusion Matrix - train data")
confusionMatrix(p1, train$LABELS)

# # Prediction & Confusion Matrix - test data
p2 <- predict(rf2, test, type="prob")
print("Prediction & Confusion Matrix - test data")
confusionMatrix(p2, test$LABELS)

我在R中收到错误:

[1] "Prediction & Confusion Matrix - train data"
Error: `data` and `reference` should be factors with the same levels.
Traceback:

1. confusionMatrix(p1, train$LABELS)
2. confusionMatrix.default(p1, train$LABELS)
3. stop("`data` and `reference` should be factors with the same levels.", 
 .     call. = FALSE)

此外,我已经尝试使用以下问题中的想法来修复它:

  1. Error in ConfusionMatrix the data and reference factors must have the same number of levels R CARET

  2. Error in Confusion Matrix : the data and reference factors must have the same number of levels

  3. 但在我的情况下它没有帮助。

    你可以帮我解决这个错误吗?

    我会感激任何想法和评论。谢谢你。

1 个答案:

答案 0 :(得分:0)

R中的错误:

Error: `data` and `reference` should be factors with the same levels.
通过更改预测功能中的类型参数来修复

,更正代码:

# Prediction & Confusion Matrix - train data
p1 <- predict(rf2, train, type="response")
print("Prediction & Confusion Matrix - train data")
confusionMatrix(p1, train$LABELS)

@Camille,非常感谢你)