当y不是一个因素时,R的插入符号训练错误

时间:2014-07-12 00:41:03

标签: r knn r-caret categorical-data training-data

我正在使用R-studio并使用kaggle的forest cover data并在尝试使用插入符号中的knn3函数时不断出错。这是我的代码:

library(caret)
train <- read.csv("C:/data/forest_cover/train.csv", header=T)
trainingRows <- createDataPartition(train$Cover_Type, p=0.8, list=F)
head(trainingRows)
train_train <- train[trainingRows,]
train_test <- train[-trainingRows,]

knnfit <- knn3(train_train[,-56], train_train$Cover_Type)

最后一行在控制台中给出了这个:

Error in knn3.matrix(x, y = y, k = k, ...) : y must be a factor

1 个答案:

答案 0 :(得分:3)

如错误消息所述,y必须是一个因子(此处,y是函数的第二个参数的名称)。在R中,因子变量用于表示分类数据。您可以将y转换为factor(y)的因子,但它只会为您的数据设置1:7级别。如果您想为您的因子提供更有意义的值,请尝试

train$Cover_Type <- factor(train$Cover_Type, levels=1:7, 
    labels=c("Spruce/Fir","Lodgepole Pine","Ponderosa Pine",
    "Cottonwood/Willow","Aspen",
    "Douglas-fir","Krummholz"))

这将使您的功能更快乐,并在结果中为您提供更多有用的标签