当前位置: 首页 > ops >正文

机器学习——朴素贝叶斯练习题

一、

使用鸢尾花数据训练多项式朴素贝叶斯模型,并评估模型

代码展示: 

from sklearn.datasets import load_iris
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import MultinomialNBiris = load_iris()x_train,x_test,y_train,y_test = train_test_split(iris.data,iris.target,test_size=0.3,random_state=42)model = MultinomialNB()model.fit(x_train,y_train)y_pred = model.predict(x_test)
print("预测率:",accuracy_score(y_test,y_pred))

 结果展示:

预测率: 0.9555555555555556

二、

电影评论情感分析

‌项目背景‌:

你在一家电影评论网站工作,需要开发一个情感分析系统来自动分类用户评论是正面还是负面。使用Kaggle上的"IMDB Dataset of 50K Movie Reviews"数据集。

‌数据集链接‌:

IMDB Dataset of 50K Movie Reviews | Kaggle

‌练习题要求‌:

  1. 使用Pandas加载并预处理数据
  2. 使用Numpy进行特征工程
  3. 比较不同朴素贝叶斯变体(高斯、多项式、伯努利)的性能
  4. 使用matplotlib绘制性能比较图表

代码展示:

import re
import pandas as pd
from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB, MultinomialNB, BernoulliNB
import matplotlib.pyplot as pltdf = pd.read_csv("./data/IMDB Dataset.csv",encoding="utf-8")
print(df.head())
print(df.shape)df["sentiment"] = df["sentiment"].map({"positive":1,"negative":0})
# print(df.head())comment = df["review"]
# print(comment.head())comment_lists = []
for i in comment:# print(i)i = i.lower()i = re.sub(r'<.*?>', '', i)i = re.sub(r'[^a-zA-Z]', ' ', i)words = i.split()words = [word for word in words if len(word) > 2]comment_list = " ".join(words)comment_lists.append(comment_list)# print(comment_list)
df["clean_review"] = comment_liststransfer = TfidfVectorizer(max_features=5000,ngram_range=(1,2))
x = transfer.fit_transform(df["clean_review"])
y = df["sentiment"]x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.3,random_state=42)mu_model = MultinomialNB()
mu_model.fit(x_train,y_train)mu_y_pred = mu_model.predict(x_test)
mu_accuracy = accuracy_score(y_test,mu_y_pred)
print("多项式朴素贝叶斯:",mu_accuracy)be_model = BernoulliNB()
be_model.fit(x_train,y_train)be_y_pred = be_model.predict(x_test)
be_accuracy = accuracy_score(y_test,be_y_pred)
print("伯努利朴素贝叶斯:",be_accuracy)transfer = CountVectorizer(max_features=5000)
x = transfer.fit_transform(comment_lists)x_dense = x.toarray()x_train = x_dense[:4000, :]
good_or_bad = df["sentiment"].values
y_train = good_or_bad[:4000]
x_test = x_dense[4000:, :]
y_test = good_or_bad[4000:]ga_model = GaussianNB()
ga_model.fit(x_train,y_train)
ga_y_pred = ga_model.predict(x_test)
ga_accuracy = accuracy_score(y_test,ga_y_pred)
print("高斯朴素贝叶斯:",ga_accuracy)models = ['GaussianNB','MultinomialNB','BernoulliNB']
values = [ga_accuracy,mu_accuracy,be_accuracy]plt.bar(models,values,color=['blue','green','red']
)plt.title("Comparison of Naive Bayes Variants")
plt.ylabel("Accuracy")
plt.tight_layout()
plt.show()

结果展示:

多项式朴素贝叶斯: 0.8628666666666667
伯努利朴素贝叶斯: 0.8533333333333334
高斯朴素贝叶斯: 0.7214347826086956

 

 

 

 

http://www.xdnf.cn/news/6270.html

相关文章:

  • Docker部署单节点Elasticsearch
  • 互联网大厂Java求职面试实战:Spring Boot到微服务全景解析
  • 【C++】解析C++面向对象三要素:封装、继承与多态实现机制
  • 【漫话机器学习系列】260.在前向神经网络中初始权重(Initializing Weights In Feedforward Neural Networks)
  • 知从科技闪耀2025上海车展:以创新驱动未来出行新篇章
  • Logistics | Days of Inventory vs. Stock Days 【待续】
  • 2.安卓逆向2-adb指令
  • MIFARE DESFire Light 卡C#读写更改卡片密钥源码
  • SLAM定位与地图构建
  • 【专栏启动】开篇:为什么是 Django + Vue3?测试平台的技术选型与架构蓝图
  • 通用软件项目技术报告 - 第一章节检测 - 参考答案
  • DeepSeek执行流程加速指南:跨框架转换与编译优化的核心策略全解析
  • Day118 | 灵神 | 二叉树 | 删点成林
  • 缺乏对新技术的评估和引入机制,如何建立
  • 【C++】set和multiset的常用接口详解
  • 答题pk小程序道具卡的获取与应用
  • yarn任务筛选spark任务,判断内存/CPU使用超过限制任务
  • 【物联网】基于树莓派的物联网开发【3】——最新镜像下载和烧录
  • 【iOS】源码阅读(四)——isa与类关联的原理
  • 怎么样制作网站?
  • redis是内存级缓存吗
  • the request was rejected because no multipart boundary was found
  • Python-Django系列—日志
  • 中间件-MQ常见问题
  • TCP实现安全传输的核心机制 + TCP的报文讲解(全程图文讲解)
  • UEFI Spec 学习笔记---33 - Human Interface Infrastructure Overview(1)
  • 量化交易 - 网格交易策略实现与原理解析
  • 随机森林(Random Forest)
  • EasyExcel详解
  • 用户态和内核态