Проблема с созданием наивного байесовского классификатора с использованием RWeka

#r #dataframe #matrix #formula #rweka

#r #фрейм данных #матрица #формула #rweka

Вопрос:

Я пытаюсь создать 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
  

Преобразование параметра data dtm_df.train в matrix не работает, поскольку для этого требуется 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:

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

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

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