垃圾邮件过滤使用朴素贝叶斯分类器和 R 上的 e1071/klaR 包

机器算法验证 r 分类 朴素贝叶斯 e1071
2022-04-19 08:44:25

我正在考虑在 R 上使用带有 e1071 或 klaR 包的朴素贝叶斯分类器进行文本分类/垃圾邮件过滤。有没有很好的教程来描述这一点?我有点卡住了,因为我不确定将什么用作输入到 NaiveBayes 函数的数据。

非常感谢一些帮助,谢谢!

2个回答

klaR包中的NaiveBayes()函数遵循经典的R 接口,您可以将结果表示为其预测变量的函数,例如. 如果您的数据存储在 a 中,您可以使用点表示法在公式的 rhs 中输入所有预测变量:表示“作为被调用的所有其他变量的函数formulaspam ~ x1+x2+x3data.framespam ~ ., data=dfspamdata.framedf

这是一个玩具示例,使用在线提供的《统计学习要素》(Hastie 等人,Springer 2009,第 2 版)中spam讨论的数据集。这实际上是为了让您开始使用 R 函数,而不是使用 NB 分类器的方法方面。

data(spam, package="ElemStatLearn")
library(klaR)

# set up a training sample
train.ind <- sample(1:nrow(spam), ceiling(nrow(spam)*2/3), replace=FALSE)

# apply NB classifier
nb.res <- NaiveBayes(spam ~ ., data=spam[train.ind,])

# show the results
opar <- par(mfrow=c(2,4))
plot(nb.res)
par(opar)

# predict on holdout units
nb.pred <- predict(nb.res, spam[-train.ind,])

# raw accuracy
confusion.mat <- table(nb.pred$class, spam[-train.ind,"spam"])
sum(diag(confusion.mat))/sum(confusion.mat)

此类 ML 任务的推荐附加包是caret包。它提供了许多有用的工具来预处理数据、处理训练/测试样本、在相同数据上运行不同的分类器以及总结结果。它可从 CRAN 获得,并且有很多描述常见任务的小插曲。

有一本新书叫:电子邮件机器学习:垃圾邮件过滤和优先收件箱 http://www.amazon.com/Machine-Learning-Email-Filtering-Priority/dp/1449314309/ref=sr_1_1?s=books&ie= UTF8&qid=1323836340&sr=1-1

我浏览了内容,作者正在解释贝叶斯垃圾邮件过滤。

高温高压