贝叶斯分类器:

先上代码:

import numpy as np
import math
# 使用词集法进行贝叶斯分类
# 构造数据集,分类是侮辱性 or 非侮辱性
def loadDataset () :postingList=[['my', 'dog', 'has', 'flea', 'problems', 'help', 'please'],['maybe', 'not', 'take', 'him', 'to', 'dog', 'park', 'stupid'],['my', 'dalmation', 'is', 'so', 'cute', 'I', 'love', 'him'],['stop', 'posting', 'stupid', 'worthless', 'garbage'],['mr', 'licks', 'ate', 'my', 'steak', 'how', 'to', 'stop', 'him'],['quit', 'buying', 'worthless', 'dog', 'food', 'stupid']]classVec = [0,1,0,1,0,1]    #1 is abusive, 0 notreturn postingList, classVec# 创建一个包涵所有词汇的列表 , 为后面建立词条向量使用
def createlist (dataset) :vovabset = set ([])for vec in dataset :vovabset = vovabset | set (vec)return list (vovabset)# 将词条转化为向量的形式
def changeword2vec (inputdata, wordlist) :returnVec = [0] * len (wordlist)for word in inputdata :if word in wordlist :returnVec[wordlist.index(word)] = 1return returnVec# 创建贝叶斯分类器
def trainNBO (dataset, classlebels) :num_of_sample = len (dataset)num_of_feature = len (dataset[0])pAusuive = sum (classlebels) / num_of_sample # 侮辱性语言的概率p0Num = np.ones (num_of_feature)p1Num = np.ones (num_of_feature)p0tot = num_of_featurep1tot = num_of_featurefor i in range (num_of_sample) :if classlebels[i] == 1 :p1Num += dataset[i]p1tot += sum (dataset[i])else :p0Num += dataset[i]p0tot += sum (dataset[i])p0Vec = p0Num / p0totp1Vec = p1Num / p1totfor i in range (num_of_feature) :p0Vec[i] = math.log (p0Vec[i])p1Vec[i] = math.log (p1Vec[i])return p0Vec, p1Vec, pAusuive#  定义分类器
def classifyNB(vec2Classify, p0Vec, p1Vec, pClass1):p1 = sum(vec2Classify * p1Vec) + log(pClass1)    #element-wise multp0 = sum(vec2Classify * p0Vec) + log(1.0 - pClass1)if p1 > p0:return 1else:return 0# 测试代码
dataset,classlebels = loadDataset ()
wordlist = createlist (dataset)
print (wordlist)
print (changeword2vec (dataset[0], wordlist))
trainmat = []
for temp in dataset :trainmat.append (changeword2vec (temp,wordlist))
p0V, p1V, pAb = trainNBO (trainmat, classlebels)
print (p0V)
print (p1V)
print (pAb)

再看结果:

['help', 'dog', 'so', 'ate', 'has', 'buying', 'cute', 'love', 'take', 'not', 'stupid', 'to', 'my', 'maybe', 'I', 'food', 'problems', 'garbage', 'stop', 'licks', 'posting', 'mr', 'please', 'him', 'park', 'worthless', 'steak', 'how', 'flea', 'quit', 'is', 'dalmation']
[1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0]
[-3.33220451 -3.33220451 -3.33220451 -3.33220451 -3.33220451 -4.02535169-3.33220451 -3.33220451 -4.02535169 -4.02535169 -4.02535169 -3.33220451-2.63905733 -4.02535169 -3.33220451 -4.02535169 -3.33220451 -4.02535169-3.33220451 -3.33220451 -4.02535169 -3.33220451 -3.33220451 -2.9267394-4.02535169 -4.02535169 -3.33220451 -3.33220451 -3.33220451 -4.02535169-3.33220451 -3.33220451]
[-3.93182563 -2.83321334 -3.93182563 -3.93182563 -3.93182563 -3.23867845-3.93182563 -3.93182563 -3.23867845 -3.23867845 -2.54553127 -3.23867845-3.93182563 -3.23867845 -3.93182563 -3.23867845 -3.93182563 -3.23867845-3.23867845 -3.93182563 -3.23867845 -3.93182563 -3.93182563 -3.23867845-3.23867845 -2.83321334 -3.93182563 -3.93182563 -3.93182563 -3.23867845-3.93182563 -3.93182563]
0.5

也可参考文章:https://blog.csdn.net/zhelong3205/article/details/78659169

机器学习之监督学习(四)——贝叶斯分类器相关推荐

  1. python机器学习库sklearn——朴素贝叶斯分类器

    分享一个朋友的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!大家可以看看是否对自己有帮助:点击打开 全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 文档贝叶斯分类器的相关的知 ...

  2. 【周志华机器学习】七、贝叶斯分类器

    文章目录 参考资料 1. 基本概念 1.1 贝叶斯公式 1.2 贝叶斯决策论 1.2.1 判别式模型 and 生成式模型 1.3 极大似然法 2. 朴素贝叶斯分类器 3. 半朴素贝叶斯分类器 4. E ...

  3. 机器学习(二)——贝叶斯分类器

    文章目录 1. 贝叶斯决策论 1.1 贝叶斯判定准则 1.2 极大似然估计 2. 朴素贝叶斯分类器 2.1 拉普拉斯平滑 2.2 示例 1. 贝叶斯决策论 核心: 将最小化分类错误率转换为最大化先验概 ...

  4. 监督学习 | 朴素贝叶斯之Sklearn实现

    文章目录 1. Sklearn 实现朴素贝叶斯 1.1 数据导入 1.2 数据预处理 1.3 拆分训练集和测试集 1.4 Bag of Words 1.4.1 Sklearn 实现 Bag of Wo ...

  5. 监督学习 | 朴素贝叶斯原理及Python实现

    文章目录 1. 贝叶斯理论 1.1 贝叶斯定理 1.2 贝叶斯分类算法 1.3 朴素贝叶斯分类算法 1.3.1 朴素贝叶斯分类器实例 学习过程 预测过程 2. Python实现 2.1 拉普拉斯修正 ...

  6. 机器学习——贝叶斯分类器

    机器学习--贝叶斯分类器 1.贝叶斯决策论 2.朴素贝叶斯分类器 2.1 朴素贝叶斯理论基础 3.几种贝叶斯模型 3.1 高斯贝叶斯分类器(自变量为连续型) 3.2 多项式贝叶斯分类器(自变量为离散型 ...

  7. 机器学习实验 - 朴素贝叶斯分类器

    目录 一.报告摘要 1.1 实验要求 1.2 实验思路 1.3 实验结论 二.实验内容 2.1 方法介绍 2.2 实验细节 2.2.1 实验环境 2.2.2 实验过程 2.2.3 实验与理论内容的不同 ...

  8. 机器学习算法 - 朴素贝叶斯分类器

    ​ 一.算法简介 1.1 背景 监督学习分为生成模型 (generative model) 与判别模型 (discriminative model) 判别模型:SVM, LR, KNN, NN, CR ...

  9. 机器学习|3.贝叶斯分类器

    一.基础概念 贝叶斯分类器是各种分类器中分类错误概率最小或者在预先给定代价的情况下平均风险最小的分类器.它的设计方法是一种最基本的统计分类方法.其分类原理是通过某对象的先验概率,利用贝叶斯公式计算出其 ...

最新文章

  1. 现身说法:37岁老码农找工作
  2. iMeta | 第1卷第1期在线正式发布(2022/3/28)
  3. 网站如何做到完全不需要 jQuery ?
  4. Android中Preference的使用以及监听事件分析
  5. 皮一皮:说好的一起守护光和未来呢...
  6. C语言程序设计 | 扫雷游戏
  7. What code you will get when you create a wcf library
  8. 【Codeforces】894E.Ralph and Mushrooms Tarjan缩点+DP
  9. 《Cisco安全防火墙服务模块(FWSM)解决方案》——2.7 软件架构
  10. OPENROWSET访问CSV格式文件
  11. 最全的微信小程序代码大全
  12. matlab分布拟合函数
  13. 西安三星电子笔试面试
  14. 铁矿石再次冲高回落,豆粕认购大涨,纯碱09-01季节性反套?2022.4.21
  15. 哪吒票房超复联4,100行python代码抓取豆瓣短评,看看网友怎么说
  16. 赴美工作常识(Part 5 - 绿卡优先级)
  17. 凯云水利水电工程造价管理系统 技术解析(四)取费管理(一)
  18. 导图解房(01)黄金圈法则解读 买房这件事儿
  19. excel函数应用:如何写出IF函数多级嵌套公式
  20. gogland跨平台编译

热门文章

  1. 【李宏毅2020 ML/DL】P60-61 Unsupervised Learning - Deep Generative Model
  2. 不使用border-radius,实现一个可复用的高度和宽度都自适应的圆角矩形
  3. archman linux教程,Archman GNU/Linux 2020-01 发布,基于Arch的Xfce桌面发行版
  4. python 如何调用linux系统中命令
  5. Intel 加速分布式计算系统的三个神器
  6. iOS开发之UITableView全面解析
  7. Active Directory 域服务(AD DS)
  8. [转载]依赖注入那些事
  9. linux socket 模式,pythonsockets:如何在linux中启用混杂模式
  10. Polylink 智能话机之—— e-talk 2200