贝叶斯分类器

机器学习算法

谁说我不能喝 提交于 2020-03-28 07:40:58
转载自: http://www.cnblogs.com/tornadomeet   朴素贝叶斯:   有以下几个地方需要注意:   1. 如果给出的特征向量长度可能不同,这是需要归一化为通长度的向量(这里以文本分类为例),比如说是句子单词的话,则长度为整个词汇量的长度,对应位置是该单词出现的次数。   2. 计算公式如下:      其中一项条件概率可以通过朴素贝叶斯条件独立展开。要注意一点就是 的计算方法,而由朴素贝叶斯的前提假设可知, = ,因此一般有两种,一种是在类别为ci的那些样本集中,找到wj出现次数的总和,然后除以该样本的总和;第二种方法是类别为ci的那些样本集中,找到wj出现次数的总和,然后除以该样本中所有特征出现次数的总和。   3. 如果 中的某一项为0,则其联合概率的乘积也可能为0,即2中公式的分子为0,为了避免这种现象出现,一般情况下会将这一项初始化为1,当然为了保证概率相等,分母应对应初始化为2(这里因为是2类,所以加2,如果是k类就需要加k,术语上叫做laplace光滑, 分母加k的原因是使之满足全概率公式)。    朴素贝叶斯的优点:   对小规模的数据表现很好,适合多分类任务,适合增量式训练。    缺点 :   对输入数据的表达形式很敏感。   决策树:   决策树中很重要的一点就是选择一个属性进行分枝,因此要注意一下信息增益的计算公式,并深入理解它

5.机器学习之朴素贝叶斯详解

强颜欢笑 提交于 2020-03-18 01:11:41
本篇博客主要详细介绍朴素贝叶斯模型。首先贝叶斯分类器是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类器。而朴素贝叶斯分类器是贝叶斯分类器中最简单,也是最常见的一种分类方法。并且,朴素贝叶斯算法仍然是流行的十大挖掘算法之一,该算法是有监督的学习算法,解决的是分类问题。该算法的优点在于简单易懂、学习效率高、在某些领域的分类问题中能够与决策树、神经网络相媲美。但由于该算法以自变量之间的独立(条件特征独立)性和连续变量的正态性假设为前提(这个假设在实际应用中往往是不成立的),就会导致算法精度在某种程度上受影响。 朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法,是经典的机器学习算法之一。最为广泛的两种分类模型是决策树(Decision Tree Model)和朴素贝叶斯模型(Naive Bayesian Model,NBM)。和决策树模型相比,朴素贝叶斯分类器(Naive Bayes Classifier 或 NBC)发源于古典数学理论,有着坚实的数学基础,以及稳定的分类效率。同时,NBC模型所需估计的参数很少,对缺失数据不太敏感,算法也比较简单。理论上,NBC模型与其他分类方法相比具有最小的误差率。 历史背景解读: 18世纪英国数学家托马斯·贝叶斯(Thomas Bayes,1702~1761)提出过一种看似显而易见的观点:

贝叶斯分类器-----机器学习

醉酒当歌 提交于 2020-03-11 19:47:39
贝叶斯分类器中的涉及到的数学知识基本上是概率论与数理统计,其计算步骤倒是不难,西瓜书上的公式表示可能让人没有看下去的欲望,博主最开始学的时候也就是直接拿个例子计算一遍,然后再去看看西瓜书上的公式。贝叶斯中的核心计算公式就是条件概率的计算公式。 先看看条件概率的计算公式: 上面这个公式指的是事件A在事件B发生的条件下发生的概率。同理:P(B|A) = P(AB)/P(A)。这样上面也可以写成 。 接下来,我们直接看个例子,以西瓜书上的例子来看: 使用以上数据集作为训练集来训练贝叶斯分类器。 现在来了一个新的数据: 根据新样本的属性值,我们需要判断这个样本是好瓜的概率有多大。很明显我们需要计算:P(好瓜 | 色泽=青绿,根蒂=蜷缩,敲声=浊响,纹理=清晰,脐部=凹陷,密度=0.697,含糖率=0.460),这些属性值的条件下,好瓜的概率。将条件概率的公式代入:P(好瓜 | 色泽=青绿,根蒂=蜷缩,敲声=浊响,纹理=清晰,脐部=凹陷,密度=0.697,含糖率=0.460) = P(色泽=青绿,根蒂=蜷缩,敲声=浊响,纹理=清晰,脐部=凹陷,密度=0.697,含糖率=0.460,好瓜) / P(色泽=青绿,根蒂=蜷缩,敲声=浊响,纹理=清晰,脐部=凹陷,密度=0.697,含糖率=0.460) = P(好瓜) X P(色泽=青绿,根蒂=蜷缩,敲声=浊响,纹理=清晰,脐部=凹陷,密度=0

Scikit-learn使用总结

南笙酒味 提交于 2020-02-21 07:33:22
在机器学习和数据挖掘的应用中,scikit-learn是一个功能强大的python包。在数据量不是过大的情况下,可以解决大部分问题。学习使用scikit-learn的过程中,我自己也在补充着机器学习和数据挖掘的知识。这里根据自己学习sklearn的经验,我做一个总结的笔记。另外,我也想把这篇笔记一直更新下去。 1 scikit-learn基础介绍 1.1 估计器(Estimator) 估计器,很多时候可以直接理解成分类器,主要包含两个函数: fit():训练算法,设置内部参数。接收训练集和类别两个参数。 predict():预测测试集类别,参数为测试集。 大多数scikit-learn估计器接收和输出的数据格式均为numpy数组或类似格式。 1.2 转换器(Transformer) 转换器用于数据预处理和数据转换,主要是三个方法: fit():训练算法,设置内部参数。 transform():数据转换。 fit_transform():合并fit和transform两个方法。 1.3 流水线(Pipeline) sklearn.pipeline 包 流水线的功能: 跟踪记录各步骤的操作(以方便地重现实验结果) 对各步骤进行一个封装 确保代码的复杂程度不至于超出掌控范围 基本使用方法 流水线的输入为一连串的数据挖掘步骤,其中最后一步必须是估计器,前几步是转换器

初识集成学习

时光总嘲笑我的痴心妄想 提交于 2020-02-17 14:55:27
假设随机问很多人同一个问题,然后将许多份回答整合起来,通常情况下会发现这个合并的答案比一个专家的答案还要好。这就如同俗语所说“三个臭皮匠,顶个诸葛亮”,也好比对某个问题进行民主投票一样。机器学习中集成学习的思想与之类似。 在分类问题中,传统机器学习方法是在一个由各种可能的函数构成的假设空间中寻找一个最接近实际分类函数的分类器 ,单个的分类器模型到如今已经发展了不少,有的甚至成为了经典分类算法,如决策树、支持向量机以及朴素贝叶斯等。 集成学习的思路是:在对新样本进行分类时,把若干个单个分类器集成起来,通过对这些单个分类器的预测结果进行某种组合来决定最终的分类,从而取得比任意一个单个分类器更好的性能。如果把单个分类器比作一个决策者的话,集成学习的方法相当于多个决策者共同进行决策。 经典的分类器———随机森林,就是在决策树的基础上通过集成学习衍生而来,并且是集成方法bagging的代表模型。著名的集成方法包括 bagging, boosting, stacking 和其他一些算法。需要注意的是:并不是任意的集成都是有效的,还要考虑到中和效应,即一些分类性能差的分类器会拉低整体的分类能力。 示例如下: 例中将随机森林、支持向量机以及逻辑回归模型视为三个单个分类器,并将三者集成为一个 voting_clf 集成分类器,结果表明集成分类器的分类表现优于构成它的两个单个分类器,但劣于逻辑回归

机器学习之朴素贝叶斯分类

元气小坏坏 提交于 2020-02-15 07:05:02
问题 这里有八名同学在考试前一天的活动以及他们的考试结果如下表所示: 挂科 喝酒 逛街 学习 1 1 1 0 0 0 0 1 0 1 0 1 1 1 0 0 1 0 1 0 0 0 1 1 0 0 1 0 1 0 0 1 通过以上数据,根据朴素贝叶斯原理,判断某学生在没有喝酒,没有逛街并且学习了的情况下是否会挂科。 算法步骤 朴素贝叶斯分类问题的主要目标就是求解 P ( y = 1 ∣ x 1 , x 2 , x 3 ) P(y=1|x_1,x_2,x_3) P ( y = 1 ∣ x 1 ​ , x 2 ​ , x 3 ​ ) 以及 P ( y = 0 ∣ x 1 , x 2 , x 3 ) P(y=0|x_1,x_2,x_3) P ( y = 0 ∣ x 1 ​ , x 2 ​ , x 3 ​ ) ,通过比较两者大小来做出判断。 在这个问题中, y y y 表示是否挂科, x 1 , x 2 , x 3 x_1, x_2, x_3 x 1 ​ , x 2 ​ , x 3 ​ 分别表示是否喝酒、逛街、学习。 我们知道,对于条件概率,有以下公式: P ( A ∣ B ) = P ( A B ) P ( B ) P(A|B)=\frac{P(AB)}{P(B)} P ( A ∣ B ) = P ( B ) P ( A B ) ​ P ( B ∣ A ) = P ( A B ) P (

Unsupervised Cross-Dataset Person Re-Identification by Transfer Learning of Spatial-Temporal Pattern

我只是一个虾纸丫 提交于 2020-02-14 07:32:31
Unsupervised Cross-Dataset Person Re-Identification by Transfer Learning of Spatial-Temporal Patterns (2018)阅读笔记 对于无监督学习,华南大学吕建明、杨灿等人提出了基于时空模型无监督迁移学习的行人重识别,解决的目标是跨数据集的Person Reid。方法是多模态数据融合+迁移学习(CVPR 2018) Introduce 多数所提出的人员重新识别算法都对单标签数据集进行了有监督的训练和测试,因此,将这些训练后的模型直接部署到大规模的现实世界相机网络可能会因拟合不足而导致性能不佳。通过使用从目标域收集的大量未标记数据来逐步优化模型具有挑战性。为了解决这一挑战,文章提出了一种无监督的增量学习算法TFusion,该方法通过目标域内行人时空模式的迁移学习来实现。 Contribution 1.提出了一种新颖的方法,通过迁移源数据集中的视觉分类器来学习未标记目标数据集中行人的时空格局。该算法不需要有关相机空间分布的任何先验知识,也不需要有关人们在目标环境中如何移动的任何假设。 2.提出一种贝叶斯融合模型,该模型将学习的时空模式和视觉特征相结合,以在未标记的目标数据集中实现高性能的行人Re-ID。 3.提出了一种基于学习排名的相互促进程序

朴素贝叶斯分类器Naive Bayes

☆樱花仙子☆ 提交于 2020-02-03 06:51:34
优点Naive Bayes classifiers tend to perform especially well in one of the following situations: When the naive assumptions actually match the data (very rare in practice) For very well-separated categories, when model complexity is less important For very high-dimensional data, when model complexity is less important 来源: https://www.cnblogs.com/focusonoutput/p/12254528.html

朴素贝叶斯分类器(伯努利贝叶斯+高斯贝叶斯+多项式贝叶斯)

送分小仙女□ 提交于 2020-02-03 00:58:58
1 from sklearn.datasets import load_diabetes 2 X,y=load_diabetes().data,load_diabetes().target 3 X_train,X_test,y_train,y_test=train_test_split(X,y,random_state=8) 4 lr=LinearRegression().fit(X_train,y_train) 5 print("the coefficient:{}".format(lr.coef_)) 6 print('the intercept:{}'.format(lr.intercept_)) 7 print("the score of this model:{:.3f}".format(lr.score(X_test,y_test))) 1 import matplotlib.pyplot as plt 2 plt.scatter(X[:,0],X[:,1],c=y,cmap=plt.cm.spring,edgecolors='k') 3 plt.show() 1 #伯努利贝叶斯分类器 2 from sklearn.naive_bayes import BernoulliNB 3 bnb=BernoulliNB() 4 bnb.fit(X_train,y_train)

《机器学习实战》笔记(七):Ch7 - 利用AdaBoost元算法提高分类性能

不想你离开。 提交于 2020-02-01 00:20:25
第七章 利用AdaBoost元算法提高分类性能([代码][ch07]) AdaBoost算法的优缺点 优点: 泛化错误率低,易编码,可以应用再大部分分类器上,无参数调整。 缺点: 对离群点敏感。 使用数据类型: 数值型和标称型数据。 bagging: 基于数据随机重抽样的分类器构造方法 在原始数据选择S次后得到S个数据集的一种技术。新数据集和原数据集的大小相等。每个数据集通过原始样本中随机替换得到的。 boosting 收集数据:可以使用任意方法。 准备数据:依赖于所使用的弱分类器类型,本章使用的是单层决策树,这种分类器可以处理任何数据类型。当然也可以使用任意分类器作为弱分类器,第2章到第6章中的任一分类器都可以充当弱分类器。作为弱分类器,简单分类器的效果更好。 分析数据:可以使用任意方法。 训练算法: Adaboost的大部分时间都用在训练上,分类器将多次在同一数据集上训练弱分类器。 测试算法:计算分类的错误率。 使用算法:同SVM一样, Adaboost预测两个类别中的一个。如果想把它应用到多个类次后别的场合,那么就要像多类SVM中的做法一样对。 训练算法: 基于错误提升分类器的性能 AbaBoost算法会不断得重复训练和调整权重的过程,直到悬链错误率为0或者弱分类器的数目达到用户的制定值为止。 基于单层决策树构建弱分类器 伪代码 将minError设置为无穷大