我只想对k为3时的情况进行kNN分类,利用训练集对因变量“糖尿病”进行预测,并计算其准确性。
但是我面对错误信息
Error in knn(train = TrainXNormDF, test = ValidXNormDF, cl = MLdata2[, : 'train' and 'class' have different lengths
我不能用get方法解决这个问题
for(i in ((length(MLValidY) + 1):length(TrainXNormDF)))+(MLValidY = c(MLValidY, 0))我能为它做些什么?请帮帮忙。
我的代码如下所示
install.packages("mlbench")
install.packages("gbm")
library(mlbench)
library(gbm)
data("PimaIndiansDiabetes2")
head(PimaIndiansDiabetes2)
MLdata <- as.data.frame(PimaIndiansDiabetes2)
head(MLdata)
str(MLdata)
View(MLdata)
any(is.na(MLdata))
sum(is.na(MLdata))
MLdata2 <- na.omit(MLdata)
any(is.na(MLdata2))
sum(is.na(MLdata2))
View(MLdata2)
MLIdx <- sample(1:3, size = nrow(MLdata2), prob = c(0.6, 0.2, 0.2), replace = TRUE)
MLTrain <- MLdata2[MLIdx == 1,]
MLValid <- MLdata2[MLIdx == 2,]
MLTest <- MLdata2[MLIdx == 3,]
head(MLTrain)
head(MLValid)
head(MLTest)
str(MLTrain)
str(MLValid)
str(MLTest)
View(MLTestY)
MLTrainX <- MLTrain[ , -9]
MLValidX <- MLValid[ , -9]
MLTestX <- MLTest[ , -9]
MLTrainY <- as.data.frame(MLTrain[ , 9])
MLValidY <- as.data.frame(MLValid[ , 9])
MLTestY <- as.data.frame(MLTest[ , 9])
View(MLTrainX)
View(MLTrainY)
library(caret)
NormValues <- preProcess(MLTrainX, method = c("center", "scale"))
TrainXNormDF <- predict(NormValues, MLTrainX)
ValidXNormDF <- predict(NormValues, MLValidX)
TestXNormDF <- predict(NormValues, MLTestX)
head(TrainXNormDF)
head(ValidXNormDF)
head(TestXNormDF)
install.packages('FNN')
library(FNN)
library(class)
NN <- knn(train = TrainXNormDF,
test = ValidXNormDF,
cl = MLValidY,
k = 3)谢谢
发布于 2022-02-10 14:48:43
cl变量与train变量的长度不同。MLValidY只有74个观测值,而TrainXNormDF只有224个。
cl应该为您的培训集中的每一行提供真正的分类。
此外,cl是一个data.frame而不是向量。
尝试以下几点:
NN <- knn(train = TrainXNormDF,
test = ValidXNormDF,
cl = MLTrainY$`MLTrain[, 9]`,
k = 3)发布于 2022-02-10 15:00:17
正如@rw2 2所指出的,它是cl的长度。我想你是想用MLtrainY,而不是MLvalidY。当您有单个列数据帧时,仍然会遇到形状问题(将其转换为向量)。您可以返回以确保您在这里使用正确的内容,如下所示:
NN <- knn(train = TrainXNormDF,
test = ValidXNormDF,
cl = MLdata2[MLIdx == 1,]$diabetes, # shape no longer an issue
k = 3)https://stackoverflow.com/questions/71066938
复制相似问题