недопустимый тип (символ) аргумента

Это сообщение об ошибке в теме. Я получаю эту ошибку, когда пытаюсь запустить классификатор naive.bayes. Вот сводка моих данных о поездах:

'data.frame':   7269 obs. of  193 variables:
 $ pid       : int  2 4 5 7 10 11 14 18 25 31 ...
 $ acquir    : int  0 0 0 0 1 1 0 0 0 0 ...
 $ addit     : int  0 0 0 0 2 2 0 0 0 0 ...
 $ agre      : int  0 0 0 0 0 0 0 0 0 0 ...
 $ agreement : int  0 0 0 0 0 0 0 0 0 0 ...
 $ also      : int  1 0 0 0 2 2 0 0 0 0 ...
 $ american  : int  0 0 0 0 0 0 0 0 0 0 ...
 $ announc   : int  0 0 0 0 0 0 0 0 0 0 ...
 $ annual    : int  0 0 0 0 0 0 0 0 2 0 ...
 $ approv    : int  0 3 0 0 0 0 0 0 0 0 ...
 $ april     : int  0 0 0 0 0 0 0 0 1 0 ...
 $ bank      : int  0 7 0 0 0 0 0 0 0 0 ...
 $ base      : int  0 0 0 0 0 0 0 0 0 0 ...
 .
 .
 $... all of them are integer, except the class column
 .
 .
 $ class     : Factor w/ 10 levels "acq","corn","crude",..: 1 1 4 4 9 1 4 3 1 4 ...

А это строка naive.bayes():

model <- naiveBayes(as.factor(class) ~ ., data = as.matrix(train), laplace = 3)

Может ли кто-нибудь сказать мне, почему это происходит?:

Error in sum(x) : invalid 'type' (character) of argument

person Whcrs    schedule 15.04.2016    source источник
comment
В конце концов ваши данные преобразуются в символы из-за as.matrix(train). Попробуйте model <- naiveBayes(class ~ ., data=train, laplace = 3) или, в конце концов, model <- naiveBayes(train$class ~ ., data=train[, -c("class")], laplace = 3)   -  person jogo    schedule 15.04.2016
comment
@jogo Это сработало! Спасибо! Я хочу принять твой ответ, но как?   -  person Whcrs    schedule 15.04.2016
comment
Я сделал это ответ сейчас. Сработал и первый вариант или только второй?   -  person jogo    schedule 15.04.2016
comment
Я только что попробовал первый. И это сработало. Другие не пробовал.   -  person Whcrs    schedule 15.04.2016


Ответы (1)


В конце концов ваши данные преобразуются в символы из-за as.matrix(train). Пытаться

model <- naiveBayes(class ~ ., data=train, laplace = 3)

или в конце концов

model <- naiveBayes(train$class ~ ., data=train[, -c("class")], laplace = 3)

Второй вариант более или менее похож на первый вариант. . в правой части формулы расширяется до «всех других переменных»; поэтому он исключает столбец class, упомянутый в LHS. (Дополнительная информация содержится в документации formula)

person jogo    schedule 15.04.2016