2. 基本工作原理
3. 训练过程
在朴素贝叶斯中,首先需要从训练数据中估算先验概率和条件概率。下面是一个例子:
4. 预测过程
平滑技术(Laplace平滑)
在实际应用中,某些单词可能在某个类别中完全没有出现,这会导致其条件概率为0,进而影响预测结果。为了解决这个问题,我们可以使用Laplace平滑技术,通过给每个单词添加一个小的计数值(通常为1),确保每个单词的概率非零。
R语言实现
# 安装和加载相关库
install.packages("e1071")
library(e1071)
# 创建数据集
data <- data.frame(
message = c("dear friend", "lunch money money money", "dear sir", "money lunch", "dear friend lunch"),
label = c("normal", "spam", "normal", "spam", "normal")
)
# 提取特征(这里我们简单地使用词袋模型)
library(tm)
corpus <- Corpus(VectorSource(data$message))
dtm <- DocumentTermMatrix(corpus)
dtm <- as.matrix(dtm)
features <- data.frame(dtm)
# 训练朴素贝叶斯分类器
model <- naiveBayes(features, as.factor(data$label))
# 预测新消息
new_message <- c("dear friend lunch")
new_corpus <- Corpus(VectorSource(new_message))
new_dtm <- DocumentTermMatrix(new_corpus, control = list(dictionary = Terms(dtm)))
new_features <- as.matrix(new_dtm)
prediction <- predict(model, new_features)
print(prediction) # 输出分类结果