【机器学习】朴素贝叶斯算法|商品评论情感分析案例介绍及代码实现

文章目录

  • 朴素贝叶斯算法
    • 朴素贝叶斯算法介绍
      • 概率数学基础复习
      • 朴素贝叶斯算法-利用概率值进行分类的一种机器学习算法
        • 贝叶斯公式
        • 朴素贝叶斯算法
        • 拉普拉斯平滑系数
    • 朴素贝叶斯API
      • 案例
        • 分析流程
        • 数据集
        • 代码实现
        • 运行结果

朴素贝叶斯算法

朴素贝叶斯算法介绍

概率数学基础复习

  • 条件概率 : 事件A在另外一个事件B已经发生条件下的发生概率 P(A|B)
  • 联合概率 : 表示多个条件哦同时成立的概率 P(AB) = P(A) * P(B|A) = P(B) * P(A|B)

朴素贝叶斯算法-利用概率值进行分类的一种机器学习算法

贝叶斯公式
  • 贝叶斯公式

    在这里插入图片描述

    • P© 表示c出现的概率
    • p(W|C) 表示C条件下W出现的概率
    • P(W) 表示 W 出现的概率
  • 例子: 判断女神对你的喜欢情况
    在这里插入图片描述

P(C | W) = P(喜欢 | (程序员,超重))
P(W | C) = P((程序员,超重) | 喜欢)
P© = P(喜欢)
P(W) = P(程序员,超重)

  • 根据训练样本估计先验概率P©:
    • P© = P(喜欢) = 4/7
  • 根据条件概率P(W | C)调整先验概率:
    • P(W | C) = P((程序员,超重) | 喜欢) = 1/4
  • ''此时我们的后验概率
    • P(W | C) * P©为:P(W | C) * P© = P((程序员,超重) | 喜欢) * P(喜欢) = 4/7 * 1/4 = 1/7
  • 那么该部分数据占所有既为程序员,又超重的人中的比例是多少呢?
    • P(W) = P(程序员,超重) = P(程序员) * P(超重 | 程序员) = 3/7 * 2/3 = 2/7

在这里插入图片描述

朴素贝叶斯算法

朴素贝叶斯在贝叶斯基础上增加:特征条件独立假设,即:特征之间是互为独立的。
此时,联合概率的计算即可简化为:
P(程序员,超重|喜欢) = P(程序员|喜欢) * P(超重|喜欢)
P(程序员,超重) = P(程序员) * P(超重)

拉普拉斯平滑系数

在这里插入图片描述

  • 为了避免概率值为 0,我们在分子和分母分别加上一个数值,这就是拉普拉斯平滑系数的作用
    • α 是拉普拉斯平滑系数,一般指定为 1
    • Ni 是 F1 中符合条件 C 的样本数量
    • N 是在条件 C 下所有样本的总数
    • m 表示所有独立样本的总数

朴素贝叶斯API

sklearn.naive_bayes.MultinomialNB(alpha = 1.0
  • 朴素贝叶斯分类
  • alpha 拉普拉斯平滑系数

案例

  • 需求 已知商品评论数据,根据数据进行情感分类(好评、差评)

在这里插入图片描述

分析流程
# 1 获取数据
# 2 数据基本处理
    # 2-1 处理数据y
    # 2-2 加载停用词
    # 2-3 处理数据x 把文档分词
    # 2-4 统计词频矩阵 作为句子特征
    # 2-5 准备训练集测试集
# 3 模型训练
    # 4-1 实例化贝叶斯 添加拉普拉斯平滑参数
# 4 模型预测
# 5 模型评估
数据集

用.csv方式保存数据集

,内容,评价
0, 从编程小白的角度看,入门极佳。,好评
1,很好的入门书,简洁全面,适合小白。,好评
2,讲解全面,许多小细节都有顾及,三个小项目受益匪浅。,好评
3,前半部分讲概念深入浅出,要言不烦,很赞,好评
4,看了一遍还是不会写,有个概念而已,差评
5,中规中矩的教科书,零基础的看了依旧看不懂,差评
6,内容太浅显,个人认为不适合有其它语言编程基础的人,差评
7,破书一本,差评
8,适合完完全全的小白读,有其他语言经验的可以去看别的书,差评
9,基础知识写的挺好的!,好评
10,太基础,差评
11,略_嗦。。适合完全没有编程经验的小白,差评
12,真的真的不建议买,差评
13,很好很好,好评
14,买买买,好评
代码实现
import jieba
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt  # 绘图
from sklearn.feature_extraction.text import CountVectorizer  # 文本特征向量化
from sklearn.naive_bayes import MultinomialNB  # 多项式贝叶斯分类器


def demo01():
    data = pd.read_csv('../data/书籍评价.csv', encoding='gbk')

    # 数据预处理
    # data['评论标号'] = np.where(data['评价'] == '好评', 1, 0)
    # y = data['评论标号']
    y = data['评价']
    # 加载停用词
    stopwords = []
    with open('../data/stopwords.txt', 'r', encoding='utf-8') as f:
        lines = f.readlines()
        for line in lines:
            stopwords.append(line.strip())
        stopwords = list(set(stopwords))  # 去重

    # 处理数据 分词
    comment_list = [','.join(jieba.lcut(line)) for line in data['内容']]

    # 特征工程
    transfer = CountVectorizer(stop_words=stopwords)
    x = transfer.fit_transform(comment_list)
    mynames = transfer.get_feature_names_out()
    x = x.toarray()
    print(mynames)
    # 准备训练集测试集
    x_train = x[:10, :]
    y_train = y.values[:10]
    x_test = x[10:, :]
    y_test = y.values[10:]

    # 模型训练
    model = MultinomialNB().fit(x_train, y_train)

    # 模型预测
    y_predict = model.predict(x_test)

    print('预测结果:\n', y_predict)
    print('实际结果:\n', y_test)

    print('准确率:\n', model.score(x_test, y_test))


if __name__ == '__main__':
    demo01()
运行结果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/891205.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

1.4 使用Vite创建Vue 3项目

文章目录 什么是 ViteVite 的优点注意事项 创建 Vue 3 项目手动创建项目通过模板自动创建项目启动项目 Vue 3 项目目录结构Vue 3 项目运行过程项目运行过程项目关键文件 大家好,今天我们将一起学习如何使用 Vite 创建一个 Vue 3 项目。Vite 是一个现代的前端构建工具…

论文解析三: D2-Net 用于联合描述和检测局部特征的可训练CNN

目录 1.D2-Net摘要2.D2-Net关键点介绍3. Joint Detection and Description (联合检测和描述)3.1 Feature Extraction3.2 Feature Detection3.2.1 Hard feature detection (硬特征检测)3.2.1 Soft Feature Detection(软特征检测) 3…

Pandas处理时间序列之光谱分析与聚类

import matplotlib.pylab as plt %matplotlib inline import numpy as np from numpy import fft import pandas as pd 一、光谱分析 • 将时间序列分解为许多正弦或余弦函数的总和 • 这些函数的系数应该具有不相关的值 • 对正弦函数进行回归 光谱分析应用场景 基于光谱的…

comprehensive_tools之添加菜单

文章目录 安装 sass sass-loader新建Layout、styles修改配置文件App.vue修改 main.cssmain.ts删除components目录下的所有文件在router文件夹中新建routers.ts修改router/index.ts修改vite.config.tsAboutView.vue、ContactView.vue、HomeView.vueAboutView.vueContactView.vue…

2014年国赛高教杯数学建模A题嫦娥三号软着陆轨道设计与控制策略解题全过程文档及程序

2014年国赛高教杯数学建模 A题 嫦娥三号软着陆轨道设计与控制策略 嫦娥三号于2013年12月2日1时30分成功发射,12月6日抵达月球轨道。嫦娥三号在着陆准备轨道上的运行质量为2.4t,其安装在下部的主减速发动机能够产生1500N到7500N的可调节推力,…

二、PyCharm基本设置

PyCharm基本设置 前言一、设置中文汉化二、设置代码字体颜色三、设置鼠标滚轮调整字体大小四、修改 PyCharm 运行内存4.1 方式一4.1 方式二 五、显示 PyCharm 运行时内存六、设置代码模版配置的参数有: 七、PyCharm设置背景图总结 前言 为了让我们的 PyCharm 更好用…

rk3568,rk3588 , opencv 的了解。

网上的截图: 自动安装; 手动安装; 我只是 截图了一下,并没有实地的进行测试。

JAVA软开-面试经典题(7)-字符串常量池

字符串常量池 1.定义:字符串常量池(String Constant Pool),用于存放字符串常量的运行时内存结构,其底层的实现为Hashtable。 【注意】 在JDK1.6之前,字符串常量池中只会存放具体的String实例,在…

学生护眼大路灯哪种好啊?五款真正护眼的护眼大路灯分享

在贴吧、论坛、知乎等社区网站上,大家可能经常看到家长吐槽、讨论学生护眼大路灯哪种好啊这类话题。说是由于孩子们用了不适合的护眼大路灯后,出现了光线刺眼、疲劳感加重等诸多伤眼问题。作为测评师,我对这个问题非常关注,也特意…

prompt learning

prompt learning 对于CLIP(如上图所示)而言,对其prompt构造的更改就是在zero shot应用到下游任务的时候对其输入的label text进行一定的更改,比如将“A photo of a{obj}”改为“[V1][V2]…[Vn][Class]”这样可学习的V1-Vn的token…

UE5 C++: 插件编写06 | 移动文件时自动Fix up redirectors

目录 前言: 本文内容: WHY WHAT HOW 详细步骤 代码解析 1. Build.cs file中 2. QuickAssetAction.cpp中 IMPORTANT NOTES 中文解释: 使用 AssetToolsModule 来修复重定向器 使用 AssetRegistryModule 来过滤所有重定向器 使用 FMo…

功能强大且简单易用的实时算法视频监控,智慧快消开源了。

智慧快消视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。 基于多年的深度…

Ngin入门套餐

快速了解Nginx 一、代理1.1 正向代理1.2 反向代理1.3 正向代理和反向代理的区别 二、Nginx负载均衡策略2.1 轮询(Round Robin)2.2 加权轮询(Weighted Round Robin)2.3 IP 哈希(IP Hash)2.4 最少连接&#x…

Unite Shanghai 2024 团结引擎专场 | 团结引擎 OpenHarmony 工程剖析

在 2024 年 7 月 24 日的 Unite Shanghai 2024 团结引擎专场演讲中,Unity中国 OpenHarmony 技术负责人刘伟贤对团结引擎导出的 OpenHarmony 工程进行了细节剖析,详细讲解 XComponent 如何与引擎结合,UI 线程和引擎线程的关联以及 ts/ets 的代…

PostgreSQL学习笔记六:模式SCHEMA

模式(Schema) PostgreSQL中的模式(Schema)是一个命名的数据库对象集合,包括表、视图、索引、数据类型、函数、存储过程和操作符等。模式的主要作用是组织和命名空间数据库对象,使得同一个数据库中可以包含…

Linux命令——ls

命令格式:命令本身选项命令的指向目标 1.ls命令作用为列出目录下的内容 #lls后的选项有[-a,-l,-h]##注意ls与选项间应用空格隔开. 如下图为(ls命令体-l选项/根文件)的命令行 # ls -a 为:列出所有文件(包括隐藏文件&…

mysql 慢查询日志slowlog

慢查询参数 slow log 输出示例 # Time: 2024-08-08T22:39:12.80425308:00 #查询结束时间戳 # UserHost: root[root] localhost [] Id: 83 # Query_time: 2.331306 Lock_time: 0.000003 Rows_sent: 9762500 Rows_examined: 6250 SET timestamp1723127950; select *…

接口性能测试,这个还真有用啊。

一、概述 性能测试按照不同视角,可以分为以下几类: a. 用户视角的性能 用户角度感受到的网站响应速度的快和慢。从用户在浏览器输入网址/打开应用,到整个页面呈现给用户的耗时。包含了用户端发送请求,服务端收到并执行请求&…

【2024版】Pycharm安装教程+汉化教程(零基础小白都能学会)

PyCharm安装教程 点击右边链接→PyCharm安装包 以专业版为例,继续进行安装(安装内容没啥太大区别,所以两版本都适用) 2.打开解压后的文件夹,右击pycharm 2024.1.4 3.点击下一步。 4.更改安装位置,点击下一步…

海外云手机:出海电商养号智能化方案

随着出海电商的迅猛发展,使用海外云手机进行养号已经成为越来越多商家的新选择。尤其在社交电商推广和短视频引流方面,海外云手机不仅提高了流量的精准度,还助力商家实现业务的快速增长。本文将探讨海外云手机养号相较于传统模式的优势&#…