机器学习——朴素贝叶斯详解 - 指南

news/2025/10/4 17:23:07/文章来源:https://www.cnblogs.com/wzzkaifa/p/19125755

一、概率论知识

  1. 概念:朴素贝叶斯是概率值进行分类的一种机器学习算法
  2. 条件概率:表示事件A在另外一个事件B已经发生的条件下的发生概率,P(A∣B)P(A|B)P(AB)
  3. 联合概率:表示多个条件同时成立的概率,P(AB)=P(A)P(B∣A)=P(B)P(A∣B)P(AB) = P(A)P(B|A)=P(B)P(A|B)P(AB)=P(A)P(BA)=P(B)P(AB)
  4. 贝叶斯公式:P(C∣W)=P(W∣C)P(C)P(W)P(C|W)=\frac{P(W|C)P(C)}{P(W)}P(CW)=P(W)P(WC)P(C)
  5. 朴素贝叶斯:为了简化联合概率的计算,朴素贝叶斯在贝叶斯基础上增加了特征条件独立假设,即:特征之间是互为独立的
  6. 拉普拉斯平滑系数:为了避免概率值为0,我们分别在分子和分母上加一个系数:
    P(F1∣C)=Ni+αN+αmP(F_1|C)=\frac{N_i+\alpha}{N+\alpha m}P(F1C)=N+αmNi+α
    • 其中α\alphaα是拉普拉斯平滑系数,一般指定为1
    • NiN_iNiF1F_1F1中符合条件C的样本数量
    • N是在条件C下所有样本的总数
    • m表示所有独立和样本的总数

二、特征降维

2.1 为什么需要特征降维

用于训练的数据集特征对模型的性能有着极其重要的作用。如果训练数据中包含一些不重要的特征,可能导致模型的泛化性能不佳。例如:

  1. 某些特征的取值较为接近,其包含的信息较少
  2. 我们希望特征独立存在,对预测产生影响,具有相关性的特征可能并不会给模型带来更多的信息,但是并不是说相关性完全无用。

2.2 低方差过滤法

我们知道:

  1. 特征方差小:某个特征大多样本的值比较相近
  2. 特征方差大:某个特征很多样本的值都有差别
from sklearn.feature_selection import VarianceThreshold
import pandas as pd
# 1. 读取数据集
data = pd.read_csv('data/垃圾邮件分类数据.csv')
print(data.shape) # (971, 25734)
# 2. 使用方差过滤法
transformer = VarianceThreshold(threshold=0.1)
data = transformer.fit_transform(data)
print(data.shape) # (971, 1044)

2.3 主成分分析(PCA)

在这里插入图片描述

  1. PCA通过对数据维数进行压缩,尽可能降低元数据的维数(复杂度),损失少量信息,在此过程中可能会舍弃原有数据、创造新变量
from sklearn.decomposition import PCA
from sklearn.datasets import load_iris
# 1. 加载数据集
x, y = load_iris(return_X_y=True)
print(x[:5])
# [[5.1 3.5 1.4 0.2]
#  [4.9 3.  1.4 0.2]
#  [4.7 3.2 1.3 0.2]
#  [4.6 3.1 1.5 0.2]
#  [5.  3.6 1.4 0.2]]
# 2. 保留指定比例的信息
transformer = PCA(n_components=0.95)
x_pca = transformer.fit_transform(x)
print(x_pca[:5])
# [[-2.68412563  0.31939725]
#  [-2.71414169 -0.17700123]
#  [-2.88899057 -0.14494943]
#  [-2.74534286 -0.31829898]
#  [-2.72871654  0.32675451]]
# 3. 保留指定数量特征
transformer = PCA(n_components=2)
x_pca = transformer.fit_transform(x)
print(x_pca[:5])
# [[-2.68412563  0.31939725]
# [-2.71414169 -0.17700123]
# [-2.88899057 -0.14494943]
# [-2.74534286 -0.31829898]
# [-2.72871654  0.32675451]]

2.4 相关系数法

  1. 相关系数:反应特征列之间(变量之间)密切相关程度
  • 相关系数的值介于-1与+1之间,即−1<=r<=1-1<=r<=11<=r<=1
    • 当 r>0 时,表示两个变量正相关;当 r<0 时,表示两个变量负相关
    • 当 |r|=1 时,表示两变量为完全相关;当 |r|=0 时,表示两变量间无相关关系
    • 当 0<|r|<1 时。表示两变量存在一定程度的关系,且 |r| 越接近1,线性相关越密切;|r| 越接近0,线性相关越弱
  • |r|<0.4 为低度相关;0.4<=|r|<0.7 为显著相关;0.7 <= |r|<1为高度线性相关
  1. 皮尔逊相关系数:
    r=n∑xy−∑x∑yn∑x2−(∑x)2n∑y2−(∑y)2r=\frac{n\sum xy-\sum x\sum y}{\sqrt{n\sum x^2-(\sum x)^2}\sqrt{n\sum y^2-(\sum y)^2}}r=nx2(x)2ny2(y)2nxyxy

已知广告投入x特征与月均销售额y之间的关系,经过皮尔逊相关系数的计算,呈现高度相关
在这里插入图片描述
10×16679˙.09−346.2×422.510×14304.52−346.2210×19687.81−422.52=0.9942\frac{10\times1667\dot{9}.09-346.2\times422.5}{\sqrt{10\times14304.52-346.2^2}\sqrt{10\times19687.81-422.5^2}}=0.994210×14304.52346.2210×19687.81422.5210×16679˙.09346.2×422.5=0.9942

  1. 斯皮尔曼相关系数:RankIC=1−6∑di2n(n2−1),{其中n为等级个数d为成对变量的等级差数RankIC=1-\frac{6\sum d_i^2}{n(n^2-1)},\begin{cases}其中n为等级个数 \\ d为成对变量的等级差数\end{cases}RankIC=1n(n21)6di2{其中n为等级个数d为成对变量的等级差数
import pandas as pd
from sklearn.feature_selection import VarianceThreshold
from scipy.stats import pearsonr
from scipy.stats import spearmanr
from sklearn.datasets import load_iris
# 1. 读取数据集(鸢尾花数据集)
data = load_iris()
data = pd.DataFrame(data.data, columns=data.feature_names)
# 2. 皮尔逊相关系数
corr = pearsonr(data['sepal length (cm)'], data['sepal width (cm)'])
print(corr, '皮尔逊相关系数:', corr[0], '不相关性概率:', corr[1])
# (-0.11756978413300204, 0.15189826071144918) 
# 皮尔逊相关系数: -0.11756978413300204 不相关性概率: 0.15189826071144918
# 3. 斯皮尔曼相关系数
corr = spearmanr(data['sepal length (cm)'], data['sepal width (cm)'])
print(corr, '斯皮尔曼相关系数:', corr[0], '不相关性概率:', corr[1])
# SpearmanrResult(correlation=-0.166777658283235, pvalue=0.04136799424884587) 
# 斯皮尔曼相关系数: -0.166777658283235 不相关性概率: 0.04136799424884587

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

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

相关文章

[swift 外部干涉法 extension]

/*** Definition for singly-linked list.* public class ListNode {* public var val: Int* public var next: ListNode?* public init(_ val: Int) {* self.val = val* self.next = ni…

2025国庆Day3

模拟赛 T1 对每个ai开个桶分别算答案即可 注意long long T2 维护m个指针 倒着枚举l p1~pm维护第i个字符已匹配的下标 每次匹配修改一个前缀 复杂度O(n) 另外可考虑:T3 设dpi,j表示i子树内钦定返祖j次的方案数 将相邻向…

量子迁移计划启动:应对未来密码学挑战

荷兰国家安全与网络安全中心发布量子迁移指南,指出量子计算机将在2030-2040年间破解当前主流加密算法,呼吁组织立即行动转向量子安全密码学,保护信息机密性、完整性和可用性。启动量子迁移计划 新闻稿 | 2024年3月2…

找网站公司企业备案搭建微信网站怎么做

使用ArticleColumnForm表单&#xff0c;向数据库提交内容&#xff0c;内容包括column。如果同一用户提交的column重复&#xff0c;则提示表单出错&#xff0c;表单提交失败后&#xff0c;重新渲染表单提交html页面&#xff0c;其中提示错误信息。 涉及的代码包括&#xff1a; …

HPE SPP 2025.09.00.00 - HPE 服务器固件、驱动程序和系统软件包

HPE SPP 2025.09.00.00 - HPE 服务器固件、驱动程序和系统软件包HPE SPP 2025.09.00.00 - HPE 服务器固件、驱动程序和系统软件包 Service Pack for ProLiant Gen12, Gen11, Gen10 Released Oct 2025 请访问原文链接:…

大模型原理与实践:第三章-预训练语言模型详解_第1部分-Encoder-only(BERT、RoBERTa、ALBERT) - 指南

大模型原理与实践:第三章-预训练语言模型详解_第1部分-Encoder-only(BERT、RoBERTa、ALBERT) - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: bl…

详细介绍:Linux字符设备驱动开发全攻略

详细介绍:Linux字符设备驱动开发全攻略pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mo…

河南焦作有做网站开发的公司吗连云港今天的新消息

11月12日&#xff0c;由金蝶软件&#xff08;中国&#xff09;&#xff08;以下简称“金蝶”&#xff09;主办的2022全球创见者大会之“对标世界一流管理——走进一心堂暨生命科学行业峰会”在云南昆明顺利举办。金蝶携手众多企业经营管理者&#xff0c;业界思想领袖及先锋企业…

深入解析:uniapp集成语音识别与图片识别集成方案【百度智能云】

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

sql注入和xss漏洞

1、复习信息搜集中的Google hack语法,随机找10个php网站的后台地址 2、简述sql注入漏洞的原理及危害 原理:由于后端程序员未对用户输入的字符进行严格控制和过滤,导致黑客可以在后台程序员不知情的情况下注入SQL语法…

威海建设局官方网站长沙室内设计工作室

加载指定会话最近消息 前言 上一集我们就把三个标签页的加载列表的任务给完成啦&#xff01;那么我们这一集就来完成加载指定绘画最近消息的任务。 需求分析 我们点击了某个会话之后&#xff0c;我们就会去显示我们的会话的最近的N条消息。请看下图。 我们这里涉及到两个区…

大连企业网站建设模板wordpress 设置语言

http://www.elecfans.com/article/89/92/2017/20170425510728.html转载于:https://www.cnblogs.com/jackn-crazy/p/7300228.html

数学 trick

基本不等式遇到 \(x=\dfrac{一次函数}{一次函数}\),考虑分离出一个常数: 例:(2024 浙江模拟)已知实数 \(x,y,x>3,xy+2x-3y=12,(x+y)_{\min}\)? 解:考虑分离 \(x,y\),由 \(xy+2x-3y=12\) 得到 \(x=\dfrac{12…

免费网站下载app软件免费重庆seo优

本文来自网易云社区作者&#xff1a;田亚楠须知本文主要是根据 createjs 中的 EaselJS 在 github 上的 tutorials 目录下的文章整理而来 &#xff08;原文链接&#xff09;&#xff0c;同时也包含了很多本人的理解&#xff0c;如过有叙述不当的地方&#xff0c;请联系我 :-D 本…

Python 2025:异步革命与AI驱动下的开发新范式 - 详解

Python 2025:异步革命与AI驱动下的开发新范式 - 详解2025-10-04 16:56 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; di…

完整教程:精读C++20设计模式——行为型设计模式:解释器模式

完整教程:精读C++20设计模式——行为型设计模式:解释器模式pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Cons…

js疑惑

textBox.addEventListener("keydown", function (event) { console.log(`You pressed "${event.key}".`);});这个函数接收的"keydown",到底是什么意思我还是没看懂为什么会这样写看着也…

使用 Git Submodule 管理微服务项目:从繁琐到高效 - 指南

使用 Git Submodule 管理微服务项目:从繁琐到高效 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consola…

如何识别网页用什么网站做的女装关键词排名

一个网站&#xff0c;其实说白了就是某几个特定功能的组合&#xff0c;而更换用户头像就在这些功能之中。今天就来做个测试&#xff0c;针对不同的用户&#xff0c;实现头像上传功能。先给大家展示下成品效果图&#xff1a;思路针对不同的用户上传头像&#xff0c;我们要为每一…

邯郸专业做网站多少钱做印刷网站公司哪家好

一、接口自动化测试中&#xff0c;会用到测试账号&#xff0c;如何合理运用账号&#xff1f; 账号一般用于接口登录、接口用例传参、操作sql等&#xff0c;目前账号是写到yaml配置文件里&#xff0c;如果1个账户使用会出现资源冲突&#xff0c;可以配置多个账号使用&#xff0…