2017-12-09 4 views
0

나는 분류 모델에서 KNN 사용하려고하는 추적 코드가 :오류 : 'X'KNN 분류에 숫자 여야

library(dplyr) 
library(e1071) 
library(ggplot2) 
library(nnet) 
library(DMwR) 
library(rpart.plot) 
library(class) 

dat   <- read.csv("C:/Users/Ze/Desktop/HallowSet/train.csv",header = T,stringsAsFactors = F) 

needToSolve <- read.csv("C:/Users/Ze/Desktop/HallowSet/test.csv",header = T,stringsAsFactors = F) 

dat$color <- factor(dat$color) 
dat$type <- factor(dat$type) 

sp <- sample(1:nrow(dat),0.7*nrow(dat)) 
train <- dat[sp,] 
test <- dat[-sp,] 
full <- rbind(train,test) 



pre <-kNN(type ~ .,train ,test,k=3,norm=TRUE,type='class') 

그러나 때 코드는 다음 행에 도달합니다. colMeans (x, na.rm = TRUE)를 얻습니다. 'x'는 숫자 여야하고, 왜 그런 일이 일어나고 어떻게 해결할 수 있는지 누군가는 나에게 말할 수 있습니까? 탁신 전진.

STR (전체) :

'data.frame': 259 obs. of 12 variables: 
$ id   : int 62 699 23 172 701 70 809 393 465 839 ... 
$ bone_length : num 0.304 0.417 0.585 0.498 0.477 ... 
$ rotting_flesh: num 0.267 0.625 0.593 0.374 0.479 ... 
$ hair_length : num 0.527 0.329 0.681 0.58 0.404 ... 
$ has_soul  : num 0.387 0.28 0.936 0.512 0.545 ... 
$ color  : Factor w/ 6 levels "black","blood",..: 4 2 4 4 3 5 6 4 6 2 ... 
$ type   : Factor w/ 3 levels "Ghost","Ghoul",..: 3 1 2 3 2 1 1 2 1 3 ... 
$ bone_flesh : num 0.0812 0.2608 0.3467 0.1866 0.2282 ... 
$ bone_hair : num 0.16 0.137 0.398 0.289 0.192 ... 
$ bone_soul : num 0.118 0.117 0.547 0.255 0.26 ... 
$ flesh_hair : num 0.141 0.205 0.404 0.217 0.193 ... 
$ flesh_soul : num 0.103 0.175 0.555 0.192 0.261 ... 

답변

1

'색상'는 요인이다. kNN은 숫자 입력 만받습니다. 숫자 변수에서 Color 변수를 돌리거나 Color를 완전히 제거 할 수 있습니다.

dat$color = as.numeric(dat$color) 
+0

그러면 knn은 카테고리 변수를 요소로 사용한다는 의미에서 작동하지 않습니다. – warwcat

+0

그리고 텍스트 값에는 작동하지 않는다는 의미입니까? – warwcat

+0

그렇지 않습니다. knn은 범주 또는 텍스트가 아닌 숫자 차이로 작동합니다. – chachimouchacha