应该是具有相同水平,误差和参考的因素

时间:2018-12-26 13:57:33

标签: r error-handling knn confusion-matrix

我有此代码(如下),需要使用CARET并将数据集拆分为数据集中所有数据的40%,该数据集应位于Trainset中,其余的应位于testset中;付款变量应在拆分之间平均分配,但是confusionmatrixline的代码会显示错误消息:

“错误:数据和参考应该是具有相同水平的因子。”

编辑:付款变量是一个二项式变量,因此0(否)和1(是)。 gdp只是数字

样本数据集:(现在不在这里如何制作表格)

payment    gdp 

0          838493

1         9303032

0          72738 

1        38300022

1         283283

如何解决此问题?

我的代码:

 `index <- createDataPartition(y = dataset$payment, p = 0.40, list = F)
 trainset <- dataset[index, ]
 testset <- dataset[-index, ]

payment_knn <- train(payment ~ gdp, method = "knn", data = trainset, 
trControl = trainControl(method = 'cv', number = 5))
predicted_outcomes <- predict(payment_knn, testset)
conMX_pay <- confusionMatrix(predicted_outcomes, testset$payment) 
conMX_pay `

1 个答案:

答案 0 :(得分:0)

这纯粹是出于说明目的。确保测试数据与火车数据相同。

df<-df %>% 
  mutate(payment=as.factor(payment),gdp=as.numeric(gdp))
metric<-"Accuracy"
control<-trainControl(method="cv",number = 10)
train_set<-createDataPartition(df$payment,p=0.8,list=F)
valid_me<-df[-train_set,]
train_me<-df[train_set,]
#Training
  set.seed(233)       

fit.knn<-train(payment~.,method="knn",data=train_me,metric=metric,trControl=control)
    validated<-predict(fit.knn,valid_me)
    confusionMatrix(validated,valid_me$payment)

鉴于您问题中的数据,此方法效果很好。警告,因为数据集太小。纯粹用于说明。 使用的数据:

payment      gdp
1       0   838493
2       1  9303032
3       0    72738
4       1 38300022
5       1   283283

干杯!