【问题标题】:naiveBayes and predict function not working in RnaiveBayes 和 predict 函数在 R 中不起作用
【发布时间】:2016-08-07 05:12:07
【问题描述】:

我正在使用以下 R 脚本对 twitter cmets(哈萨克语)进行情绪分析。 3000 (1500sad, 1500happy) cmets 用于训练集,1000 (happy sad mixed) cmets 用于测试集。一切正常,但最后,预测值显示都很开心,这是不对的。

我已经检查了每个函数,并且所有函数都在运行,直到 naiveBayes 函数。我检查了分类器值,它们是正确的。我认为naiveBayespredict 把事情搞砸了。

当我只使用一个快乐的评论(列表中的第一个)和 1500 个悲伤(负面)的 cmets 作为这段代码的训练集时,预测结果都是快乐的,我认为这主要是悲伤的。

classifier = naiveBayes(mat[1500:3000,], as.factor(sentiment_all[1500:3000]))

但是,当我对训练集使用所有sad或negative cmets时,预测结果都是sad。

classifier = naiveBayes(mat[1501:3000,], as.factor(sentiment_all[1501:3000]))

我花了几个小时,我完全迷失了问题所在。请帮我解决这个问题。

这是脚本:

setwd("Path")
happy = readLines("Path")
sad = readLines("Path")
happy_test = readLines("Path")
sad_test = readLines("Path")

tweet = c(happy, sad)
tweet_test= c(happy_test, sad_test)
tweet_all = c(tweet, tweet_test)
sentiment = c(rep("happy", length(happy) ), 
              rep("sad", length(sad)))
sentiment_test = c(rep("happy", length(happy_test) ), 
                   rep("sad", length(sad_test)))
sentiment_all = as.factor(c(sentiment, sentiment_test))

library(RTextTools)
library(e1071)

# naive bayes
mat= create_matrix(tweet_all, language="kazakh", 
                   removeStopwords=FALSE, removeNumbers=TRUE, 
                   stemWords=FALSE, tm::weightTfIdf)

mat = as.matrix(mat)

classifier = naiveBayes(mat[1:3000,], as.factor(sentiment_all[1:3000]))
predicted = predict(classifier, mat[3001:4000,]); predicted

【问题讨论】:

  • 没人评论吗?
  • 我怀疑 predict() 函数不能正常工作。当我运行 code predict = predict(classifier, mat[1:1,] , type="raw");预测 code 它返回 code happy sad [1,] 0.5 0.5 code 这意味着预测功能不起作用。

标签: r sentiment-analysis predict naivebayes


【解决方案1】:

您的问题非常基本,您正在设置错误。理想情况下,您希望为您的培训数据50-50分为阳性和否定件。由于天真贝叶斯分类器是如何工作的,它正试图减少熵。

我猜测,在您只有1个正评论的情况下,分类器能够以多个预测器非常轻松地最小化熵。

您使用绝对没有正面的CMET,您基本上说唯一的预测值/唯一可能结果是“悲伤”,这正是您的模型正在做的事情。

为您的主要问题,尝试使用不同的数据集不同。 你从哪里得到你的推文,它们是否充分多样化?

【讨论】:

  • 最初我尝试使用50-50次拆分,1500 Happy和1500个悲伤的CMET进行训练数据,并没有工作。我按照此源datascienceplus.com/…。它与他们的数据完美地工作,但是当我用哈萨克语用我的哈萨克语替换数据时,它只是停止工作。我怀疑它是一种语言问题。 span>
  • 您在哪里获取数据?我认为您的数据集可能会偏离。天真的贝父倾向于这样做。你能发布Roc曲线的结果吗? span>
  • 如何获取ROC曲线?你确定它不是语言问题吗?我的数据看起来像这个 span>
  • 尝试本指南r-bloggers.com/illustrated-guide-to-roc-and-auc。我不了解这类语言,但我认为它不太可能,它是最难的诊断。让我们先尝试更容易解决。另外,你能描述数据吗?正如推文的来源是什么?他们如何收集? span>
猜你喜欢
  • 2023-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-06
  • 1970-01-01
相关资源
最近更新 更多