#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)