R中的分类/预测

Posted

技术标签:

【中文标题】R中的分类/预测【英文标题】:Classification/Prediction in R 【发布时间】:2013-04-04 01:48:55 【问题描述】:

我有 N 个文档的语料库,分类为 spam / no-spam。我正在按照标准程序对 R(code here) 中的数据进行预处理。预处理以 DocumenTermMatrix 结束,使用权重作为 tfidf

现在我想用我的模型对新文档进行分类。

如何计算单个新文档对应的DocumentVector(使用文档的tf和语料库的idfs)?我想避免为整个语料库重新计算DocumentTermMatrix

【问题讨论】:

【参考方案1】:

我过去也遇到过类似的问题,并且这个功能不包含在 tm 包中。 Ingo Feinerer 建议构建一个函数来获取 DocumentVector。该函数需要使用语料库和新文档中先前构建的 tm 或 dtm。首先以与语料库相同的方式预处理新文档,并使用单词和 tf.您可以合并 tm/dtm 中的单词(例如 tdm$dimnames$Terms),将新文档转换为具有与文档的 tf 值相同的语料库术语(简单合并)。然后以标准方式将tf除以语料库的idfs:

cs<-row_sums(tm>0)
 lnrs<-log2(nDocs(tm)/cs)
 tf*lnrs  # 

完成返回您的 DocumentVector。 然后,您可以在直接使用 SVM 进行预测时将向量用作 data.frame。

【讨论】:

【参考方案2】:

我不知道你用的是什么 svm 库,但是你的 SVM 模型似乎存储在 Corpus.svm 中——对吗?

对于新文档的预测,您可以遵循http://planatscher.net/svmtut/svmtut.html 任务 2 中描述的过程。如果您使用其他库,过程将类似。 IRIS 数据集也有实际示例。唯一的区别是您的新文档必须以与训练示例相同的方式处理(即删除停用词、tf-idf、...)

【讨论】:

问题其实和你最后一句“唯一的区别是你的新文档必须以与训练示例相同的方式处理(即删除停用词,tf-idf,... )”。如何获得这个 DocumentVector?使用的模型与问题无关。 在测试期间 - 您使用来自训练语料库的 idf 值,而 tf 仅取决于测试文章。更实际的是:bostondecision.com/2012/05/16/…、web.letras.up.pt/bhsmaia/EDV/apresentacoes/… 或 stats.stackexchange.com/questions/14219/…

以上是关于R中的分类/预测的主要内容,如果未能解决你的问题,请参考以下文章

在 R [重复] 中更改 glm 中的分类预测变量的级别

R语言使用R基础安装中的glm函数构建乳腺癌二分类预测逻辑回归模型分类预测器(分类变量)被自动替换为一组虚拟编码变量summary函数查看检查模型使用table函数计算混淆矩阵评估分类模型性能

R中的一类SVM分类

R中的NaiveBayes无法预测

如何使用 R 中经过训练的分类器预测新数据集?

在 R 中编写自定义分类器并预测函数