Python中贝叶斯模型结果为1.0的详细解析与Scikit-learn使用教程

python中的贝叶斯模型结果是1.0

Python中贝叶斯模型结果为1.0的详细解析与Scikit-learn使用教程

python 中的贝叶斯模型结果为 1.0。根据相关查询资料,贝叶斯模型有两个参数,平均值及其偏差。这些参数也需要通过选择相应的分布函数来构建模型。 python中贝叶斯模型的结果是1.0。

网站制作和成都网站建设服务团队是一支充满热情的团队。执着、敏感、追求更好,是创新互联网的标准和要求。同时,全心全意为客户提供服务是我们的理念。成都创新互联网公司把每一个网站都当成一个产品来开发,精心打造,追求工匠的一丝不苟。我们更用心!

线性代数大师贝叶斯重返人间。 python 中的朴素贝叶斯还这么难吗?

本教程将教您如何使用 Python 的 Scikit-learn 包构建和评估朴素贝叶斯分类器。

假设您是一名产品经理,您希望将客户评论分为正面和负面类别。或者作为贷款经理,您想确定哪些贷款申请人是安全的还是有风险的?作为医疗保健分析师,您想要预测哪些患者可能患有糖尿病。所有示例都面临着对评论、贷款申请人和患者进行分类的相同问题。

朴素贝叶斯是最直接、最快的分类算法,适用于大量数据。朴素贝叶斯分类器已成功应用于垃圾邮件过滤、文本分类、情感分析和推荐系统等各种应用中。它使用贝叶斯概率定理来预测未知类别。

在本教程中,您将了解以下所有内容:

每当执行分类时,第一步是了解问题并识别潜在的特征和标签。特征是影响标记结果的特征或属性。例如,在贷款分配的情况下,银行经理确定客户的职业、收入、年龄、地点、以前的贷款历史、交易历史和信用评分。这些特征称为帮助模型对客户进行分类的特征。

分类有两个阶段,学习阶段和评估阶段。在学习阶段,分类器在给定的数据集上训练其模型,在评估阶段,它测试分类器的性能。性能是根据准确度、误差、精确度和召回率等各种参数进行评估的。

2 什么是朴素贝叶斯分类器?

朴素贝叶斯是一种基于贝叶斯定理的统计分类技术。它是最简单的监督学习算法之一。朴素贝叶斯分类器是一种快速、准确且可靠的算法。朴素贝叶斯分类器在大数据集上具有较高的准确性和速度。

朴素贝叶斯分类器假设类中特定特征的影响独立于其他特征。例如,贷款申请人的意愿取决于他/她的收入、以前的贷款和交易历史、年龄和地点。尽管这些功能是相互依赖的,但仍然独立考虑这些功能。这个假设简化了计算,这就是为什么它被认为是“天真的”。这种假设称为类条件独立性。

这一部分涉及到很多线性代数和概率的知识。对理论研究要求较高的读者可以参考更专业的书籍。只关心应用的读者可以跳过本节。我只关心应用程序,所以让我们一起跳过这一部分。保留标题只是为了结构完整性。哈哈哈希望数学老师原谅我

4 Scikit-learn 中的分类器构建

1)定义数据集

在此示例中,您使用包含三列的虚拟数据集:天气、温度以及您是否出去玩。前两个是特征(天气、温度),另一个是标签。

2)编码特征

首先,您需要将这些字符串标签转换为数字。例如:'阴天'、'雨天'、'晴天'为0、1、2。这称为标签编码。 Scikit-learn 提供了 LabelEncoder 库,用于对值在 0 到 1 之间的标签进行编码,该值小于离散类的数量。

同样,您可以对 temp 和 play 列进行编码。

现在将这两个特征(天气和温度)组合到一个变量(元组列表)中。

3)生成模型

按照以下步骤使用朴素贝叶斯分类器生成模型:

这里,1表示玩家可以“出去玩”。

到目前为止,您已经了解了使用二进制标签的朴素贝叶斯分类。现在您将了解朴素贝叶斯中的多类分类。这称为多项式朴素贝叶斯分类。例如,如果您想要对有关技术、娱乐、政治或体育的新闻文章进行分类。

在模型构建部分,可以使用wine数据集,这是一个非常著名的多类分类问题。 “该数据集是对意大利同一地区种植的三个不同品种的葡萄酒进行化学分析的结果。”

该数据集包含 13 个特征(酒精、苹果酸、灰分、灰分碱度、镁、总酚、类黄酮、非类黄酮酚、原花青素、颜色强度、色调、od280/od315_of_diluted_wines、脯氨酸)和葡萄酒品种类型。该数据有3种葡萄酒Class_0、Class_1和Class_3。在这里您可以构建一个模型来对葡萄酒类型进行分类。

该数据集可在 scikit-learn 库中找到。

1)加载数据

我们首先从 scikit-learn 数据集中加载所需的 wine 数据集。

2)探索数据

您可以打印目标和要素名称以确保您拥有正确的数据集,如下所示:

稍微探索一下您的数据永远不会出错,这样您就知道自己正在处理什么。在这里,您可以看到打印的数据集的前五行,以及整个数据集的目标变量。

3)分割数据

首先,将列分为因变量和自变量(或特征和标签)。然后将这些变量分为训练集和测试集。

4)生成模型

分割后,您将在训练集上生成随机森林模型,并对测试集特征进行预测。

5)评估模型

生成模型后,使用实际值和预测值检查准确性。

5 零概率问题

假设数据集中没有风险贷款的元组。在这种情况下,后验概率为零,模型无法做出预测。这个问题称为零概率,因为特定类的出现次数为零。

解决此类问题的方法是拉普拉斯校正或拉普拉斯变换。拉普拉斯校正是平滑技术之一。在这里,您可以假设数据集足够大,为每个类添加行不会对估计概率产生影响。这将克服零概率值的问题。

例如:假设数据库中有 1000 个风险贷款类的训练元组。在此数据库中,收入列有 0 个低收入元组、990 个中等收入元组和 10 个高收入元组。如果没有拉普拉斯校正,这些事件的概率为 0、0.990(来自 990/1000)和 0.010(来自 10/1000)

现在,将拉普拉斯校正应用于给定的数据集。让我们为每个收入值对再添加 1 个元组。这些事件发生的概率:

6大优势

在本教程中,您了解了朴素贝叶斯算法、其工作原理、朴素贝叶斯假设、问题、实现、优点和缺点。在此过程中,您还了解了 scikit-learn 中二元和多项式类的模型构建和评估。

朴素贝叶斯是最直接、最高效的算法。尽管机器学习在过去几年中取得了重大进展,但它已经证明了其价值。它已成功部署在从文本分析到推荐引擎的许多应用程序中。

sklearn实现朴素贝叶斯分类算法

一、背景

在《机器学习实战》中,使用Python实现了基于贝叶斯公式的基本分类算法。现在让我们看看如何使用sklearn来实现它。让我们以前面的帖子分类为例。数据如下:

补充:问题值左边是几个人的评论,右边是属于侮辱类(1)和正常类(0)的评论。需要进行文本分类,当有新文本到来时,可以自动分类为0或1。

2. 分类

(1)算法准备

通过查看sklearn的训练模型函数fit(X,Y),我们发现只需要准备两个参数。一个是数据矩阵,另一个是数据的分类数组。第一步是将上面的文本转换成矩阵。

在上一章中,我们实际上解释了如何将文本转换为矩阵。我会在这里添加一些提示。

一个。首先选择所有的单词组成一列,也可以理解为属性。例如:

b.其次,每个文本都会被遍历并填充上面各列的值。填写文本在该列中出现的次数。千万不要填写0。例如第一句是:mydog has flea issues help please,可以表示为:

同理,所有文本都可以这样表示,这样就形成了一个数字矩阵。

(2)贝耶斯模型的选择

完成数据准备后,可以直接调用sklearn模型和函数来完成模型训练。但是在选择beyes型号时,我发现beyes下面有多个型号可供选择,所以这可能会让人困惑。我们一起来看看这些模型:

一个。高斯模型(GaussianNB)

当每个属性的值连续且服从高斯分布时,可以使用高斯模型:

比如人的身高,花的高度等。当然,你也可以将数据离散化,比如按等距间隔、等频率划分为离散值,但效果可能不如与直接使用高斯模型一样好。

用法:类 sklearn.naive_bayes.GaussianNB

参数:无

b.多项式模型(MultinominalNB)

如果大多数值是多元离散值,则多项式模型更好。多项式模型通常构造一个参数向量,然后使用最大似然估计来找到参数的最优值。

这里只是简单列出了几个公式,详细内容可以查找更多资料。从这个计算过程可以看出,这里引入了一个平滑的先验值alpha,在模型训练时也会用到它。通常alpha0可以引入训练集中没有的特征,特别是当alpha=1时,就变成了拉普拉斯平滑。 alpha值对模型的具体影响可以附图。

用法:class sklearn.naive_bayes.MultinomialNB(alpha=1.0,fit_prior=True,class_prior=None)

范围:

alpha:浮点数,就是上面提到的引入平滑的值;

fit_prior:bool值,如果为True,则不需要学习P(y=ck),会用均匀分布代替,否则会学习P(y=ck)(看不懂)

class_prior:一个数组。它指定每个分类的先验概率 P(y=c1), P(y=c2)…..,如果指定了该参数

那么每个分类的先验概率就不需要学习了(不懂)

c.伯努利模型(BernoulliNB)

如果特征值是二元离散值或稀疏多元离散值,则可以使用伯努利模型。

公式:class sklearn.naive_bayes.BernoulliNB(alpha=1.0,binarize=0.0,fit_prior=Ture,

class_prior=无)

范围:

binarize:浮点数或无。如果是浮点数,则以该值作为边界。如果特征值大于它,则为1,如果小于,则为0。如果为None,则认为原始数据已二值化

其他参数同上。

通过上面的模型对比分析,由于文本分析转化为包含很多二项式值的稀疏矩阵,因此伯努利模型会更好。

补充:alpha和二值化值对模型效果的影响​​​​

朴素贝叶斯分类器(Python实现+详细源码原理)

1、贝叶斯公式的本质:u从因到果,从果到因/u

2、贝叶斯公式:

[图片上传中...(wps6.png-5fd624-1618488341725-0)]

1.朴素贝叶斯公式

x1, x2,...xn 是特征集,y 是分类结果

朴素贝叶斯假设特征彼此独立

当分母相同时,我们只需保证分子最大即可

训练数据集

长、not_long、甜、not_sweet、黄色、not_yellow、种类

400,100,350,150,450,50,香蕉

0,300,150,150,300,0,橙色

100,100,150,50,50,150,other_fruit

测试数据集

长,甜,黄

不长、不甜、不黄

不长、甜、不黄

不长,甜,黄色

不长,甜,黄色

不长、不甜、不黄

长,不甜,不黄

长,不甜,不黄

长,不甜,不黄

长,不甜,不黄

长,不甜,黄色

不长、不甜、黄色

不长、不甜、黄色

长,不甜,不黄

不长、不甜、黄色

结果

特征值:[not_long、not_sweet、not_yellow]

预测结果:{'banana': 0.003, 'orange': 0.0, 'other_fruit': 0.018750000000000003}

水果类别: other_fruit

特征值:[not_long、sweet、not_yellow]

预测结果:{'banana': 0.006999999999999999, 'orange': 0.0, 'other_fruit': 0.05625000000000001}

水果类别: other_fruit

特征值:[not_long、sweet、yellow]

预测结果:{'banana': 0.063, 'orange': 0.15, 'other_fruit': 0.018750000000000003}

水果类别: 橙子

特征值:[not_long、sweet、yellow]

预测结果:{'banana': 0.063, 'orange': 0.15, 'other_fruit': 0.018750000000000003}

水果类别: 橙子

特征值:[not_long、not_sweet、not_yellow]

预测结果:{'banana': 0.003, 'orange': 0.0, 'other_fruit': 0.018750000000000003}

水果类别: other_fruit

特征值:[长、not_sweet、not_yellow]

预测结果:{'banana': 0.012, 'orange': 0.0, 'other_fruit': 0.018750000000000003}

水果类别: other_fruit

特征值:[长、not_sweet、not_yellow]

预测结果:{'banana': 0.012, 'orange': 0.0, 'other_fruit': 0.018750000000000003}

水果类别: other_fruit

特征值:[长、not_sweet、not_yellow]

预测结果:{'banana': 0.012, 'orange': 0.0, 'other_fruit': 0.018750000000000003}

水果类别: other_fruit

特征值:[长、not_sweet、not_yellow]

预测结果:{'banana': 0.012, 'orange': 0.0, 'other_fruit': 0.018750000000000003}

水果类别: other_fruit

特征值:[长,not_sweet,黄色]

预测结果:{'banana': 0.108, 'orange': 0.0, 'other_fruit': 0.00625}

水果类别: 香蕉

特征值:[not_long、not_sweet、yellow]

预测结果:{'banana': 0.027, 'orange': 0.15, 'other_fruit': 0.00625}

水果类别: 橙子

特征值:[not_long、not_sweet、yellow]

预测结果:{'banana': 0.027, 'orange': 0.15, 'other_fruit': 0.00625}

水果类别: 橙子

特征值:[长、not_sweet、not_yellow]

预测结果:{'banana': 0.012, 'orange': 0.0, 'other_fruit': 0.018750000000000003}

水果类别: other_fruit

特征值:[not_long、not_sweet、yellow]

预测结果:{'banana': 0.027, 'orange': 0.15, 'other_fruit': 0.00625}

水果类别: 橙子

本文标题:贝叶斯函数python简介

网站网址:

你可能想看:
« 上一篇
下一篇 »

相关推荐

python爬虫教程PDF,Python爬虫书PDF

2026年09月02日

31阅读

外国教程python,python编程教学视频

2026年09月02日

25阅读

python简明教程沈洁元,python详细基础教程

2026年09月02日

21阅读

python库包教程,python 包

2026年09月02日

27阅读

python教程大全集,python教程600集

2026年09月02日

26阅读

python入门教程完整版,python零基础入门全套教程视频

2026年09月02日

22阅读