我已经使用以下代码对我的数据集运行了Knn算法:
ran <- sample(1:nrow(Knn_data), 0.9*nrow(Knn_data))
nor <- function(x) { (x-min(x))/(max(x)-min(x))}
Knn_data_norm <- as.data.frame(lapply(Knn_data[,c(1,2,3,4,5,6,7)], nor))
summary(Knn_data_norm)
Knn_train <- Knn_data_norm[ran,]
Knn_test <- Knn_data_norm[-ran,]
Knn_target_category <- Knn_data[ran,8]
Knn_test_category <- Knn_data[-ran,8]
library(class)
pr <- knn(Knn_train, Knn_test, cl=Knn_target_category, k=3)
我一直收到错误:knn错误(Knn_train,Knn_test,cl = Knn_目标_类别,k = 3):'train'和'class'的长度不同如何更改类以使其长度相同?
1条答案
按热度按时间e4eetjau1#
如果没有数据,就无法重现结果。下面是使用R自带的
iris
数据集的代码。没有任何问题:15个中有14个预测正确。另请注意,
nrow(Knn_train)
等于length(Knn_target_category)
。您的错误消息表明您的数据不符合此条件。