【机器学习实战-python3】基于概率论的分类方法:朴素贝叶斯

本文介绍了如何使用Python3进行朴素贝叶斯分类,详细阐述了从构建词向量、训练算法、测试分类效果的过程,特别是在文本分类中的应用,如垃圾邮件识别和广告区域倾向分析。同时,讨论了朴素贝叶斯分类器的工作原理,包括概率计算和独立性假设,并提供了实际操作示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实践代码和训练测试数据可以参考这里
https://github.com/stonycat/ML-in-Action
通过概率大小来判断分类结果归属,涉及到概率论的条件概率。
p(ci | x,y)=p(x,y | ci)·p(ci)/p(x,y)
比较p(ci | x,y)的大小(i=1,2……)

1、从文本中构建词向量

#coding=utf-8
from numpy import *
#文本转化为词向量
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表示侮辱类,0表示不属于
    return postingList,classVec #词条切分后的分档和类别标签

运行结果:
这里写图片描述

2、训练算法
首先导入数据得到listOPosts所有文档和类别;
然后创建一个myVocabList包含所有词不重复的list;
创建一个训练集,然后添加数据并转化为词向量,计算概率。
由于概率都很小,那么相乘之后就更小,会造成四舍五入之后为0,解决这个问题的办法是我们对概率取对数。一下输出为负数的结果是取对数后的值。

#包含所有文档 不含重复词的list
def createVocabList(dataSet):
    vocabSet=set([])#创建空集,set是返回不带重复词的list
    for document in dataSet:
        vocabSet=vocabSet|set(document) #创建两个集合的并集
    return list(vocabSet)
#判断某个词条在文档中是否出现
def setOfWords2Vec(vocabList, inputSet):#参数为词汇表和某个文档
    returnVec = [0]*len(v
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值