贝叶斯分类算法

基于python的贝叶斯分类算法(数据集为Iris_data)

匿名 (未验证) 提交于 2019-12-02 22:54:36
#coding:utf-8 import math Iris_setosa_data=[] Iris_versicolor_data=[] Iris_virginica_data=[] #读取训练数据集,这里我将每种花取前45条数据,剩下的5条数据另外存入测试数据集 def read_train_data(filename): f=open(filename,'r') all_lines=f.readlines() for line in all_lines[0:45]: line=line.strip().split(',') Iris_setosa_data.append(line[0:4]) #Iris_setosa_label+=1 for line in all_lines[51:95]: line=line.strip().split(',') Iris_versicolor_data.append(line[0:4]) #Iris_versicolor_label+=1 for line in all_lines[101:145]: line=line.strip().split(',') Iris_virginica_data.append(line[0:4]) #Iris_virginica_label+=1 return Iris_setosa_data

【分类算法】朴素贝叶斯(Naive Bayes)

*爱你&永不变心* 提交于 2019-12-02 19:15:30
0 - 算法   给定如下数据集 $$T=\{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\},$$ 假设$X$有$J$维特征,且各维特征是独立分布的,$Y$有$K$种取值。则对于输入$x$,朴素贝叶斯算法的输出为 $$y=arg\max_{c_k}P(Y=c_k)\prod_j P(X^{(j)}=x^{(j)}|Y=c_k),j=1,\cdots,J,k=1,\cdots,K,$$ 1 - 推导   朴素贝叶斯的基本公式为 $$P(B|A)=\frac{P(A|B)P(B)}{P(A)},$$   在数据集$T=\{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\},$中,有如下几个公式成立 $$\begin{align} a+b \end{align}$$ 来源: https://www.cnblogs.com/CZiFan/p/11759980.html

朴素贝叶斯分类算法

為{幸葍}努か 提交于 2019-12-01 22:41:37
贝叶斯定理 是关于随机事件A和B的条件概率的一则定理(比如常见的:P(A|B)是在B发生的情况下A发生的可能性)。 朴素 的含义是各特征相互独立,且同等重要。某些 分类 算法均以贝叶斯定理为基础。由此产生了 朴素贝叶斯分类算法 。 朴素贝叶斯分类算法的思想基础是:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类项属于哪个类别。 分类算法的主要任务是构造分类器。 评价分类器的质量可以从这个视角考虑下:首先要定义,分类器的正确率指分类器正确分类的项目占所有被分类项目的比率。通常使用回归测试来评估分类器的准确率,最简单的方法是用构造完成的分类器对训练数据进行分类,然后根据结果给出正确率评估。但这不是一个好方法,因为使用训练数据作为检测数据有可能因为过分拟合而导致结果过于乐观,所以一种更好的方法是 在构造初期将训练数据一分为二,用一部分构造分类器,然后用另一部分检测分类器的准确率 。 拉普拉斯平滑对于改善朴素贝叶斯分类器的分类效果有着积极的作用。拉普拉斯平滑:为了解决零概率的问题,法国数学家拉普拉斯最早提出用加1的方法估计没有出现过的现象的概率,所以加法平滑也叫做拉普拉斯平滑。假定训练样本很大时,每个分量x的计数加1造成的估计概率变化可以忽略不计,但可以方便有效的避免零概率问题。 示例1 计算先验概率和类条件概率 计算后验概率 因为P(是|X)>P(否

通俗易懂的朴素贝叶斯分类

安稳与你 提交于 2019-12-01 08:35:52
概述 贝叶斯分类算法是统计学的一种概率分类方法,朴素贝叶斯分类是贝叶斯分类中最简单的一种。其分类原理就是利 用贝叶斯公式根据某特征的先验概率计算出其后验概率,然后选择具有最大后验概率的类作为该特征所属的类。之 所以称之为”朴素”,是因为贝叶斯分类只做最原始、最简单的假设:所有的特征之间是统计独立的。 1.条件概率公式 条件概率(Condittional probability),就是指在事件B发生的情况下,事件A发生的概率,用P(A|B)来表示。 根据文氏图可知:在事件B发生的情况下,事件A发生的概率就是P(A∩B)除以P(B)。 同理可得: 所以 全概率公式:如果事件 构成一个完备事件且都有正概率,那么对于任意一个事件B则 有: 2.贝叶斯推断 根据条件概率和全概率公式,可以得到贝叶斯公式如下 : P(A)称为"先验概率”(Prior probability),即在B事件发生之前,我们对A事件概率的一个判断。 P(A| B)称为"后验概率" (Posterior probability),即在B事件发生之后,我们对A事件概率的重新评估。 P(B |A)/P(B)称为"可能性函数”(Likely hood), 这是一个调整因子,使得预估概率更接近真实概率。 所以条件概率可以理解为:后验概率=先验概率*调整因子 如果”可能性函数">1,意味着"先验概率"被增强

几个常用算法的适应场景及其优缺点!

℡╲_俬逩灬. 提交于 2019-11-29 07:56:30
机器学习算法太多了,分类、回归、聚类、推荐、图像识别领域等等,要想找到一个合适算法真的不容易,所以在实际应用中,我们一般都是采用启发式学习方式来实验。通常最开始我们都会选择大家普遍认同的算法,诸如SVM,GBDT,Adaboost,现在 深度学习 很火热, 神经网络 也是一个不错的选择。 假如你在乎精度(accuracy)的话,最好的方法就是通过交叉验证(cross-valida ti on)对各个算法一个个地进行 测试 ,进行比较,然后调整参数确保每个算法达到最优解,最后选择最好的一个。但是如果你只是在寻找一个“足够好”的算法来解决你的问题,或者这里有些技巧可以参考,下面来分析下各个算法的优缺点,基于算法的优缺点,更易于我们去选择它。 1.天下没有免费的午餐 在机器学习领域,一个基本的定理就是“没有免费的午餐”。换言之,就是没有算法能完美地解决所有问题,尤其是对监督学习而言(例如预测建模)。 举例来说,你不能去说神经网络任何情况下都能比决策树更有优势,反之亦然。它们要受很多因素的影响,比如你的数据集的规模或结构。 其结果是,在用给定的测试集来评估性能并挑选算法时,你应当根据具体的问题来采用不同的算法。 当然,所选的算法必须要适用于你自己的问题,这就要求选择正确的机器学习任务。作为类比,如果你需要打扫房子,你可能会用到吸尘器、扫帚或是拖把,但你绝对不该掏出铲子来挖地。 2. 偏差

sklearn之朴素贝叶斯实战

喜夏-厌秋 提交于 2019-11-28 09:17:25
朴素贝叶斯之多项式模型 MultinomialNB 实现了数据服从多项式分布时的贝叶斯算法。 import numpy as np #随机产生0-4之间的整数,产六组,一组100个 x = np .random .randint ( 5 , size=( 6 , 10 )) y = np .array ([ 1 , 2 , 3 , 4 , 5 , 6 ]) from sklearn .naive _bayes import MultinomialNB mnb = MultinomialNB() ; mub_model = mnb .fit ( x , y ) print(mub_model .predict ( x [ 2 : 3 ])) 结果: [ 3 ] 朴素贝叶斯之高斯模型 GaussianNB 实现了朴素贝叶斯的高斯模型( Gaussian Naive Bayes )的分类算法。 from sklearn import datasets iris = datasets.load_iris() from sklearn.naive_bayes import GaussianNB gnb = GaussianNB () gnb_model = gnb.fit(iris. data , iris.target) y_pred = gnb_model.predict(iris.

数据挖掘十大算法(九):朴素贝叶斯 python和sklearn实现

大憨熊 提交于 2019-11-28 09:16:59
第三个算法终于算是稍有了解了,其实当你结合数据了解了它的实现原理后,你会发现确实很朴素。这里对朴素贝叶斯算法做一个介绍和总结,包括( 原理、一个代码示例、sklearn实现 ),皆为亲自实践后的感悟,下面进入正文。 原理: 首先我们需要了解概率论的一些简单知识: 最后推导出的就是贝叶斯公式,这里说一下我的感悟:上面的公式如果就这样不结合数据来看,是很容易理解的,我用了几分钟便了解了这个高中学过的东西。但是在我将它和实际数据之间联系起来时,却花了几个小时。毕竟得到一个公式只是基础,如果不能在数据上运用得当那也是无用武之地。下面就这个问题说一下: 朴素贝叶斯的原理: 根据一些先验概率计算Y变量属于某个类别的后验概率 先验概率: 是指现有数据根据以往的经验和分析得到的概率 后验概率: 事情已经发生,要求这件事情发生的原因是由某个因素引起的可能性的大小 一个通俗的理解: 你求出了你在百思图买了一双白鞋的概率,那么如何得知你买了一双白鞋而这双白鞋就在百思图的概率呢。 这就是利用先验概率来求得后验概率的问题,再拿一个数据说明(引入他人的): 上表中的信息反映的是某P2P企业判断其客户是否会流失(churn),而影响到该变量的因素包含年龄、性别、收入、教育水平、消费频次、支持。那根据这样一个信息,我该如何理解朴素贝叶斯的思想呢?再来看一下朴素贝叶斯公式: 从公式中可知

学习sklearn朴素贝叶斯

爷,独闯天下 提交于 2019-11-28 09:09:33
不同的贝叶斯假设数据的分布不同。 暂时全部使用默认参数 高斯朴素贝叶斯 """ 多项式朴素贝叶斯分类器适用于具有离散特征的分类(例如,用于文本分类的字数)。 多项分布通常需要整数特征计数。然而,在实践中,诸如tf-idf的分数计数也可以起作用。 """ from sklearn import datasets iris = datasets . load_iris ( ) from sklearn . naive_bayes import GaussianNB gnb = GaussianNB ( ) gnb . fit ( iris . data , iris . target ) y_pred = gnb . predict ( iris . data ) print ( 'number of mislabeled points out of a total %d points : %d' % ( iris . data . shape [ 0 ] , ( iris . target != y_pred ) . sum ( ) ) ) gnb . score ( iris . data , iris . target ) gnb . get_params ( ) number of mislabeled points out of a total 150 points : 6

sklearn中的朴素贝叶斯算法

筅森魡賤 提交于 2019-11-28 09:09:01
sklearn中的朴素贝叶斯分类器 之前 理解朴素贝叶斯 中的结尾对sklearn中的朴素贝叶斯进行了简单的介绍. 此处对sklearn中的则对sklearn中的朴素贝叶斯算法进行比较详细介绍.不过手下还是对朴素贝叶斯本身进行一些补充. 朴素贝叶斯算法 朴素贝叶斯算法的数学基础都是围绕贝叶斯定理展开的,因此这一类算法都被称为朴素贝叶斯算法. 朴素贝叶斯的分类原理是通过对象的先验概率,利用贝叶斯公式计算出后验概率.即对象属于某一类的概率. 选择具有后验概率最大的类作为该对象所属的类.同时朴素–‘特征为独同分布’, 同时因为先验概率需要我们先假设一个事件分布的概率分布方式(三种),因此也就有了我们在sklearn中对应的三种朴素贝叶斯算法 高斯朴素贝叶斯分类器(默认条件概率分布概率符合高斯分布) 多项式朴素贝叶斯分类器(条件概率符合多项式分布) 伯努利朴素贝叶斯分类器(条件概率符合二项分布) 尽管其假设过于简单,但是在很多实际情况下,朴素贝叶斯工作得很好,特别是文档分类和垃圾邮件过滤。 这些工作都要求一个小的训练集来估计必需参数。 同时相比于其他更复杂的方法,朴素贝叶斯学习器和分类器非常快。 分类条件分布的解耦意味着可以独立单独地把每个特征视为一维分布来估计。 这样反过来有助于缓解维度灾难带来的问题。 最后总结其特点有以下几个 属性可以离散可以连续 数学基础扎实,分类效率稳定

4 朴素贝叶斯法

时光毁灭记忆、已成空白 提交于 2019-11-27 21:48:41
朴素贝叶斯法 朴素贝叶斯(naïve Bayes)法是基于贝叶斯定理与特征条件独立假设的分类方法,是一种生成模型。 朴素贝叶斯法的学习与分类 基本方法 朴素贝叶斯法通过训练数据集学习联合概率分布 P(X,Y)。具体地,学习先验概率分布 P(Y=c k )及条件概率分布 P(X=x|Y=c k )。于是得到联合概率分布 P(X=x,Y=y)=P(X=x|Y=y)• P(Y=y) 先验概率:事件发生前的预判概率,一般都是单独事件概率。如 P(Y)或 P(X) 后验概率:事件发生后求的反向条件概率;或者说,基于先验概率求得的反向条件概率。如 P(Y|X) 条件概率:一个事件发生后另一个事件发生的概率。如 P(X|Y) 实例:假设y是文章种类,是一个枚举值;x是向量,表示文章中各个单词的出现次数。 在拥有训练集的情况下,显然除了后验概率P(y|x)中的x来自一篇新文章无法得到,p(x),p(y),p(x|y)都是可以在抽样集合上统计出的。 两者之间的关系:先验概率是获得后验概率的前提。 朴素贝叶斯法对条件概率分布作了条件独立性的假设: 朴素贝叶斯法分类时,对给定的输入x,通过学习到的模型计算后验概率分布P(Y=c k |X=x),将后验概率最大的类作为x的类输出。后验概率计算根据贝叶斯定理进行: 于是,朴素贝叶斯分类器可表示为 : 注意到,在上式中分母对所有C k 都是相同的,所以