朴素贝叶斯

朴素贝叶斯(Naive Bayes)详解 贝叶斯决策论、朴素贝叶斯原理与算法实现、具体应用。 阅读详情

1. 朴素贝叶斯介绍

朴素贝叶斯法是基于贝叶斯定理(P(A|B)=\frac{P(B|A)\cdot P(A)}{P(B)})与特征条件独立假设的分类方法。对于给定的训练数据集,首先基于特征条件独立假设学习输入/输出的联合概率分布;然后基于此模型,对给定的输入x, 利用贝叶斯定理求出后验概率最大的输出y。

2. 朴素贝叶斯特点

优点:在数据较少的情况下仍然有效,可以处理多类别问题

缺点:对于输入数据的准备方式较为敏感。

使用数据类型:标称型数据

3. 朴素贝叶斯法的学习与分类

3.1.1基本方法

       设输入空间X \in R^{n}为n维向量的集合,输出空间为类标记集合Y=\left \{ c_{1},c_{2},...,c_{k} \right \}。输入特征为特征向量x\in X,输出为类标记y\in Y。x是定义在输入空间X上面的随机变量,y是定义在输出空间Y上面的随机变量。p\left ( x,y \right )是x和y的联合概率分布,训练集                                                            

                                                        \large T=\left \{ (x_{1},y_{1}),(x_{2},y_{2}),...,(x_{N},y_{N}) \right \}

由p\left ( x,y \right )独立同分布产生。

        朴素贝叶斯法通过训练数据集学习联合概率分布p\left ( x,y \right )。具体地,学习以下先验概率分布和条件概率分布。先验概率分布:

                                                        p(Y=c_{k}),\quad \quad k=1,2,...,K \quad \quad \quad (3.1)

条件概率分布

                                                        p(X=x|Y=c_{k})=p(X^{(1)}=x^{(1)},...,X^{(n)}=x^{(n)}|Y=c_{k}),\quadk=1,2,...K \quad \quad (3.2)

于是就学到了联合概率分布p\left ( x,y \right )

         条件概率有指数级数量的参数,其估计实际是不可行的。事实上,假设,假设x^{(j)}可取值有S_{j}个,j=1,2,...,n,Y可取值有K个,那么参数个数为    K\prod_{j=1}^{n}S_{j}.

\LARGE \Rightarrow由x^{(j)}可取值有S_{j}个,可知

                                                                     x^{(1)}\rightarrow S_{1} 个取值;

                                                                      x^{(2)}\rightarrow S_{2} 个取值

                                                                      ......

                                                                      x^{(j)}\rightarrow S_{j} 个取值

又由于 

                                 p(X=x|Y=c_{k})=p(X^{(1)}=x^{(1)},...,X^{(n)}=x^{(n)}|Y=c_{k})

\LARGE \Rightarrow                         p(X=x|Y=c_{k})=p(X^{(1)}=x^{(1)},...,X^{(n)}=x^{(n)}|Y=c_{k}) \vspace{=p(X^{(1)}=x^{(1)}|Y=c_{k})\cdot p(X^{(2)}=x^{(2)}|Y=c_{k})\cdot ....\cdot p(X^{(n)}=x^{(n)}|Y=c_{k})} \vspace{=\prod_{j=1}^{n} p(X^{(j)}=x^{(j)}|Y=c_{k}) \quad\quad \quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad(3.3)}

 

\LARGE \Rightarrow参数个数为

                                           S_{1} \cdot S_{2} \cdot S_{3}\cdot ... \cdot S_{j} \cdot K =K\prod_{j=1}^{n}s_{j}

 

关于朴素贝叶斯的条件独立性假设的理解:

朴素贝叶斯分类时,对于给定的输入x的,通过学习到的模型计算后验概率 分布p(Y=c_{k}|X=x),将后验概率最大的类作为x的类输出。后验概率计算根据贝叶斯定理可知:

                                     p(Y=c_{k}|X=x)=\frac{p(X=x|Y=c_{k})p(Y=c_{k})}{\sum_{k}^{ }p(X=x|Y=c_{k})p(Y=c_{k})} \quad \quad \quad \quad(3.4)

推导过程如下:

由贝叶斯定理得 

                                      p(Y=c_{k}|X=x)=\frac{p(X=x|Y=c_{k})p(Y=c_{k})}{p(X=x)}

根据全概率公式可知

                                      p(X=x)=\sum_{k}^{ }p(X=x|Y=c_{k})p(Y=c_{k}),k=1,2,...,K

所以可知

                                     p(Y=c_{k}|X=x)=\frac{p(X=x|Y=c_{k})p(Y=c_{k})}{\sum_{k}^{ }p(X=x|Y=c_{k})p(Y=c_{k})},\quad k=1,2,...,K (3.5)

将式(3.3)带入式(3.4)得

                       p(Y=c_{k}|X=x)=\frac{p(Y=c_{k})\prod_ {j}^{ }p(X^{(j)}=x^{(j)}|Y=c_{k})}{\sum_{k} p(Y=c_{k})\prod_ {j}^{ }p(X^{(j)}=x^{(j)}|Y=c_{k}) }

这是朴素贝叶斯分类的基本公式,于是有朴素贝叶斯分类器可表示为

                      y=f(x)=\arg \max_{c_{k}}\frac{p(Y=c_{k})\prod_ {j}^{ }p(X^{(j)}=x^{(j)}|Y=c_{k})}{\sum_{k} p(Y=c_{k})\prod_ {j}^{ }p(X^{(j)}=x^{(j)}|Y=c_{k}) },\quad \quad (3.6)

又因为,在式中(3.7)分母对所有的c_{k}都是相同的,所以

                        y=\arg \max_{c_{k}}p(Y=c_{k})\prod_{j}p(X^{(j)}=x^{(j)}|Y=c_{k}),\quad \quad (3.6)

4.1.2后验概率最大化的含义

     假设选择0-1损失函数:

                                           L(Y,f(X))=\left\{\begin{matrix} 1, \quad Y\neq f(X)\\ 0, \quad Y=f(X) \end{matrix}\right.

式中f(X)是分类决策函数。这时,期望风险函数为

                                           R_{exp}(f)=E\left [ L(Y,f(X)) \right ]

期望是对联合分布p(X,Y)取的,由此条件期望为

                                           R_{exp}(f)=E_{X}\sum_{k=1}^{K}\left [ L(c_{k},f(X)) \right ]p(c_{k}|X)

具体这一步是怎么来的呢,如下所示:

                                   

      要是期望风险最小,也就是这个图中的积分最小,那么对于任意的一个X=x在P(X=x)为常数条件下内层积分最小,即期望风险最小等价于条件期望最小。

而为了使得期望风险最小化,只需对X=x逐个极小化,则有:

                                       

 \huge \Rightarrow由期望风险最小化就可以得到后验概率最大化准则:

                                                                \large f(x)=\arg \max_{c_{k}}p(c_{k}|X=x)

也就是朴素贝叶斯所采用的原理。

 

4. 朴素贝叶斯法的参数估计

4.1 极大似然估计

在朴素贝叶斯学习中,学习意味着估计\large p(Y=c_{k})和\large p(x^{(j)}=x^{(j)}|Y=c_{k})。可以应用极大似然估计法估计相应的概率。先验概率\large p(Y=c_{k})的极大似然估计是

                                                              \large p(Y=c_{k})=\frac{\sum_{i=1}^{N}I(y_{i}=c_{k})}{N},\quad k=1,2,...,K \quad \quad \quad (4.1)

设第j个特征\large x^{(j)}可能取值的集合为\large \left \{ a_{j1},a_{j2},...,a_{js_{j}} \right \},条件概率\large p(X^{(j)}=a_{jl}|Y=c_{k})的极大似然估计是

                                                \large p(X^{(j)}=a_{jl}|Y=c_{k})=\frac{\sum_{i=1}^{N}I(x^{(j)}=a_{jl},y_{i}=c_{k})}{\sum_{i=1}^{N}I(y_{i}=c_{k})}

                                                \large j=1,2,...,n;\quad l=1,2,...,S_{j};\quad k=1,2,...,K \quad \quad \quad (4.2)                           

式中,\large x_{i}^{(j)}是第i个样本的第j个特征;\large a_{jl}是第j个特征可能取的第\large l个值;\large I为指示函数。

4.2 学习与分类算法

输入:训练数据

                                               \large T=\left \{ (x_{1},y_{1}),(x_{2},y_{2}),...,(x_{N},y_{N}) \right \}

其中\large x_{i}=(x_{1}^{(1)},x_{2}^{(2)},...,x_{i}^{(n)})^{\mathrm{T}},\large x_{i}^{(j)}是第i个样本的第j个特征,\large x_{i}^{(j)}\in \left \{ a_{j1},a_{j2},...,a_{jS_{j}} \right \},\large a_{jl}是第j个特征可能取的第\large l个值,\large j=1,2,...,n,l=1,2,...,S_{j},\quad y_{i}\in \left \{ c_{1},c_{2},...,c_{k} \right \};实例\large x;

输出:实例\large x的分类。

(1)计算先验概率及条件概率

                   先验概率:         \large p(Y=c_{k})=\frac{\sum_{i=1}^{N}I(y_{i}=c_{k})}{N},\quad k=1,2,...,K

                  条件概率:          \large p(X^{(j)}=a_{jl}|Y=c_{k})=\frac{\sum_{i=1}^{N}I(x^{(j)}=a_{jl},y_{i}=c_{k})}{\sum_{i=1}^{N}I(y_{i}=c_{k})}

                                            \large j=1,2,...,n;\quad l=1,2,...,S_{j};\quad k=1,2,...,K

(2)对于给定的实例\large x=(x^{(1)},x^{(2)},...,x^{(n)})^{\mathrm{T}},计算

                                           \large p(Y=c_{k})\prod _{j=1}^{n}p(X^{(j)}=x^{(j)}|Y=c_{k}),\quad \quad k=1,2,...,K

(3)确定实例\large x的类

                                          \large y=\arg\max_{c_{k}}p(Y=c_{k})\prod_{j=1}^{n}p(X^{(j)}=x^{(j)}|Y=c_{k})

例1.试由表1的训练数据学习朴素贝叶斯分类器并确定\large x=(2,S)^{\mathrm{T}}的类标记\large y,表中\large X^{(1)},X^{(2)}为特征,取值的集合分别为

\large A_{1}={1,2,3},A_{2}=\left \{ S,M,L \right \},Y 为类标记,\large Y\in C=\left \{ 1, -1 \right \}

                                                                                       表1   训练数据

解答如下:

 

代码如下:

#!/usr/bin/env python3
#coding=utf-8

import numpy as np

class NaiveBeyes(object):
    #获取训练数据
    def getTrainSet(self):
        dataSet=np.array([[1,'S'],[1,'M'],[1,'M'],[1,'S'],[1,'S'],[2,'S'],[2,'M'],[2,'M'],[2,'L'],[2,'L'],[3,'L'],        [3,'M'],[3,'M'],[3,'L'],[3,'L']])
        labels=[-1,-1,1,1,-1,-1,-1,1,1,1,1,1,1,1,-1]
        return dataSet,labels

    def classify(self,trainData,labels,features):
        #先计算先验概率
        #用于存放不同类别的先验概率
        labelProb={}
        for label in labels:
            labelProb[label]=labels.count(label)/float(len(labels))

        #计算特征和标签同时发生的概率
        # 用来存放特征和标签同时发生时的概率
        p_xy = {}
        for tagvalue in labelProb.keys():

            #获取Labels中出现tagvalue值的所有数值的下标索引
            tagvalueIndex=[index for index,label in enumerate(labels) if label==tagvalue]
            for i in range(len(features)):
                #获取features中的值在训练集中出现的所有下标索引
                x_index=[index for index,feature in enumerate(trainData[:,i]) if feature==features[i]]
                xy_count=len(set(tagvalueIndex) & set(x_index)) #如果它们索引相同,说明它们特征和标签同时发生
                key=str(features[i])+'*'+str(tagvalue)
                p_xy[key]=xy_count/float(len(labels))

        #计算条件概率
        #创建空字典,并将条件概率存入其中
        prob={}
        for tagvalue in labelProb.keys():
            for feature in features:
                pkey=str(feature)+'|'+str(tagvalue)
                prob[pkey]=p_xy[str(feature)+'*'+str(tagvalue)]/float(labelProb[tagvalue])

        #计算[2,S]所属类别
        #创建空字典用于存放[2,S]所属不同类别的概率
        resultProb={}
        for tagvalue in labelProb.keys():
            resultProb[tagvalue]=labelProb[tagvalue]
            for x in features:
                resultProb[tagvalue]=resultProb[tagvalue]*prob[str(x)+'|'+str(tagvalue)]
        #max(dict,key=dict.get)表示获取字典中值最大所对应的键
        result_feature=max(resultProb,key=resultProb.get)
        return result_feature

if __name__=='__main__':
    NB=NaiveBeyes()
    #训练数据
    trainData,labels=NB.getTrainSet()
    features=np.array([2,'S'])
    result=NB.classify(trainData,labels,features)
    print("[2,'S']的类别标记为:{}".format(result))


4.3贝叶斯估计

用极大似然估计可能会出现所要估计的概率值为0的情况,这时会影响到后验概率的计算结果,使分类产生偏差。解决这一问题的方法是采用朴素贝叶斯估计。具体的是如下所示:

                          \large p_{\lambda }(X^{(j)}=a_{jl}|Y=c_{k})=\frac{\sum_{i=1}^{N}I(x_{i}^{(j)}=a_{jl},y_{i}=c_{k})+\lambda }{\sum_{i=1}^{N}I(y_{i}=c_{k})+S_{j} \lambda } \quad (4.3)

式中\large \lambda \geq 0。等价于在随机变量各个取值的频数上赋值一个正数\large \lambda >0。当\large \lambda =0时就是极大似然估计。常取\large \lambda =1,这时称为拉普拉斯平滑。显然,对于任何l=1,2,...,S_{j},\quad k=1,2,...,K,有

                                                                  \large p_{\lambda }(X^{(j)}=a_{jl}|Y=c_{k})> 0

                                                                \large \sum _{l=1}^{S_{j}}p(X^{(j)}=a_{jl}|Y=c_{k})= 1

表明式(4.3)确实是一个概率分布,同时,先验概率的贝叶斯估计为

                                                            \large p_{\lambda }(Y=c_{k})=\frac{\sum_{i=1}^{N}I(y_{i}=c_{k})+\lambda }{N+K\lambda } \quad \quad(4.4)

这里的K应该是指类别数

例2. 同例1,按照拉普拉斯平滑估计概率,即取\large \lambda =1。

 解答过程如下:

           

代码如下:

#!/usr/bin/env python3
#coding=utf-8

import numpy as np

class NaiveBeyes(object):
    #初始化K,j,λ值
    def __init__(self):
        self.D=1 #表示λ=1
        self.K=2
        self.S=3
    #获取训练数据
    def getTrainSet(self):
        dataSet=np.array([[1,'S'],[1,'M'],[1,'M'],[1,'S'],[1,'S'],[2,'S'],[2,'M'],[2,'M'],[2,'L'],[2,'L'],[3,'L'],[3,'M'],[3,'M'],[3,'L'],[3,'L']])
        labels=[-1,-1,1,1,-1,-1,-1,1,1,1,1,1,1,1,-1]
        return dataSet,labels

    def classify(self,trainData,labels,features):
        #先计算先验概率
        #用于存放不同类别的先验概率
        labelProb={}
        for label in labels:
            labelProb[label]=(labels.count(label)+self.D)/float(len(labels)+self.K*self.D)

        #计算条件概率
        # 用来存放特征和标签同时发生时的概率
        prob = {}
        for tagvalue in labelProb.keys():
            #获取labels中出现tagvalue值的所有数值的下标索引
            tagvalueIndex=[index for index,label in enumerate(labels) if label==tagvalue]
            #获取labels中每个标签出现的个数
            tagvalueCount=labels.count(tagvalue)
            for i in range(len(features)):
                #获取features中的值在训练集中出现的所有下标索引
                x_index=[index for index,feature in enumerate(trainData[:,i]) if feature==features[i]]
                xy_count=len(set(tagvalueIndex) & set(x_index)) #如果它们索引相同,说明它们特征和标签同时发生
                key=str(features[i])+'|'+str(tagvalue)
                prob[key]=(xy_count+self.D)/float(tagvalueCount+self.S*self.D)


        #计算[2,S]所属类别
        #创建空字典用于存放[2,S]所属不同类别的概率
        resultProb={}
        for tagvalue in labelProb.keys():
            resultProb[tagvalue]=labelProb[tagvalue]
            for x in features:
                resultProb[tagvalue]=resultProb[tagvalue]*prob[str(x)+'|'+str(tagvalue)]
        #max(dict,key=dict.get)表示获取字典中值最大所对应的键
        result_feature=max(resultProb,key=resultProb.get)
        return result_feature

if __name__=='__main__':
    NB=NaiveBeyes()
    #训练数据
    trainData,labels=NB.getTrainSet()
    features=np.array([2,'S'])
    result=NB.classify(trainData,labels,features)
    print("[2,'S']的类别标记为:{}".format(result))

 

 

 

 

                                                              

                                                      

 

 

 

 

 

 

 

 

朴素贝叶斯算法 朴素贝叶斯优缺点:优点:在数据较少的情况下仍然有效,可以处理多类别问题缺点:对于输入数据的准备方式较为敏感,由于朴素贝叶斯的“特征条件独立”特点,所以会带来一些准确率上的损失。 阅读详情

相关推荐

深入理解朴素贝叶斯(Naive Bayes)

朴素贝叶斯是经典的机器学习算法之一,也是为数不多的基于概率论的分类算法。朴素贝叶斯原理简单,也很容易实现,多用于文本分类,比如垃圾邮件过滤。该算法虽然简单,但是由于笔者不常用,总是看过即忘,这是写这篇博文的初衷。当然,更大的动力来在于跟大家交流,有论述不妥的地方欢迎指正。

li8zi8fa的博客 9万+

朴素贝叶斯(Naive Bayes)

朴素贝叶斯

weixin_44992737的博客 1万+

使用Sklearn学习朴素贝叶斯算法

上一篇文章我向大家介绍了朴素贝叶斯工作的理论部分,需要看的小伙伴请移步:贝叶斯分类器,接下来,我们基于Sklearn机器学习库来使用以下具体的贝叶斯分类器算法。 1,sklearn中的贝叶斯分类器 Sklearn基于数据分布以及这些分布上的概率估计的改进,为我们提供了四个朴素贝叶斯的分类器。 类 含义 naive_bayes.BernoulliNB 伯努利分布下的朴素贝叶斯 naive_bayes.GaussianNB 高斯分布下的朴素贝叶斯 naive_bayes.Mu

理科男同学 2万+

【朴素贝叶斯】深入浅出讲解朴素贝叶斯算法(公式、原理)

朴素贝叶斯(Naive Bayes)是一种简单经典的分类算法,它的经典应用案例为人所熟知:文本分类(如垃圾邮件过滤)。条件概率:记事件A发生的概率为P(A),事件B发生的概率为P(B),则在B事件发生的前提下,A事件发生的概率即为条件概率,记为P(A|B)。

程序星空实验室 5万+

Python机器学习 — 朴素贝叶斯算法(Naive Bayes)

一、朴素贝叶斯算法 -- 简介        朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法。最为广泛的两种分类模型是决策树模型(Decision Tree Model)和朴素贝叶斯模型(Naive Bayesian Model,NBM)。       和决策树模型相比,朴素贝叶斯分类器(Naive Bayes Classifier,或 NBC)发源于古典数学理论,有着坚实的数学基础,...

ls秦 2万+

Scikit-Learn朴素贝叶斯

朴素贝叶斯把类似敲击声这样的特征概率化,构成一个西瓜的品质向量以及对应的好瓜/坏瓜标签,训练出一个标准的基于统计概率的好坏瓜模型,这些模型都是各个特征概率构成的。一般来说,纹理清晰的西瓜是好瓜的概率更大,假设是75%,如果把纹理清晰当作一种结果,然后去推测好瓜的概率,那么这个概率就被称为后验概率。朴素贝叶斯算法的核心思想是通过特征考察标签概率来预测分类,即对于给定的待分类样本,求解在此样本出现的条件下各个类别出现的概率,哪个最大,就认为此待分类样本属于哪个类别。先验概率是指事件发生前的预判概率。

Java/Python大数据随笔 1383

三种常用的朴素贝叶斯实现算法——高斯朴素贝叶斯、伯努利朴素贝叶斯、多项式朴素贝叶斯

在sklearn中,提供了若干种朴素贝叶斯的实现算法,不同的朴素贝叶斯算法,主要是对P(xi|y)的分布假设不同,进而采用不同的参数估计方式。我们能够发现,朴素贝叶斯算法,主要就是计算P(xi|y),一旦P(xi|y)确定,最终属于每个类别的概率,自然也就迎刃而解了。 常用的三种朴素贝叶斯为: 高斯朴素贝叶斯 伯努利朴素贝叶斯 多项式朴素贝叶斯 高斯朴素贝叶斯 适用于连续变量,其假定各个特征x...

ws19920726的博客 1万+

Sen+MK趋势分析

Sen+MK趋势分析

地理研究与算法的博客 4万+

贝叶斯分类(轻松理解朴素贝叶斯与半朴素贝叶斯)

贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。而朴素朴素贝叶斯分类是贝叶斯分类中最简单,也是常见的一种分类方法。这篇文章我尽可能用直白的话语总结一下我们学习会上讲到的朴素贝叶斯分类算法,希望有利于他人理解。 1   分类问题综述  对于分类问题,其实谁都不会陌生,日常生活中我们每天都进行着分类过程。例如,当你看到一个人,你的脑子下意识判断他是学生还是社会上的人;你可能经常会走在路上对身旁的朋友说“这个人一看就很有钱”之类的

Jav 8030

手把手教你用Wireshark抓包分析Profinet非周期通信(附实战案例)

本文详细解析了PROFINET非周期通信(RTA)的技术原理与实战应用,通过Wireshark抓包分析,揭示从PLC请求到驱动器响应的完整对话过程。涵盖实验环境搭建、关键配置步骤、典型参数访问流程及故障诊断案例,帮助工程师深入理解并优化工业网络通信性能。

Black的专栏 1050

12V转5V稳压电路详细分析(7805三端稳压,LM2596稳压)

7805线性三端稳压 DCDC的意思是直流变到直流(不同直流电源值的转换),只要符合这个定义都可以叫DCDC转换器,或称之为开关电源或开关调整器。 7805属于常用的线性三端稳压器,输入电压范围不大于35V,输入输出压差2V,最大输出电流1.5A,下图为原理图,其原理简单,使 用方便,深受很多用户的喜爱。但是其不足之处就是效率低,特别是压差越大时其效率越低。比如这里12V转5V的效率为 5V/12V≈41.7%。 如上电路是最经典的7805稳压5V电路,电路中有两个电容,电容的作用如下: ...

a2001444的博客 9万+

机器学习之朴素贝叶斯算法的详解(包含高斯朴素贝特斯、多项式朴素贝叶斯、伯努利朴素贝叶斯,以及相应算法的简单实现)

机器学习18_贝叶斯算法详解(2021.06.02) 一. 朴素贝叶斯算法 为什么需要朴素贝叶斯算法? 比如说,我们想预测一个人究竟是否能够侥幸在空难中生还,那么我们就需要建立一个分类模型来学习我们的训练集。在训练集中,其中一个人的特征是30岁,男,普通舱,他最终在空难中去世了。训练完成后,当我们使用训练好的模型进行测试的时候,测试的目标的特征也是30岁,男,普通舱,那么我们的模型必然会给这个人打上去世的标签。然而事实却不一定为此,也许这个人正好坐在了离逃生口最近的位置,他得到了第一时间的救治而生存下来了

weixin_40247876的博客 7655

斯坦福大学CS224d基础1:线性代数知识

本文为斯坦福CS229的内容,也是CS224d课程的背景数学知识。概括了在机器学习和深度学习中用到的大部分线性代数知识。为了便于大家查漏补缺,这里根据英文版本整理了一个中文版本。

龙心尘 2万+

高斯朴素贝叶斯,多项朴素贝叶斯,伯努利朴素贝叶斯

高斯朴素贝叶斯 GaussianNB 实现了运用于分类的高斯朴素贝叶斯算法。特征的可能性(即概率)假设为高斯分布: 参数使用最大似然法估计。 高斯朴素贝叶斯实现方法代码: '''高斯朴素贝叶斯''' def MyGaussianNB(trainMat='',Classlabels='',testDoc=''): # -----sklearn GaussianNB------- # 训练数据 X = np.array(trainMat) Y = np.arr.

viviliving的专栏 2591

用Python实现四叉树(quad tree)

import numpy as np #正方形类 class square: #lx、ly为左上角坐标(x对应行号,y对应列号),rx、ry为右下角坐标 def __init__(self,lx,ly,rx,ry): self.lx=lx self.ly=ly self.rx=rx self.ry=ry #检查该矩阵中是否满足条件 #参数:原矩阵,阈值 #返回值:布尔类型 def check(s

weixin_44164489的博客 5868

高分影像批处理第三回——RPC文件与几何校正

前言 前面两章部分完成了图像的基本组织和大气校正,可是对于遥感影像地理相关数据,精确的地理坐标也是非常关键的。L1级数据,可惜,并没有帮我们处理地理坐标系统。无论是打开ENVI还是用gdal工具查看图像元数据,其坐标系统都是错误的或者说是未读入的。因此本章节来解决这个问题。

weixin_43762038的博客 1万+

朴素贝叶斯算法_经典算法之朴素贝叶斯

本篇大纲:1、朴素贝叶斯算法简介2、朴素贝叶斯的三种类型3、朴素贝叶斯的两种平滑方式4、sklearn中相关API讲解上期回顾1、我们先列举了聚类算法的几种类型,包括原型聚类、层次聚类、密度聚类和其它聚类。并罗列出相应聚类算法中的一些典型聚类算法。2、我们阐述了聚类算法的评价指标,分为有标签(出于学习和研究目的)和无标签(出于真实应用场景)情况下的评价指标。其中,有标签时的评价指标有:混...

weixin_39637975的博客 6320

什么是朴素贝叶斯

人工智能

善良的小乔的博客 2644

综述性论文别再堆砌文献!用GPT-5.1 Thinking轻松攻克四大关键难点,真正实现高效高质撰写(附AI提示词)

逻辑构建上以往都是先梳理一篇文献的领域研究脉络,明确其发展阶段、核心议题等,再搭建初步的大纲,借助思维导图或者别的方式将筛选后的文献观点按主题归类到对应章节,理清楚每个章节间的递进或并列关系,最后再逐个章节进行补充过渡表述,那么做的目的其实就是摆脱文献堆砌问题。人工做法往往是对比不同文献的研究方法、数据来源与核心结论,再清晰标注每类成果的优缺点,找到文献中存在的争议焦点,找到之后再梳理争议产生的核心原因,最后在基于现有研究,推出还未被探索的研究方向,从而提炼出创新切入点。2)文献之间的相同点与不同点;

智能AI让学术科研更容易 175

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

朴素贝叶斯分类

机器学习的经典算法:朴素贝叶斯(naive byes)分类 贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。而朴素贝叶斯分类是贝叶斯分类中最简单,也是常见的一种分类方法。 一:贝叶斯原理 朴素贝叶斯分类算法是一个典型的统计学习方法,主要的理论基础就是贝叶斯公式。贝叶斯公式定义如下所示: 先验概率:通过经验来判断事情发生的概率。 后验概率:后验概率就是发生结果之后,推测原因的概率。 条件概率:事件 A 在另外一个事件 B 已经发生条件下的发生概率,表示为 P(A|B),读作

onlynb的博客 8885

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

详解朴素贝叶斯

目录1.概念2.朴素贝叶斯分类2.1 朴素贝叶斯公式定理2.2 例题分析2.3 朴素贝叶斯算法的朴素一词解释3. 朴素贝叶斯分类的优缺点 1.概念 贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故称之为贝叶斯分类。而朴素贝叶斯分类是贝叶斯分类中最简单,也是最常见的一种分类法。 分类问题综述 对于分类问题,其实谁都不陌生,日常生活中我们每天都进行折分类 过程。例如,当你看到一个人,你的脑子下意识判断他是学生还是社会上的人;你可能经常走在路上对身旁的朋友说“这个人一看就很有钱”之类的化,其实也是

suotanyu1595的博客 9871

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

sklearn机器学习之朴素贝叶斯

????上次我们讲到了决策树算法,都是基于sklearn实现的,这次我们要学习的内容是朴素贝叶斯,何为“朴素”,朴素的含义即特征之间相互独立,没有关联关系。对以前内容感兴趣的小伙伴可以参考以下内容????: 决策树模型: sklearn之决策树. 线性回归模型: sklearn机器学习之线性回归模型. ????今天我们来学习第二个概率模型,朴素贝叶斯,概率模型是不需要做标准化的,请大家牢记! 目录1.贝叶斯公式简介2.朴素贝叶斯的应用3.朴素贝叶斯的种类3.1 贝努力朴素贝叶斯3.2 高斯朴素贝叶斯3.

柳小葱的博客 5552

朴素贝叶斯+Python3实现高斯朴素贝叶斯

1. 什么是朴素贝叶斯法 朴素贝叶斯(naive Bayes)法是基于贝叶斯定理与特征条件独立假设的分类方法。对于给定的训练数据集,首先基于特征条件独立假设学习输入输出的联合概率分布;然后基于此模型,对给定的输入x,利用贝叶斯定理求出后验概率最大的输出y。朴素贝叶斯法实现简单,学习与预测的效率都很高,是一种常用的方法。 先举个例子来了解贝叶斯原理 一个袋子里有10个球,其中6个黑球,4个白球;那么随机抓取一个黑球的概率是0.6 这种情况下我们是站在上帝的视角,即知道事情的全貌再做判断(有多少个黑球,白球)在

justorderman的博客 5482
上一篇: anaconda和tensorflow的安装
下一篇: 关于问题TypeError: only length-1 arrays can be converted to Python scalars 的解决方法
DM_learner
博客等级 码龄9年 21粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值