一 朴素贝叶斯分类方法


二 概率基础
2.1 概率(Probability)定义
- 概率定义为一件事情发生的可能性
扔出一个硬币,结果头像朝上
某天是晴天 - P(X) : 取值在[0, 1]
2.2 女神是否喜欢计算案例


2.3 条件概率与联合概率
- 联合概率:包含多个条件,且所有条件同时成立的概率
记作:P(A,B)
特性:P(A, B) = P(A)P(B) - 条件概率:就是事件A在另外一个事件B已经发生条件下的发生概率
记作:P(A|B)
特性:P(A1,A2|B) = P(A1|B)P(A2|B)
注意:此条件概率的成立,是由于A1,A2相互独立的结果(记忆)
这样我们计算结果为:
p(程序员, 匀称) = P(程序员)P(匀称) =3/7*(4/7) = 12/49
P(产品, 超重|喜欢) = P(产品|喜欢)P(超重|喜欢)=1/2 * 1/4 = 1/8

三 贝叶斯公式
3.1 工时


3.2 文章分类计算

科技:P(科技|影院,支付宝,云计算) = 𝑃(影院,支付宝,云计算|科技)∗P(科技)=(8/100)∗(20/100)∗(63/100)∗(30/90) = 0.00456109
娱乐:P(娱乐|影院,支付宝,云计算) = 𝑃(影院,支付宝,云计算|娱乐)∗P(娱乐)=(56/121)∗(15/121)∗(0/121)∗(60/90) = 0
思考:我们计算出来某个概率为0,合适吗?
3.3 拉普拉斯平滑系数
目的:防止计算出的分类概率为0

P(娱乐|影院,支付宝,云计算) =P(影院,支付宝,云计算|娱乐)P(娱乐) =P(影院|娱乐)*P(支付宝|娱乐)*P(云计算|娱乐)P(娱乐)=(56+1/121+4)(15+1/121+4)(0+1/121+1*4)(60/90) = 0.00002
3.4 API
sklearn.naive_bayes.MultinomialNB(alpha = 1.0)
- 朴素贝叶斯分类
- alpha:拉普拉斯平滑系数
四 案例:20类新闻分类

4.1 分析
-
分割数据集
-
tfidf进行的特征抽取
-
朴素贝叶斯预测
4.2 代码
from sklearn.model_selection import train_test_split,GridSearchCV
from sklearn.datasets import fetch_20newsgroups
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
"""
朴素贝叶斯 对新闻数据进行预测
"""
news = fetch_20newsgroups(subset='all')
#进行数据分割
x_train, x_test, y_train, y_test = train_test_split(news.data, news.target,test_size=0.3)
# 对于文本数据,进行特征抽取
tf = TfidfVectorizer()
x_train = tf.fit_transform(x_train)
print(tf.get_feature_names())
x_test = tf.transform(x_test)
#进行朴素贝叶斯算法预测
mlt = MultinomialNB(alpha=0.4)
print(x_train.toarray())
mlt.fit(x_train, y_train)
y_predict = mlt.predict(x_test)
print("预测的文章类别为:", y_predict)
#得出准确率为
print("准确率为:", mlt.score(x_test, y_test))
五 总结
- 优点:
朴素贝叶斯模型发源于古典数学理论,有稳定的分类效率。
对缺失数据不太敏感,算法也比较简单,常用于文本分类。
分类准确度高,速度快 - 缺点:
由于使用了样本属性独立性的假设,所以如果特征属性有关联时其效果不好
朴素贝叶斯分类详解

887

被折叠的 条评论
为什么被折叠?



