提示信息

Python中朴素贝叶斯算法的详细代码解析

半世晨晓 已关注

朴素贝叶斯(Naive Bayes)是一种基于贝叶斯定理的简单有效的分类算法。它常用于文本分类任务,如垃圾邮件检测、情感分析等等。朴素贝叶斯假设特征之间是条件独立的,这使得它实现和学习都非常简单。

下面是一个使用Python实现朴素贝叶斯分类器的简单代码示例。这个例子将文本分类作为应用场景。为了简洁起见,使用的是多项式朴素贝叶斯(Multinomial Naive Bayes),这非常适合用于文本分类。

  1. from sklearn.feature_extraction.text import CountVectorizer
  2. from sklearn.naive_bayes import MultinomialNB
  3. from sklearn.model_selection import train_test_split
  4. from sklearn import metrics
  5. # 示例数据集
  6. # 文本和对应的类别标签
  7. data = [
  8. ("I love this movie", "positive"),
  9. ("This movie is terrible", "negative"),
  10. ("Amazing film, I will watch it again", "positive"),
  11. ("I wouldn't recommend this movie", "negative"),
  12. ]
  13. # 分离文本和标签
  14. texts, labels = zip(*data)
  15. # 将文本转化为词频向量
  16. vectorizer = CountVectorizer()
  17. X = vectorizer.fit_transform(texts)
  18. # 将数据集划分为训练集和测试集
  19. X_train, X_test, y_train, y_test = train_test_split(X, labels, test_size=0.2, random_state=42)
  20. # 初始化多项式朴素贝叶斯分类器
  21. clf = MultinomialNB()
  22. # 训练模型
  23. clf.fit(X_train, y_train)
  24. # 进行预测
  25. y_pred = clf.predict(X_test)
  26. # 输出预测结果
  27. print("Predicted:", y_pred)
  28. print("Actual:", y_test)
  29. # 计算模型精度
  30. accuracy = metrics.accuracy_score(y_test, y_pred)
  31. print("Accuracy:", accuracy)
  32. # 打印分类报告
  33. print(metrics.classification_report(y_test, y_pred))

代码解析:

  1. 数据准备:我们首先准备了一些示例文本数据以及它们对应的类别标签(正面和负面)。

  2. 特征提取:我们使用CountVectorizer将文本数据转化为词频矩阵,这是一种常见的文本特征表示方法。

  3. 训练/测试集划分:使用train_test_split函数将数据集划分为训练集和测试集。

  4. 模型初始化和训练:创建一个MultinomialNB实例,并用训练集数据来训练模型。

  5. 模型预测和评估:在测试集上进行预测,并计算模型的准确性、精度、召回率、以及F1-score等性能指标。这些信息由classification_report函数提供。

  6. 结果输出:输出预测的结果以及实际的标签,以便于比较。

这个简化的流程展示了如何使用朴素贝叶斯算法进行文本分类。在实际应用中,数据预处理可能更加复杂,比如需要去除停用词、进行文本标准化等。同时,用于分类的特征表示方式也有多种选择,除了词频,还可以使用TF-IDF等。

    遇到难题? "AI大模型GPT4.0、GPT" 是你的私人解答专家! 点击按钮去提问......
半世晨晓 关注 已关注

最近一次登录:2024-11-20 21:33:44   

暂时还没有签名,请关注我或评论我的文章
×
免费图表工具,画流程图、架构图