Проблема создания наивного байесовского классификатора с помощью RWeka - PullRequest
0 голосов
/ 12 апреля 2019

Я пытаюсь создать классификатор NB через RWeka, и он возвращает ошибку типа переменной.

У меня есть следующие переменные:

dtm_df.train как data.frame, содержащийследующие

      ask check state
1_10    0     1   bad
1_100   1     0   bad
1_11    2     1  good
1_13    0     0   bad
1_14    0     0  good
1_15    0     1   bad
1_16    0     1  good
1_17    0     0   bad
1_19    0     0   bad
1_2     2     0   bad

и class.formula в качестве формулы, содержащей: state ~ ask + check

При использовании

NB <- make_Weka_classifier("weka/classifiers/bayes/NaiveBayes")
classifier <- NB(class.formula ~ ., dtm_df.train)

Возвращает:

Error in model.frame.default(formula = class.formula ~ ., data = dtm_df.train) : object is not a matrix

Преобразование параметра данных dtm_df.train в матрицу не работает, поскольку для него требуется data.frame.

При попытке:

classifier <- NB(class.formula ~ ., dtm_df.train)

Возвращает

Error in .jcall(o, "Ljava/lang/Class;", "getClass") : 
  weka.core.UnsupportedAttributeTypeException: weka.classifiers.bayes.NaiveBayes: Cannot handle string class!

1 Ответ

0 голосов
/ 12 апреля 2019

Обнаружено, что причиной на самом деле был формат столбца состояния в наборе поездов dtm_df.train.

Решением было преобразование этого столбца в коэффициент с помощью:

dtm_df.train$state <- as.factor(dtm_df.train$state)

...