误差在混淆矩阵:所述数据和参考因素必须具有相同数量级的误差在混淆矩阵:所述数据和参考因素必须具有相同

2019-05-12 02:56发布

我训练有R插入符的线性回归模型。 现在我想产生混淆矩阵和不断收到以下错误:

在confusionMatrix.default错误(预解码,测试$决赛):数据和参考因素必须具有相同数量级的

EnglishMarks <- read.csv("E:/Subject Wise Data/EnglishMarks.csv", 
header=TRUE)
inTrain<-createDataPartition(y=EnglishMarks$Final,p=0.7,list=FALSE)
training<-EnglishMarks[inTrain,]
testing<-EnglishMarks[-inTrain,]
predictionsTree <- predict(treeFit, testdata)
confusionMatrix(predictionsTree, testdata$catgeory)
modFit<-train(Final~UT1+UT2+HalfYearly+UT3+UT4,method="lm",data=training)
pred<-format(round(predict(modFit,testing)))              
confusionMatrix(pred,testing$Final)

产生混淆矩阵时出现错误。 该水平是在这两个对象是相同的。 我无法弄清楚的问题是什么。 它们的结构和层次如下。 他们应该是相同的。 任何帮助将不胜感激它的让我破解!

> str(pred)
chr [1:148] "85" "84" "87" "65" "88" "84" "82" "84" "65" "78" "78" "88" "85"  
"86" "77" ...
> str(testing$Final)
int [1:148] 88 85 86 70 85 85 79 85 62 77 ...

> levels(pred)
NULL
> levels(testing$Final)
NULL

Answer 1:

table(pred)table(testing$Final) 。 你会看到,有在从未预测(即从未在目前的测试组至少一个数量pred )。 这是什么意思,为什么“不同数量级的。” 还有就是要解决这个问题,一个定制函数的例子在这里 。

然而,我发现,这招能正常工作:

table(factor(pred, levels=min(test):max(test)), 
      factor(test, levels=min(test):max(test)))

它应该给你一模一样的混淆矩阵与功能。



Answer 2:

confusionMatrix(pred,testing$Final)

每当你尝试建立一个混淆矩阵,确保两个真实值和预测值系数的数据类型。

这里既有人口研究和testing$Final的类型必须为factor 。 相反,检查水平,检查这两个变量的类型和转换他们,如果他们不计算在内。

这里testing$final的类型为int 。 CONVER它因素,然后建立混淆矩阵。



Answer 3:

像下面的东西似乎为我工作。 我们的想法是类似@nayriz的:

confusionMatrix(
  factor(pred, levels = 1:148),
  factor(testing$Final, levels = 1:148)
)

关键是要确保因子水平的比赛。



Answer 4:

您正在使用的回归,并试图产生混淆矩阵。 我相信混淆矩阵用于分类任务。 一般人用R ^ 2和RMSE指标。



Answer 5:

我遇到过同样的问题。 我想这发生,因为正如我预期的数据说法并没有铸成的因素。 尝试:

confusionMatrix(pred,as.factor(testing$Final))

希望能帮助到你



文章来源: Error in Confusion Matrix : the data and reference factors must have the same number of levels