我有此代码(如下),需要使用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 `
答案 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
干杯!