混淆矩阵中的错误数据不能具有比参考更多的级别

时间:2016-11-09 21:19:38

标签: r

我已经训练过SVM模型。我现在正在尝试生成混淆矩阵并继续收到以下错误:

  

confusionMatrix.default(test.pred,   data_test $ FAVOURITES_COUNT):数据的级别不能超过   参考

这是代码

model <- svm(FAVOURITES_COUNT~., data = data_train);

test.pred <- predict(model, data_test,na.action = na.pass);

confusionMatrix(test.pred,data_test$FAVOURITES_COUNT)

我已经测试过它们是否具有相同的级别:

> identical (levels(test.pred), levels(data_test$FAVOURITES_COUNT))
[1] TRUE

preddata_test$FAVOURITES_COUNT的结构:

>  str(test.pred)  Named num [1:440] 1539 1516 1560 1560 1450 ...
>  - attr(*, "names")= chr [1:440] "1" "4" "11" "13" ...

> str(data_test$FAVOURITES_COUNT)
 int [1:440] 62 10725 84 84 19 99 54 84 84 84 ...

我认为这个问题与chr和int不同类型有关,但我不知道如何解决这个问题,还有另外一个问题,但如果我改变了它,它也没有提供解决方案chr to int

pred<-as.integer(format(round(predict(model,data_test))))

问题仍然存在。我该如何解决此错误

数据集

data

完整代码

rm(list=ls())
df <- read.csv("path/data.csv")
mydata <- df
mydata$ALTMETRIC_ID <- NULL


#library(caret)
split=0.60
trainIndex <- createDataPartition(mydata$FAVOURITES_COUNT, p=split, list=FALSE)
data_train <- mydata[ trainIndex,]
data_test <- mydata[-trainIndex,]
#library(e1071)

model <- svm(FAVOURITES_COUNT~., data = data_train);

test.pred <- predict(model, data_test,na.action = na.pass);

confusionMatrix(test.pred,data_test$FAVOURITES_COUNT)

2 个答案:

答案 0 :(得分:0)

面临相同的问题,因为该算法仅预测一个结果的结果,因此我们需要确保我们的测试集具有足够的两个结果类,例如N和O。

答案 1 :(得分:-1)

我有完全相同的问题。在创建train和test.IE之前,需要将因变量列favorites_counts转换为factor。

mydata$FAVOURITES_COUNT<-factor(mydata$FAVOURITES_COUNT)