zl程序教程

您现在的位置是:首页 >  后端

当前栏目

【机器学习算法-python实现】扫黄神器-朴素贝叶斯分类器的实现

Python机器算法学习 实现 神器 贝叶斯 朴素
2023-09-27 14:27:08 时间

(转载请注明出处:http://blog.csdn.net/buptgshengod)

     以前我在外面公司实习的时候,一个大神跟我说过,学计算机就是要一个一个贝叶斯公式的套用来套用去。嗯,现在终于用到了。朴素贝叶斯分类器据说是好多扫黄软件使用的算法,贝叶斯公式也比较简单,大学做概率题经常会用到。核心思想就是找出特征值对结果影响概率最大的项。公式如下: P(A|B) = \frac{P(B | A)\, P(A)}{P(B)}
       什么是朴素贝叶斯,就是特征值相互独立互不影响的情况。贝叶斯可以有很多变形,这里先搞一个简单的,以后遇到复杂的再写。 2.数据集    摘自机器学习实战。

[[my,dog,has,flea,problems,help,please],    0

 [maybe,not,take,him,to,dog,park,stupid],  1

 [my,dalmation,is,so,cute,I,love,him],          0

 [stop,posting,stupid,worthless,garbage],          1

 [mr,licks,ate,my,steak,how,to,stop,him],  0

[quit,buying,worthless,dog,food,stupid]]           1

以上是六句话,标记是0句子的表示正常句,标记是1句子的表示为粗口。我们通过分析每个句子中的每个词,在粗口句或是正常句出现的概率,可以找出那些词是粗口。    
#以矩阵形式创建数据集

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 not 

 return postingList,classVec

vocabSet = vocabSet | set(document) #union of the two sets return list(vocabSet)


returnVec[vocabList.index(word)] = 1 else: print "the word: %s is not in my Vocabulary!" % word return returnVec
def trainNB0(trainMatrix,trainCategory):

 numTrainDocs = len(trainMatrix)

 numWords = len(trainMatrix[0])

 pAbusive = sum(trainCategory)/float(numTrainDocs)#脏句的比例 

 p0Num = zeros(numWords); p1Num = zeros(numWords) #zero是numpy带的函数,zeros(i)长度为i的list 

 p0Denom = 0.0; p1Denom = 0.0 

 for i in range(numTrainDocs):

 if trainCategory[i] == 1:#如果是粗口句,每个词在p1num加一

 p1Num += trainMatrix[i]

 p1Denom += sum(trainMatrix[i])

 else:

 p0Num += trainMatrix[i]

 p0Denom += sum(trainMatrix[i])

 p1Vect = p1Num/p1Denom #粗口字概率

 p0Vect = p0Num/p0Denom 

 return p0Vect,p1Vect,pAbusive

实现效果: 输出粗口字概率list:

[ 0.          0.          0.          0.05263158  0.05263158  0.          0.

  0.          0.05263158  0.05263158  0.          0.          0.

  0.05263158  0.05263158  0.05263158  0.05263158  0.05263158  0.

  0.10526316  0.          0.05263158  0.05263158  0.          0.10526316

  0.          0.15789474  0.          0.05263158  0.          0.          0.        ]


出现概率最大项:

0.157894736842


对应的词是:stupid

[cute, love, help, garbage, quit, I, problems, is, park, stop, flea, dalmation, licks, food, not, him, buying, posting, has, worthless, ate, to, maybe, please, dog, how, stupid, so, take, mr, steak, my]

  下载地址(Bayes)

Python机器学习算法入门教程(四) 我们知道有监督学习分为“回归问题”和“分类问题”,前面我们已经认识了什么是“回归问题”,从本节开始我们将讲解“分类问题”的相关算法。在介绍具体的算法前,我们先聊聊到底什么是分类问题。
Python机器学习算法入门教程(三) 本节讲解如何构建线性回归算法中的“线性模型”,所谓“线性”其实就是一条“直线”。因此,本节开篇首先普及一下初中的数学知识“一次函数”。
Python机器学习算法入门教程(二) 常言道“工欲善其事,必先利其器”,在学习机器学习算法之前,我们需要做一些准备工作,首先要检查自己的知识体系是否完备,其次是要搭建机器学习的开发环境。
Python机器学习算法入门教程(一)(下) 机器学习(Machine Learning,简称 ML)是人工智能领域的一个分支,也是人工智能的核心,其涉及知识非常广泛,比如概率论、统计学、近似理论、高等数学等多门学科。
Python机器学习算法入门教程(一)(上) 机器学习(Machine Learning,简称 ML)是人工智能领域的一个分支,也是人工智能的核心,其涉及知识非常广泛,比如概率论、统计学、近似理论、高等数学等多门学科。
Python机器学习算法入门指南(全) 机器学习 作为人工智能领域的核心组成,是计算机程序学习数据经验以优化自身算法,并产生相应的“智能化的”建议与决策的过程。
机器学习实战 | Python机器学习算法应用实践 本篇文章详解机器学习应用流程,应用在结构化数据和非结构化数据(图像)上,借助案例重温机器学习基础知识,并学习应用机器学习解决问题的基本流程。
傲海 著有《机器学习实践应用》,阿里云机器学习PAI产品经理,个人微信公众号 ldquo;凡人机器学习 rdquo;。