【问题标题】:should be factors with the same levels, error and reference应该是具有相同水平、误差和参考的因素
【发布时间】:2019-05-24 18:37:40
【问题描述】:

我有这段代码(如下),需要使用 CARET 并将数据集拆分为数据集中所有数据的 40% 应该在训练集中,其余的在测试集中;付款变量应该在拆分中平均分配,但是混淆矩阵行的代码给出了一个错误,上面写着:

“错误:数据和参考应该是同一水平的因素。”

编辑:支付变量是二项式变量,因此 0(否)和 1(是)。国内生产总值只是数字

示例数据集:(现在还不知道如何在此处制作表格)

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 `

【问题讨论】:

  • 首先不要使用matrix作为变量名。二、请使用dput(head(dataset,20))提供样本数据。
  • @NelsonGon 还不知道如何让它成为一张合适的桌子..
  • 您提供的样本数据不够。您可以使用 CTRL+K 进行编辑以格式化您的数据和/或代码。只需在我之前的评论中添加代码的输出即可。它应该以structure(bla bla bla) 开头
  • 这似乎是一个二元分类问题。是否将付款设置为一个因素?
  • 您需要确保训练和测试数据基本相同。

标签: r error-handling knn confusion-matrix


【解决方案1】:

这纯粹是为了说明目的。确保测试数据与训练数据相同。

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

干杯!

【讨论】:

  • 这对我有用!谢谢!我只是想知道指标
  • 嗨,很高兴它有效。如果有效,请接受这个答案。该指标只是几个指标之一。您可以了解有关 RMSE、MAE 等指标的更多信息。不幸的是,它太宽泛了,无法发表评论。
猜你喜欢
  • 2014-09-08
  • 2020-08-17
  • 2015-07-12
  • 1970-01-01
  • 2015-12-22
  • 2023-03-21
  • 2020-03-16
  • 2021-12-20
  • 2019-02-07
相关资源
最近更新 更多