朴素贝叶斯分类及python实现

1。基础理论

朴素贝叶斯属于分类算法中的一种,是数据挖掘常用的算法之一,简单的理解,有(c1,c2,c3,,,c(n))n个分类,对于某一类c(i),有若干特征属性(a1,a2,a3,,,a(m))m个属性,而现在出现c(j),我们要根据它的属性a判断它比较偏向于哪一类。这是因为朴素贝叶斯模型假设属性之间相互独立,这个假设在实际应用中往往是不成立的,在属性个数比较多或者属性之间相关性较大时,分类效果不好。
贝叶斯公式:
这里写图片描述
显然对于在实际运用算法中,对于P(A)中A的值可能为向量,即特征属性组成的向量,在算法中我们需要判断P(B|A)最大的值,显然转化为求等式右边的数据,而根据统计理论,对于相互独立的属性,下图可以很清楚的说明。在贝叶斯之前,我们还需要知道以下几个概念:
这里写图片描述
对于实际的算法,我们进行分类时,B就为我们已知的所以类别,A为某一类别的特征属性,所以算法简单的理解成:已知某个特征属性A,我们要求它属于哪一类B,我们将A这个特征属性属于全部类别的概率都计算出来,最终我们认为A属于概率最大的那个。

朴素贝叶斯算法原理小结

2。举例说明

而对于以下要使用的例子可能会有影响,当然举例的训练数据量比较小,得出的结论并不准确。
假设有如下学生选课信息,1表示选了这个课,0表示没选。目前我们得知一个选课特征向量[1,0,1,1,0,0],我们想知道是男生还是女生选了这个课。如果数据量很大,我们可以使用贝叶斯算法,现在我们展示计算过程。
这里写图片描述根据贝叶斯公式,我们首先求是男生的概率:
分子上的P(类别)男女数量是一样的都是3,所以概率为1/2

P(在这种选课下是男的) = 
[[p(男选了计算机)*p(男没选文学)...p(男没选体育)]*p(男)]/[p(男选了计算机)*p(男没选文学)...p(男没选体育)]*p(男)+[p(女选了计算机)*p(女没选文学)...p(女没选体育)]*p(女)] = 
[[2/3*2/3*2/3*1/3*2/3*1/3]*1/2]/[[2/3*2/3*2/3*1/3*2/3*1/3]*1/2+[2/3*1/3*1/3*1/3*1/3*1/3]*1/2]=
8/9

P(在这种选课下是女的) = 
[[p(女选了计算机)*p(女没选文学)...p(女没选体育)]*p(女)]/[p(男选了计算机)*p(男没选文学)...p(男没选体育)]*p(男)+[p(女选了计算机)*p(女没选文学)...p(女没选体育)]*p(女)] = 
[[]*1/2]/[[2/3*2/3*2/3*1/3*2/3*1/3]*1/2+[2/3*1/3*1/3*1/3*1/3*1/3]*1/2]=
1/9

显然在此选课特征向量[1,0,1,1,0,0]下,我们认为此人是男生。

3。代码实现

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
朴素贝叶斯分类器是一种常用的机器学习算法,用于进行文本类、垃圾邮件过滤等任务。在Python中,有多个包可以实现朴素贝叶斯分类器,其中最常用的包是scikit-learn(sklearn)。 scikit-learn是一个功能强大的机器学习库,提供了丰富的机器学习算法实现,包括朴素贝叶斯分类器。使用scikit-learn实现朴素贝叶斯分类器的步骤如下: 1. 导入所需的库和模块: ```python from sklearn.feature_extraction.text import CountVectorizer from sklearn.naive_bayes import MultinomialNB ``` 2. 准备数据集: ```python # 假设有两个类别的文本数据别为正面和负面 X_train = ['I love this movie', 'This movie is great', 'I hate this movie', 'This movie is terrible'] y_train = ['positive', 'positive', 'negative', 'negative'] ``` 3. 特征提取: ```python # 使用CountVectorizer将文本转换为特征向量 vectorizer = CountVectorizer() X_train_vec = vectorizer.fit_transform(X_train) ``` 4. 构建朴素贝叶斯分类器模型并进行训练: ```python # 创建朴素贝叶斯分类器对象 classifier = MultinomialNB() # 使用训练数据进行模型训练 classifier.fit(X_train_vec, y_train) ``` 5. 使用模型进行预测: ```python # 假设有一个新的文本需要进行类 X_test = ['This movie is amazing'] # 将新文本转换为特征向量 X_test_vec = vectorizer.transform(X_test) # 使用训练好的模型进行预测 y_pred = classifier.predict(X_test_vec) print(y_pred) ``` 以上就是使用scikit-learn包实现朴素贝叶斯分类器的基本步骤。你可以根据自己的需求和数据进行相应的调整和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值