精华内容
下载资源
问答
  • bayes

    2019-03-04 19:52:32
    from sklearn.datasets import fetch_20...from sklearn.naive_bayes import MultinomialNB # 朴素贝叶斯模型 from sklearn.model_selection import train_test_split # 数据集分割模块 from sklearn.featur...
    from sklearn.datasets import fetch_20newsgroups   # 新闻数据
    from sklearn.naive_bayes import MultinomialNB   # 朴素贝叶斯模型
    from sklearn.model_selection import train_test_split   # 数据集分割模块
    from sklearn.feature_extraction.text import CountVectorizer  # 文本特征向量化模块
    from sklearn.metrics import classification_report
    
    # 1.数据抓取
    news = fetch_20newsgroups(subset='all')
    print(len(news.data))
    
    # 2.数据预处理:训练集和测试集分割,文本特征向量化
    x_train, x_test, y_train, y_test = train_test_split(news.data, news.target, test_size=0.25, random_state=33)  # train:test = 3:1
    
    vec = CountVectorizer()
    x_train = vec.fit_transform(x_train)
    x_test = vec.transform(x_test)
    
    # 3.使用朴素贝叶斯进行训练
    mnb = MultinomialNB()  # 初始化分类器
    mnb.fit(x_train, y_train)  # 训练分类器
    y_pred = mnb.predict(x_test)  # 对测试集进行预测
    
    # 4.打印结果
    print('The Accuracy of Naive Bayes Classifier is: ', mnb.score(x_test, y_test))
    print(classification_report(y_test, y_pred))
    

     

    展开全文
  • Bayes

    2020-11-30 08:03:18
    <div><p>This Branch creates a dialogue to view and delete Bayesian and Non Bayesian information. As part of this I needed to change qof function wrap_gvalue_function to test for a KvpFrame as I was ...
  • BAYES

    2011-04-09 15:49:00
    bayes !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! java GUI!!!

    bayes !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    java GUI!!!

    展开全文
  • bayes-源码

    2021-03-18 11:45:39
    bayes
  • 机器学习bayes实现

    2017-05-30 21:44:12
    bayes
  • Think Bayes

    2016-11-16 13:09:34
    Think Bayes
  • naivebayes

    2016-10-25 18:39:15
    naivebayes
  • Bayes入门

    2015-03-11 14:35:50
    Bayes

    Bayes是machine learning的大部头,一直没敢涉及,但是躲是躲不开的,就趁当下小学一番。
    主要参考了数学之美番外篇:平凡而又神奇的贝叶斯方法

    notation

    h=hypothesis,假设
    D=data,观测值

    Bayes公式

    P(h|D)=P(h)P(D|h)P(D)

    P(h|D)P(h)P(D|h)

    说明:
    - P(h|D)叫后验概率,怎么理解后验呢?后验也就是逆概,即拿到或看到数据结果之后,推断产生该结果来源的条件概率。
    - P(h)叫先验概率

    在贝叶斯统计中,某一不确定量p的先验概率分布是在考虑”观测数据”前,能表达p不确定性的概率分布。它旨在描述这个不确定量的不确定程度,而不是这个不确定量的随机性。这个不确定量可以是一个参数,或者是一个隐含变量(英语:latent variable)。在使用贝叶斯定理时,我们通过将先验概率与似然函数相乘,随后标准化,来得到后验概率分布,也就是给出某数据,该不确定量的条件分布。先验概率通常是主观的猜测,为了使计算后验概率方便,有时候会选择共轭先验。如果后验概率和先验概率是同一族的,则认为它们是共轭分布,这个先验概率就是对应于似然函数的共轭先验。

    • P(D|h)叫似然概率,对应的似然函数是L(h|D)

    似然函数是一种关于统计模型中的参数的函数,表示模型参数中的似然性。似然性则是用于在已知某些观测所得到的结果时,对有关事物的性质的参数进行估计。在这种意义上,似然函数可以理解为条件概率的逆反。

    • Bayes公式的抽象解释:对于给定观测数据,一个猜测是好是坏,取决于“这个猜测本身独立的可能性大小(先验概率,Prior )”和“这个猜测生成我们观测到的数据的可能性大小”(似然,Likelihood )的乘积。

    model comparison and 贝叶斯奥卡姆剃刀(Bayesian Occam’s Razor)

    • 我们通过:P(h|D)P(h)P(D|h)来比较哪个模型最为靠谱。前面提到,光靠 P(D | h) (即“似然”)是不够的,有时候还需要引入 P(h) 这个先验概率。奥卡姆剃刀就是说 P(h) 较大的模型有较大的优势,而最大似然则是说最符合观测数据的(即 P(D | h) 最大的)最有优势。整个模型比较就是这两方力量的拉锯。
    • 贝叶斯奥卡姆剃刀(Bayesian Occam’s Razor),因为这个剃刀工作在贝叶斯公式的似然(P(D | h) )上,而不是模型本身( P(h) )的先验概率上,后者是传统的奥卡姆剃刀。

    与信息论的关联

    我们知道:P(h|D)P(h)P(D|h),两边都同时取对数:

    logP(h|D)logP(h)+logP(D|h)

    1. 相对熵(或KL散度)的含义:衡量两个随机分布之间的距离。因此,logP(h|D)可以理解为D(h||D),度量真实分布为D而假定分布为h的无效性。
    2. 编码的角度:logP(h)+logP(D|h) 则可以解释为模型(或者称“假设”、“猜测”)h 的编码长度加上在该模型下数据 D 的编码长度。使这个和最小的模型就是最佳模型。

    bayes还有很多后续的内容,待后续研究补充

    展开全文
  • 朴素贝叶斯(Naive Bayes)原理+编程实现拉普拉斯修正的朴素贝叶斯分类器,以西瓜数据集3.0为训练集,对“测1”样本进行判别。

    1.生成模型与判别模型

      在概率生成模型(Probabilistic Generative Model)与朴素贝叶斯(Naive Bayes)中大概学习了一下概率生成模型以及朴素贝叶斯,今天在这里再总结一下生成模型与判别模型。
    在这里插入图片描述
      上面这张图可以清楚的解释二者的差别。前面我们讲到, 所谓的机器学习模型,本质上是一个函数,其作用是实现从一个样本 xx 到样本的标记值 yy 的映射,即 f(x;θ)yf(x;\theta ^{*})\rightarrow y,或者求得标签的条件概率:
    在这里插入图片描述
      例如有C1以及C2两种类别,我们需要判断样本属于哪一个class:

    • 判别式模型:要确定一个样本是属于C1还是C2,用判别模型的方法是从历史数据中学习到模型,然后通过提取该样本的特征来预测出该样本属于C1的概率以及C2的概率。
    • 生成式模型:根据C1的特征首先学习出一个C1的模型,然后根据C2的特征学习出一个C2的模型,然后从该样本中提取特征,放到C1模型中看概率是多少,然后再放到C2模型中看概率是多少,哪个大就是哪个。
    • 判别模型之所以称为判别模型,就是因为它只是简单地判别就好了。根据样本X来判别它所属的类别,直接就求出了p(yx)p(y|x)的大小
    • 而生成模型,在概率生成模型(Probabilistic Generative Model)与朴素贝叶斯(Naive Bayes)中我们可以看到,我们要求:
      在这里插入图片描述
      P(C1)与P(C2)很好求,我们要求的是P(x|C1)以及P(x|C2),也就是说我们要先求得C1与C2的具体分布,也就是上面说的,分别根据C1与C2的特征学得两个模型,得到模型之后代入,若P(C1|x)>0.5那x就属于C1,否则属于C2。

    2.贝叶斯

    2.1贝叶斯公式

    在这里插入图片描述
      学过概率论的都应该对上面这个公式很熟悉,这里就不再细讲了。这里需要注意的点是注意区分先验概率、后验概率、联合概率三个概念。

    2.2贝叶斯方法

      机器学习的最终目的就是回归 or 分类,这里二者都可以理解为预测,回归很好理解,分类也可以理解为预测属于某一类的概率是多少。 我们把上述贝叶斯公式中的X理解为“具有某特征”,把Y理解成“类别标签”,那么贝叶斯公式就可以表示为:
    P(“属于某类”|“具有某特征”)=P(“具有某特征”|“属于某类”)P(“属于某类”)/P(“具有某特征”)

      贝叶斯方法把计算“具有某特征条件下属于某类(就是分类)”的概率转化为需要计算“属于某类条件下具有某特征(分别训练模型)”的概率,属于有监督学习。

    3朴素贝叶斯

      我们以垃圾邮件识别来引出朴素贝叶斯。
    在这里插入图片描述
      我们要做的是判断上面那个邮件:“我司可办理正规发票(保真)17%增值税发票点数优惠”是否属于垃圾邮件。我们不能直接判断一整个邮件是否属于垃圾邮件,我们首先想到的应该是“分词”,所谓分词就是把邮件拆成一个个的词语,通过该词语是否属于训练样本中的垃圾邮件来做出进一步判断:
    在这里插入图片描述
    前面我们提到:
      贝叶斯方法把计算“具有某特征条件下属于某类(就是分类)”的概率转化为需要计算“属于某类条件下具有某特征(分别训练模型)”的概率,属于有监督学习。 也就是说,我们现在要计算的是:正常邮件 or 垃圾邮件中具有上述那些词语的概率。

    3.1条件独立性假设

      引入条件独立假设:
    在这里插入图片描述
      我们把求某一类邮件中包含上述那些词语的概率等同于某一类邮件中包含每一种词语概率的乘积!!这其实就是朴素贝叶斯的实质,也是条件独立假设的实质。
      既然如此,那每一项都变得特别好求解了:
    在这里插入图片描述
    要算P(x1|C),那就直接在训练集中统计一下,看看x1在类别c1中出现的概率是多少即可。

    3.2朴素贝叶斯Naive在何处?

    1. 加上条件独立假设的贝叶斯方法就是朴素贝叶斯方法(Naive Bayes)
    2. 由于乘法交换律,朴素贝叶斯中算出来交换词语顺序的条件概率完全一样

      上述2的意思是:对于朴素贝叶斯模型来讲,“我司可办理正规发票”与“正规发票可办理我司”是一样的,会给出相同的判别结果,这点应该很好理解,因为你有了条件独立假设,abc与cba肯定大小是一样的,自然概率也是一样的,判别结果也就一样了。

    3.3朴素贝叶斯的三种模型

    1. 多项式模型
      在这里插入图片描述
      多项式模型跟我们思维是一样的,例如在上述条件概率中,“发票”一词语出现了三次,那利用条件独立假设条件之后,自然应该出现三次方,这就是多项式模型。

    2. 伯努利模型
      在这里插入图片描述
      在伯努利模型中我们可以看到,即使“发票”一词出现三次,但是我们在最终计算时只算一次。

    3. 混合模型
      在这里插入图片描述
      在混合模型中,我们计算句子概率时不考虑重复词语出现的次数,但在统计计算词语概率时考虑重复次数。
      一张图概括三种模型:
      在这里插入图片描述

    3.4平滑技术

      我们先来看这样一种可能:我们在求P(“正规发票”|S)时,通常的做法就是在训练集中遍历,看看“正规发票”一词出现了多少次,但是好巧不巧,该词在训练集中一次都没有出现过,那概率不就是0了么,然后条件独立假设相乘。。。于是整个概率都变成了0,这显然是极不合理的,但是这种情况却不少见。
      于是我们引入了平滑技术这一概念来解决这个问题:
    在这里插入图片描述
    这样,上述概率就不为0了,方便后续判断。

    3.5朴素贝叶斯优缺点

    优点:

    1. 对待预测样本进行预测,过程简单速度快
    2. 对于多分类问题也同样有效,复杂度也不会有大程度地上升。
    3. 在分布独立这个假设成立的情况下,贝叶斯的分类效果很好,会略胜于逻辑回归,我们需要的样本量也更少一点。
    4. 对于类别类的输入特征变量,效果非常好。对于数值型变量特征,我们默认它符合正态分布。

    缺点:

    1. 如果测试集中的一个类别变量特征在训练集里面没有出现过,那么概率就是0,预测功能就将失效,平滑技术可以解决这个问题
    2. 朴素贝叶斯中有分布独立的假设前提,但是在现实生活中,这个条件很难满足。

    3.6朴素贝叶斯的应用与代码实现

      作业:编程实现拉普拉斯修正的朴素贝叶斯分类器,并以西瓜数据集3.0为训练集,对“测1”样本进行判别。
    数据集长这样:
    在这里插入图片描述
    代码实现:

    import pandas as pd
    
    def readfile():
        datasets = pd.read_csv(r'E:\Program Files\PyCharm 2019.2\machinelearning\homework\西瓜3.0.csv', encoding="gbk")
        del datasets['编号']
        del datasets['好瓜']
        return datasets
    
    def NaiveBayes(test):
        data = readfile()
        data = data.values.tolist()
        goodMelon = [];badMelon = []
        for i in range(len(data)):
            if data[i][8] == 1:
                goodMelon.append(data[i])
            else:
                badMelon.append(data[i])
        # 计算p(x|C1)=p1与p(x|C2)=p2
        p1 = 1.0;p2 = 1.0
        for j in range(len(test)):
            x=0.0
            for k in range(len(goodMelon)):
                if goodMelon[k][j] == test[j]:
                    x = x + 1.0
            p1 = p1 * ((x + 1.0) / (len(goodMelon) + 2.0))  # 拉普拉斯平滑
        for j in range(len(test)):
            x=0.0
            for k in range(len(badMelon)):
                if badMelon[k][j] == test[j]:
                    x = x + 1.0
            p2 = p2 * ((x + 1.0) / (len(badMelon) + 2.0))  # 拉普拉斯平滑
        pc1 = len(goodMelon) / len(data)
        pc2 = 1 - pc1
        #贝叶斯公式
        p_good = p1*pc1;p_bad=p2*pc2
        if p_good > p_bad:
            print('好瓜')
        else:
            print('坏瓜')
    
    if __name__ == '__main__':
        test=['青绿','蜷缩','浊响','清晰','凹陷','硬滑',0.697,0.460]
        NaiveBayes(test)
        
    

    结果:好瓜,分类正确。
    在这里插入图片描述

    展开全文
  • Naive Bayes

    2020-12-25 23:46:54
    <div><p>Fixed null values in the results of naive Bayes <p>Jira: http://jira.madlib.net/browse/MADLIB-523</p> <p>This fix addresses the issue of NULL values which stemmed from attribute values in ...
  • bayes learn

    2020-11-28 13:53:24
    <p>rspamc -c bayes learn_spam /test/spam.eml Results for file: /test/spam.eml (0.187 seconds) IO read error: unexpected EOF</p><p>该提问来源于开源项目:rspamd/rspamd</p></div>
  • bayes估值py文件

    2021-01-02 23:33:52
    bayes估值py文件
  • Carlin等人编著的Bayesian statistical learning方面的经典教材, 覆盖了贝叶斯统计推断的系统理论,包括Bayesian inference method, empirical Bayes approaches, Bayesian computation algorithms, Model ...
  • bayes_CodingPark

    2020-05-19 18:45:03
    本文件包含:bayes_NewsClassification.py、Database、stopwords_cn.txt、data.csv、LanguageDetect.py
  • bayes matlab实现

    2017-12-31 21:27:11
    bayes matlab的简要实现,通过该代码训练Bayes模型,然后使用iris数据进行测试。
  • naivebayes分类

    2017-06-20 16:00:25
    尽管matlab提供了朴素bayes的函数,但要理解朴素bayes还是自己编程实现为好。这是以IRIS数据集为例,用朴素bayes方法分类的程序。 文件列表: iris_te.mat iris_tr.mat naivebayes.m
  • Bayes统计推断 计算机视觉Bayes统计推断 计算机视觉
  • naive_bayes

    2021-01-06 23:04:38
    from sklearn.naive_bayes import GaussianNB from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split iris = load_iris() X = iris['data'] y = iris['target'] X_train, X...
  • 作业:利用朴素贝叶斯(Naive Bayes)原理对垃圾邮件进行过滤。
  • Naive-Bayes-源码

    2021-03-07 08:07:23
    Naive-Bayes
  • bayes 过滤邮件

    2016-09-11 11:34:15
    bayes估计 实现 垃圾邮件过滤
  • naive bayes

    2011-01-06 22:55:13
    naive bayes 的matlab程序

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,546
精华内容 2,618
关键字:

bayes