出了点问题;所有精度指标值均丢失; IRIS数据集,KNN

问题描述

iris_data$Species = as.factor(iris_data$Species)
set.seed(1245)
iris_data_indices <- createDataPartition(y = iris_data$Species,p = 0.8,list = FALSE,times = 1)
test_iris_set <- iris_data[-iris_data_indices,]
training_iris_set <- iris_data[iris_data_indices,]
levels(training_iris_set$Species) <- make.names(levels(factor(training_iris_set$Species)))
levels(test_iris_set$Species) <- make.names(levels(factor(test_iris_set$Species)))

training_control_iris <- trainControl(method = "cv",number = 10,repeats = 5)
metric = "Accuracy"

iris_data_knn <- train(Species~.,data = training_iris_set,method = "knn",preProcess = c("center","scale"),metric = metric,tr_control = training_control_iris)

这是我的代码。每当我运行它时,都会出现以下错误

Something is wrong; all the Accuracy metric values are missing:
    Accuracy       Kappa    
 Min.   : NA   Min.   : NA  
 1st Qu.: NA   1st Qu.: NA  
 Median : NA   Median : NA  
 Mean   :NaN   Mean   :NaN  
 3rd Qu.: NA   3rd Qu.: NA  
 Max.   : NA   Max.   : NA  
 NA's   :3     NA's   :3    
Error: Stopping

一些警告消息:

Warning messages:
1: predictions Failed for Resample01: k=5 Error in knn3Train(train = structure(c(5.1,4.9,4.7,: 
  unused argument (tr_control = list("none",25,NA,"grid",0.75,NULL,1,TRUE,FALSE,"final",function (data,lev = NULL,model = NULL) 
{
    if (is.character(data$obs)) data$obs <- factor(data$obs,levels = lev)
    postResample(data[,"pred"],data[,"obs"])
},"best",list(0.95,3,5,19,10,0.9),c(FALSE,FALSE),list(5,0.05,"gls",TRUE),TRUE))

2: predictions Failed for Resample01: k=7 Error in knn3Train(train = structure(c(5.1,TRUE))

为什么我得到这个错误。我还尝试将train()函数中的语法更改为:training_iris_set $ Species,数据= training_iris_set,但仍然返回相同的错误。 当我在train()函数中将方法参数更改为“ lda”时,我没有错误,然后创建了经过训练的另一个knn模型,也没有错误代码如下:

iris_data_knn <- train(Species~.,method = "lda",tr_control = training_control_iris)

set.seed(1245)
fit.knn <- train(Species~.,trControl = training_control_iris)

有人可以解释一下为什么只有在使用lda之后它才能工作吗?谢谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)