0

我是编程语言 R 的新手。

我想设置一个朴素贝叶斯分类器,它将活动的描述分类为 0 或 1(取决于活动是否成功)。

数据集可以在这里找到。

我的代码如下:

library(tidyverse)
library(tidymodels)
library(textrecipes)
library(discrim)

df <- read_csv("data/kickstarter.csv.gz")

# create categorical from numerical data
df$state <- as.factor(df$state)

# do not use the whole data frame
df <- df %>% slice(1:1e5)
df <- filter(df, nchar(blurb) >= 15)

# split into training and test set
df_split <- initial_split(df)
df_train <- training(df_split)
df_test <- testing(df_split)

# create folds for cross validation
folds <- vfold_cv(df_train)

# pre-process texts
rec <- recipe(state ~ blurb, data = df) %>%
  step_tokenize(blurb) %>%
  step_tokenfilter(blurb, max_tokens = 1e3)

# transform to numerical data
rec <- rec %>% step_tfidf(blurb)

# specify model
nb_spec <- naive_Bayes() %>%
  set_mode("classification") %>%
  set_engine("naivebayes")

# create workflow
nb_wf <- workflow() %>%
  add_recipe(rec) %>%
  add_model(nb_spec)

# fit & do cross validation
nb_rs <- fit_resamples(
  nb_wf,
  folds,
  control = control_resamples(save_pred = TRUE)
)

# look at accuracy
nb_rs_metrics <- collect_metrics(nb_rs)
nb_rs_metrics

事实证明,分类器的准确率只有 0.52。但是,我不知道如何解决这个问题。有谁知道我的错误可能在哪里?

已经谢谢你了!

4

0 回答 0