C1W2.LAB.Visualizing Naive Bayes

理论课:C1W2.Sentiment Analysis with Naïve Bayes

文章目录

  • 导入包
  • Calculate the likelihoods for each tweet
  • Using Confidence Ellipses to interpret Naïve Bayes

理论课: C1W2.Sentiment Analysis with Naïve Bayes

导入包

在下面的练习中,将使用朴素贝叶斯特征对推文数据集进行可视化检查,重点理解对数似然比=一对可输入机器学习算法的数字特征。

最后,将介绍置信度椭圆的概念,作为直观表示朴素贝叶斯模型的工具。

import numpy as np # Library for linear algebra and math utils
import pandas as pd # Dataframe libraryimport matplotlib.pyplot as plt # Library for plots
from utils import confidence_ellipse # Function to add confidence ellipses to charts

Calculate the likelihoods for each tweet

对于每条推文,我们都计算了该推文的正面可能性和负面可能性。下面给出可能性比率的分子和分母。
l o g P ( t w e e t ∣ p o s ) P ( t w e e t ∣ n e g ) = l o g ( P ( t w e e t ∣ p o s ) ) − l o g ( P ( t w e e t ∣ n e g ) ) log \frac{P(tweet|pos)}{P(tweet|neg)} = log(P(tweet|pos)) - log(P(tweet|neg)) logP(tweetneg)P(tweetpos)=log(P(tweetpos))log(P(tweetneg))
p o s i t i v e = l o g ( P ( t w e e t ∣ p o s ) ) = ∑ i = 0 n l o g P ( W i ∣ p o s ) positive = log(P(tweet|pos)) = \sum_{i=0}^{n}{log P(W_i|pos)} positive=log(P(tweetpos))=i=0nlogP(Wipos)
n e g a t i v e = l o g ( P ( t w e e t ∣ n e g ) ) = ∑ i = 0 n l o g P ( W i ∣ n e g ) negative = log(P(tweet|neg)) = \sum_{i=0}^{n}{log P(W_i|neg)} negative=log(P(tweetneg))=i=0nlogP(Wineg)
以上公式对应的代码本次实验不做要求,但运行得到的结果放在:'bayes_features.csv’文件中。

data = pd.read_csv('./data/bayes_features.csv'); # Load the data from the csv filedata.head(5) # Print the first 5 tweets features. Each row represents a tweet

结果:
在这里插入图片描述
画图:

# Plot the samples using columns 1 and 2 of the matrix
fig, ax = plt.subplots(figsize = (8, 8)) #Create a new figure with a custom sizecolors = ['red', 'green'] # Define a color palete
sentiments = ['negative', 'positive'] index = data.index# Color base on sentiment
for sentiment in data.sentiment.unique():ix = index[data.sentiment == sentiment]ax.scatter(data.iloc[ix].positive, data.iloc[ix].negative, c=colors[int(sentiment)], s=0.1, marker='*', label=sentiments[int(sentiment)])ax.legend(loc='best')    # Custom limits for this chart
plt.xlim(-250,0)
plt.ylim(-250,0)plt.xlabel("Positive") # x-axis label
plt.ylabel("Negative") # y-axis label
plt.show()

在这里插入图片描述

Using Confidence Ellipses to interpret Naïve Bayes

本节我们将使用 置信度椭圆 分析朴素贝叶斯的结果。

置信椭圆是可视化二维随机变量的一种方法。它比在直角坐标平面上绘制点更好,因为在大数据集上,点会严重重叠,从而掩盖数据的真实分布。置信度椭圆只需四个参数就能概括数据集的信息:

  • 中心: 中心:是属性的数值平均值。
  • 高度和宽度: 高度和宽度:与每个属性的方差有关。用户必须指定绘制椭圆所需的标准偏差量。
  • 角度: 与属性间的协方差有关。

参数 n_std 代表椭圆边界的标准差个数。请记住,对于正态随机分布来说

  • 曲线下约 68% 的面积落在均值周围 1 个标准差的范围内。
  • 约 95% 的曲线下面积在均值周围 2 个标准差以内。
  • 约 99.7% 的曲线下面积在均值周围 3 个标准差以内。

在这里插入图片描述
下面代码将绘制2_std和3_std

# Plot the samples using columns 1 and 2 of the matrix
fig, ax = plt.subplots(figsize = (8, 8))colors = ['red', 'green'] # Define a color palete
sentiments = ['negative', 'positive'] 
index = data.index# Color base on sentiment
for sentiment in data.sentiment.unique():ix = index[data.sentiment == sentiment]ax.scatter(data.iloc[ix].positive, data.iloc[ix].negative, c=colors[int(sentiment)], s=0.1, marker='*', label=sentiments[int(sentiment)])# Custom limits for this chart
plt.xlim(-200,40)  
plt.ylim(-200,40)plt.xlabel("Positive") # x-axis label
plt.ylabel("Negative") # y-axis labeldata_pos = data[data.sentiment == 1] # Filter only the positive samples
data_neg = data[data.sentiment == 0] # Filter only the negative samples# Print confidence ellipses of 2 std
confidence_ellipse(data_pos.positive, data_pos.negative, ax, n_std=2, edgecolor='black', label=r'$2\sigma$' )
confidence_ellipse(data_neg.positive, data_neg.negative, ax, n_std=2, edgecolor='orange')# Print confidence ellipses of 3 std
confidence_ellipse(data_pos.positive, data_pos.negative, ax, n_std=3, edgecolor='black', linestyle=':', label=r'$3\sigma$')
confidence_ellipse(data_neg.positive, data_neg.negative, ax, n_std=3, edgecolor='orange', linestyle=':')
ax.legend(loc='lower right')plt.show()

在这里插入图片描述
下面,修改正例推文的特征,使其与负例重合:

data2 = data.copy() # Copy the whole data frame# The following 2 lines only modify the entries in the data frame where sentiment == 1
#data2.negative[data.sentiment == 1] =  data2.negative * 1.5 + 50 # Modify the negative attribute
#data2.positive[data.sentiment == 1] =  data2.positive / 1.5 - 50 # Modify the positive attribute 
# 对于情感值为1的数据点,修改negative属性
data2.loc[data2.sentiment == 1, 'negative'] = data2.loc[data2.sentiment == 1, 'negative'] * 1.5 + 50# 对于情感值为1的数据点,修改positive属性
data2.loc[data2.sentiment == 1, 'positive'] = data2.loc[data2.sentiment == 1, 'positive'] / 1.5 - 50

重新绘制图像:

# Plot the samples using columns 1 and 2 of the matrix
fig, ax = plt.subplots(figsize = (8, 8))colors = ['red', 'green'] # Define a color palete
sentiments = ['negative', 'positive'] 
index = data2.index# Color base on sentiment
for sentiment in data2.sentiment.unique():ix = index[data2.sentiment == sentiment]ax.scatter(data2.iloc[ix].positive, data2.iloc[ix].negative, c=colors[int(sentiment)], s=0.1, marker='*', label=sentiments[int(sentiment)])#ax.scatter(data2.positive, data2.negative, c=[colors[int(k)] for k in data2.sentiment], s = 0.1, marker='*')  # Plot a dot for tweet
# Custom limits for this chart
plt.xlim(-200,40)  
plt.ylim(-200,40)plt.xlabel("Positive") # x-axis label
plt.ylabel("Negative") # y-axis labeldata_pos = data2[data2.sentiment == 1] # Filter only the positive samples
data_neg = data[data2.sentiment == 0] # Filter only the negative samples# Print confidence ellipses of 2 std
confidence_ellipse(data_pos.positive, data_pos.negative, ax, n_std=2, edgecolor='black', label=r'$2\sigma$' )
confidence_ellipse(data_neg.positive, data_neg.negative, ax, n_std=2, edgecolor='orange')# Print confidence ellipses of 3 std
confidence_ellipse(data_pos.positive, data_pos.negative, ax, n_std=3, edgecolor='black', linestyle=':', label=r'$3\sigma$')
confidence_ellipse(data_neg.positive, data_neg.negative, ax, n_std=3, edgecolor='orange', linestyle=':')
ax.legend(loc='lower right')plt.show()

在这里插入图片描述

修改后,两个数据的分布开始重合。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

everything搜索不到任何文件-设置

版本: V1.4.1.1024 (x64) 问题:搜索不到任何文件 click:[工具]->[选项]->下图所示 将本地磁盘都选中包含

Python爬虫速成之路(3):下载图片

hello hello~ ,这里是绝命Coding——老白~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 💥个人主页:绝命Coding-CSDN博客 &a…

SpringMVC源码解析(一):web容器启动流程

SpringMVC源码系列文章 SpringMVC源码解析(一):web容器启动流程 目录 一、SpringMVC全注解配置1、pom文件2、web容器初始化类(代替web.xml)3、SpringMVC配置类(代替springmvc.xml)4、测试Controller 二、SpringServletContainerInitializer1、web容器初始化入口2、…

从本地到全局:基于图的RAG方法进行查询聚焦原理摘要

摘要 使用检索增强生成(RAG)从外部知识源检索相关信息,使大型语言模型(LLMs)能够回答有关私有和/或以前未见过的文档集合的问题。然而,当针对整个文本文档库提出全局问题时,例如“数据集中的主…

音视频入门基础:H.264专题(13)——FFmpeg源码中通过SPS属性获取视频色彩格式的实现

一、引言 通过FFmpeg命令可以获取到H.264裸流文件的色彩格式(又译作色度采样结构、像素格式): 在vlc中也可以获取到色彩格式(vlc底层也使用了FFmpeg进行解码): 这个色彩格式就是之前的文章《音视频入门基础…

【精品资料】模块化数据中心解决方案(33页PPT)

引言:模块化数据中心解决方案是一种创新的数据中心设计和部署策略,旨在提高数据中心的灵活性、可扩展性和效率。这种方案通过将数据中心的基础设施、计算、存储和网络资源封装到标准化的模块中,实现了快速部署、易于管理和高效运维的目标 方案…

2024最新Cloudways主机使用教程(含最新Cloudways折扣码)

Cloudways是一家提供云托管服务的公司,可以帮助你轻松管理和运行你的网站。本教程是Cloudways主机注册和使用教程。Cloudways界面简洁,使用方便,不需要复杂的设置,就能快速搭建一个WordPress网站。它的主机功能包括高级缓存和Bree…

DepthAnything(2): 基于ONNXRuntime在ARM(aarch64)平台部署DepthAnything

DepthAnything(1): 先跑一跑Depth Anything_depth anything离线怎么跑-CSDN博客 目录 1. 写在前面 2. 安装推理组件 3. 生成ONNX 4. 准备ONNXRuntime库 5. API介绍 6. 例程 1. 写在前面 DepthAnything是一种能在任何情况下处理任何图像的简单却又强大的深度估计模型。 …

KingbaseES数据库逻辑备份还原

数据库版本:KingbaseES V008R006C008B0014 简介 介绍2个KingbaseES用于备份还原的工具: sys_dump:逻辑备份sys_restore:逻辑还原 sys_dump 是 KingbaseES 用于逻辑备份的工具,可以将数据备份为不同类型的文件。支持数据…

ARM功耗管理标准接口之SCMI

安全之安全(security)博客目录导读 思考:功耗管理有哪些标准接口?ACPI&PSCI&SCMI? Advanced Configuration and Power Interface Power State Coordination Interface System Control and Management Interface 下图示例说明了实现…

docker部署canal 并监听mysql

1.部署mysql 需要开启mysql的binlong,和创建好用户等 可以参考这个 Docker部署Mysql数据库详解-CSDN博客 2.部署canal 参考这一篇: docker安装Canal,开启MySQL binlog ,连接Java,监控MySQL变化_docker canal-CSD…

内网信息收集——MSF信息收集浏览器记录配置文件敏感信息

文章目录 一、配置文件敏感信息收集二、浏览器密码&记录三、MSF信息收集 域控:windows server 2008 域内机器:win7 攻击机:kali 就是红日靶场(一)的虚拟机。 一、配置文件敏感信息收集 使用searchall64.exe&#…

【错题集-编程题】四个选项(DFS + 剪枝 + 哈希表)

牛客对应题目链接:四个选项 (nowcoder.com) 一、分析题目 用递归枚举出所有的情况,注意剪枝: 填写某个数时,要看看还有没有剩余次数。填写某个数时,要看看符不符合若干题的选项必须相同。 二、代码 // 值得学习的代码…

【学习笔记】无人机(UAV)在3GPP系统中的增强支持(六)-人工智能控制的自主无人机用例

引言 本文是3GPP TR 22.829 V17.1.0技术报告,专注于无人机(UAV)在3GPP系统中的增强支持。文章提出了多个无人机应用场景,分析了相应的能力要求,并建议了新的服务级别要求和关键性能指标(KPIs)。…

SparkStreaming--scala

文章目录 第1关:QueueStream代码 第2关:File Streams代码 第1关:QueueStream 任务描述 本关任务:编写一个清洗QueueStream数据的SparkStreaming程序。 相关知识 为了完成本关任务,你需要掌握:1.如何使用S…

OrangePi AI Pro 实测:感受 AI 应用的独特魅力与强大性能

OrangePi AiPro介绍和初始化配置 小寒有话说一、OrangePi AiPro介绍1. 主板详情2. 开发配置3. 镜像烧录4. 设备连接5. WiFi连接6. NVMe SSD的安装和挂载7. 更新下载源并下载必要的软件8. 扩展内存 二、Jupyter Lab AI测评应用案例1. 获取Jupyter Lab 网址链接2. 图像提取文字3.…

帕金森病患者应该如何进行日常锻炼以提高生活质量?

帕金森病患者的日常锻炼建议 帕金森病患者进行日常锻炼对于改善症状、维持肌肉功能和延缓疾病进展至关重要。以下是一些具体的锻炼建议: 选择适合的运动类型:帕金森病患者应选择低冲击、有氧的活动,如散步、骑自行车、游泳和太极拳等。这些运…

【qt】考试系统项目

话不多说,先一睹芳颜 咱们的账号,题库和答案都是通过文件获取的. 话不多说,直接开干 目录 一.登录窗口1.界面设计2.邮箱验证3.登录验证 二.题库窗口1.考试计时2.布局管理器3.题库显示4.按钮布局5.计算分数 三.窗口交互四.完整代码五.结语 一.登录窗口 1.界面设计 这里添加背…

从信息化、数字化、智能化到企业大模型应用

新时代背景下,数字经济发展速度之快、辐射范围之广、影响程度之深前所未有,5G、大数据、云计算、人工智能、区块链等技术加速创新,全域融入经济社会、民生服务全过程,成为资源要素重组、经济结构重塑、竞争格局重构的关键力量。千…

Visual Studio 安装程序无法执行修复或更新

一.问题场景 出现问题的场景:当你的VS已经安装但是无法在工具中下载新组件或者卸载了当时一直无法安装。 二.问题原因 如果计算机上的 Visual Studio 实例已损坏,则可能会出现此问题。 三.解决方法 如果之前尝试修复或更新 Visual Studio 失败&…