网站首页 > 文章中心 > 其它

关于贝叶斯python函数的信息

作者:小编 更新时间:2023-09-23 09:28:12 浏览量:72人看过

如何在Python中实现这五类强大的概率分布

R编程语言已经成为统计分析中的事实标准.但在这篇文章中,我将告诉你在Python中实现统计学概念会是如此容易.我要使用Python实现一些离散和连续的概率分布.虽然我不会讨论这些分布的数学细节,但我会以链接的方式给你一些学习这些统计学概念的好资料.在讨论这些概率分布之前,我想简单说说什么是随机变量(random variable).随机变量是对一次试验结果的量化.

举个例子,一个表示抛硬币结果的随机变量可以表示成

Python

X = {1 如果正面朝上,

随机变量是一个变量,它取值于一组可能的值(离散或连续的),并服从某种随机性.随机变量的每个可能取值的都与一个概率相关联.随机变量的所有可能取值和与之相关联的概率就被称为概率分布(probability distributrion).

我鼓励大家仔细研究一下scipy.stats模块.

概率分布有两种类型:离散(discrete)概率分布和连续(continuous)概率分布.

离散概率分布也称为概率质量函数(probability mass function).离散概率分布的例子有伯努利分布(Bernoulli distribution)、二项分布(binomial distribution)、泊松分布(Poisson distribution)和几何分布(geometric distribution)等.

连续概率分布也称为概率密度函数(probability density function),它们是具有连续取值(例如一条实线上的值)的函数.正态分布(normal distribution)、指数分布(exponential distribution)和b分布(beta distribution)等都属于连续概率分布.

若想了解更多关于离散和连续随机变量的知识,你可以观看可汗学院关于概率分布的视频.

二项分布(Binomial Distribution)

服从二项分布的随机变量X表示在n个独立的是/非试验中成功的次数,其中每次试验的成功概率为p.

E(X) = np, Var(X) = np(1?p)

如果你想知道每个函数的原理,你可以在IPython笔记本中使用help file命令. E(X)表示分布的期望或平均值.

键入stats.binom?了解二项分布函数binom的更多信息.

二项分布的例子:抛掷10次硬币,恰好两次正面朝上的概率是多少?

您可以使用.rvs函数模拟一个二项随机变量,其中参数size指定你要进行模拟的次数.我让Python返回10000个参数为n和p的二项式随机变量.我将输出这些随机变量的平均值和标准差,然后画出所有的随机变量的直方图.

泊松分布(Poisson Distribution)

一个服从泊松分布的随机变量X,表示在具有比率参数(rate parameter)◆的一段固定时间间隔内,事件发生的次数.参数◆告诉你该事件发生的比率.随机变量X的平均值和方差都是◆.

E(X) = ◆, Var(X) = ◆

你可以看到,事故次数的峰值在均值附近.平均来说,你可以预计事件发生的次数为◆.尝试不同的◆和n的值,然后看看分布的形状是怎么变化的.

现在我来模拟1000个服从泊松分布的随机变量.

正态分布(Normal Distribution)

正态分布的取值可以从负无穷到正无穷.你可以注意到,我用stats.norm.pdf得到正态分布的概率密度函数.

b分布(Beta Distribution)

b分布是一个取值在 [0, 1] 之间的连续分布,它由两个形态参数a和b的取值所刻画.

b分布的形状取决于a和b的值.贝叶斯分析中大量使用了b分布.

当你将参数a和b都设置为1时,该分布又被称为均匀分布(uniform distribution).尝试不同的a和b取值,看看分布的形状是如何变化的.

指数分布(Exponential Distribution)

指数分布是一种连续概率分布,用于表示独立随机事件发生的时间间隔.比如旅客进入机场的时间间隔、打进客服中心电话的时间间隔、中文维基百科新条目出现的时间间隔等等.

接着,我在指数分布下模拟1000个随机变量.scale参数表示◆的倒数.函数np.std中,参数ddof等于标准偏差除以 $n-1$ 的值.

结语(Conclusion)

概率分布就像盖房子的蓝图,而随机变量是对试验事件的总结.我建议你去看看哈佛大学数据科学课程的讲座,Joe Blitzstein教授给了一份摘要,包含了你所需要了解的关于统计模型和分布的全部.

python 朴素贝叶斯怎样获得 概率结果

朴素:特征条件独立 贝叶斯:基于贝叶斯定理 根据贝叶斯定理,对一个分类问题,给定样本特征x,样本属于类别y的概率是 p(y|x)=p(x|y)p(y)p(x) 今天这一节,x是一个特征向量,将设x维度为M.

请问你会用python实现贝叶斯网络了吗

Bayesian-belief-networks允许你用纯Python创建贝叶斯信念网络和其他图模型,目前支持四种不同的推理方法.

支持的图模型

离散变量的贝叶斯信念网络

有着高斯分布的连续变量的高斯贝叶斯网络

推理引擎

消息传递和联合树算法(Junction Tree Algorithm)

和积算法(The Sum Product Algorithm)

MCMC采样的近似推理

高斯贝叶斯网络中得Exact Propagation

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

①.、背景

<<机器学习实战>>当中,用python根据贝叶斯公式实现了基本的分类算法.现在来看看用sklearn,如何实现.还拿之前的例子,对帖子的分类.数据如下:

补充:题目的值左边是几个人的评论,右边是评论属于侮辱类(1)、正常类(0),需要进行文本分类,且再有新的文本过来时能自动划分至0或1.

(1)算法的准备

通过查看sklearn的训练模型函数,fit(X, Y),发现只需要准备两个参数.一个是数据的矩阵,另一个是数据的分类数组.首先就是将以上的文本转化成矩阵.

在前一章其实已经讲解过如何将文本转化成矩阵.这里将示意的再补充下.

a.首先选取所有的单词,形成列,也可理解为属性.例如:

b.其次将遍历每个文本,填满上述列的值.文本出现过列的次,填一.没有出现过填0.比如第一句就是:my dog has flea problems help please,可表示为:

同理所有的文本都可如此表示,所以就形成了一个数字的矩阵.

在完成数据的准备以后,就可以直接调用sklearn的模型和函数完成模型的训练啦.但在beyes模型的选择的时候发现,beyes下有多个模型可选择,所以这个会让人纠结.此时此刻呢共同了解下这些模型:

a.高斯模型(GaussianNB)

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

比如人的身高,比如花的高度等等.当然你也可将这些数据离散化,比如按等距划分、等频划分成离散的值,但可能效果都没有直接用高斯模型来计算的好.

用法:class 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值,如果为Ture,则不用去学习P(y=ck),以均匀分布替代,否则则去学习P(y=ck)(不懂)

则每个分类的先验概率无需学习 (不懂)

c.伯努利模型(BernoulliNB)

如果特征值为二元离散值或是稀疏的多元离散值,则可采用伯努利模型.

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

class_prior=None)?

binarize:一个浮点数或者None,如果为浮点数则以该数值为界,特征值大于它的取1,小于的为0 .如果为None,假定原始数据已经二值化?

其它参数同上.

通过以上的模型对比和分析,由于文本分析转化后是很多二项取值的稀疏矩阵,所以呢选取伯努利模型效果会更佳.

补充:alpha、binarize值对模型效果的影响

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章