独孤九剑第五式-朴素贝叶斯模型

这篇具有很好参考价值的文章主要介绍了独孤九剑第五式-朴素贝叶斯模型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

💐文章适合于所有的相关人士进行学习💐
🍀各位看官看完了之后不要立刻转身呀🍀
🌿期待三连关注小小博主加收藏🌿
🍃小小博主回关快 会给你意想不到的惊喜呀🍃
各位老板动动小手给小弟点赞收藏一下,多多支持是我更新得动力!!!



独孤九剑第五式-朴素贝叶斯模型,机器学习从基础到进阶,机器学习,概率论,数据挖掘,朴素贝叶斯独孤九剑第五式-朴素贝叶斯模型,机器学习从基础到进阶,机器学习,概率论,数据挖掘,朴素贝叶斯

🏰前言

我们上次已经讲解完了关于KNN也就是K近邻模型得相关知识,我们知道了邻居得重要性!!!这节课我们主要讲解朴素贝叶斯模型得相关知识和实践内容,那么他这个模型为什么朴素,是这个朴素吗?
独孤九剑第五式-朴素贝叶斯模型,机器学习从基础到进阶,机器学习,概率论,数据挖掘,朴素贝叶斯
是这样得朴素之美吗???这节课我们将解开大家得谜团。

🏰朴素贝叶斯模型理论讲解

朴素贝叶斯模型主要也是做分类用得,那么什么是分类呢?就比如说好或者不好,一件商品买或者不买,一次相亲去或者不去这都属于分类问题。我们去相亲这个事男生倒是很随意,女孩子可能要求得比较多一点,比如会看重男孩子的工作啦,收入啦,或者是相貌了,或者是教育程度啦等等,往往通过这些个因素我们可以进行分析,然后通过数学公式得计算,来去预测这场相亲去或者不去?还有很多例子,比如说银行得借贷系统,通过判断一个人过去得信用、收入等等因素来判断是否向该人进行借贷。生活中这种例子数不胜数,所以说机器学习和我们得生活就是息息相关得,我们要让其为我们服务,也是未来一个主流得方向。那么闲话少说我们进入今天得正题。
独孤九剑第五式-朴素贝叶斯模型,机器学习从基础到进阶,机器学习,概率论,数据挖掘,朴素贝叶斯

⛺️模型思想

该分类器的实现思想非常简单,即通过已知类别的训练数据集,计算样本的先验概率,然后利用贝叶斯概率公式测算未知类别样本属于某个类别的后验概率,最终以最大后验概率所对应的类别作为样本的预测值。这就是我们所谓得朴素贝叶斯模型得思想。那么我们需要什么呢?概率公式是什么呢?贝叶斯计算得数学公式又是什么呢?它们分别适合于什么方面呢?

⛺️贝叶斯理论讲解

条件概率公式也就是我们说的后验概率:
独孤九剑第五式-朴素贝叶斯模型,机器学习从基础到进阶,机器学习,概率论,数据挖掘,朴素贝叶斯
对于条件概率公式,如果我们学习过统计学或者概率论,这个公式并不难理解,很简单。全概率公式:
独孤九剑第五式-朴素贝叶斯模型,机器学习从基础到进阶,机器学习,概率论,数据挖掘,朴素贝叶斯
我们将上方公式进行了整理,就得到了下方公式:
独孤九剑第五式-朴素贝叶斯模型,机器学习从基础到进阶,机器学习,概率论,数据挖掘,朴素贝叶斯
这里表达得意思就是在我们已经X得发生情况概率下,求发生Ci得概率。最后我们得到的公式中分母是已经知道得,且P(Ci)也是已经得表达得意思就是频数除以总数得意思,也就是我们常说的频率,所以如果我们像要求得P(Ci|X)得最大概率值,那么我们也就是只要求P(X|Ci)得最大概率值就OK了!
这里我们依旧举一个例子:
比如说一件商品我们想要在已知收入得情况下看购买得概率或者不购买得概率,那么我们P(购|X)=0.7,P(不购|X)=0.3,那么我们果断得选择购买啊!这就是这个意思。上图公式也可以遵循这个例子来理解。
独孤九剑第五式-朴素贝叶斯模型,机器学习从基础到进阶,机器学习,概率论,数据挖掘,朴素贝叶斯
目标函数就是这个!!经过上方得分析我们可以得到
独孤九剑第五式-朴素贝叶斯模型,机器学习从基础到进阶,机器学习,概率论,数据挖掘,朴素贝叶斯
假设数据集包含p个变量,那么我们X可以表示为(x1,x2…xp),进而条件概率可以表示为:
独孤九剑第五式-朴素贝叶斯模型,机器学习从基础到进阶,机器学习,概率论,数据挖掘,朴素贝叶斯
然后我们可以假设自变量之间是独立得,那么我们就可以得到:
独孤九剑第五式-朴素贝叶斯模型,机器学习从基础到进阶,机器学习,概率论,数据挖掘,朴素贝叶斯

⛺️分类器类型
🗼高斯贝叶斯分类器

如果数据集中得自变量X均为连续得数值类型,那么我们可以在计算上方得P(Xi|C)时会假设自变量X服从高斯正态分布,所以自变量X得条件概率可以表示为:
独孤九剑第五式-朴素贝叶斯模型,机器学习从基础到进阶,机器学习,概率论,数据挖掘,朴素贝叶斯
两个位置变量一个表示均值一个表示标准差,那么我们以一个实例为例子了解一下关于这个公式得相关内容:
独孤九剑第五式-朴素贝叶斯模型,机器学习从基础到进阶,机器学习,概率论,数据挖掘,朴素贝叶斯
这是是我们得数据,然后我们来提出问题,我们根据上方得数据,想要知道假设某金融公司是否愿意给客户放贷会优先考虑两个因素,分别是年龄和收入。现在根据已知的数据信息考察一位新客户,他的年龄为24岁,并且收入为8500元,请问该公司是否愿意给客户放贷?
那么我们对于这个问题怎么解决呢?直接按照上方得公式,先把均值和标准差算出来。
独孤九剑第五式-朴素贝叶斯模型,机器学习从基础到进阶,机器学习,概率论,数据挖掘,朴素贝叶斯
然后根据高斯贝叶斯模型公式代入,然后分别求的年龄和收入得相关计算:
独孤九剑第五式-朴素贝叶斯模型,机器学习从基础到进阶,机器学习,概率论,数据挖掘,朴素贝叶斯
然后我们求得最后得后验概率是:
独孤九剑第五式-朴素贝叶斯模型,机器学习从基础到进阶,机器学习,概率论,数据挖掘,朴素贝叶斯
然后根据计算结果我们得到在满足24岁,并且收入为8500元得时候,银行会同意放贷!

🗼多项式贝叶斯分类器

如果数据都是离散型变量,那么就满足使用多项式计算公式:
独孤九剑第五式-朴素贝叶斯模型,机器学习从基础到进阶,机器学习,概率论,数据挖掘,朴素贝叶斯
a表示平滑系数,为了避免概率值为0,所以做了一次拉普拉斯平滑,n表示因变量类别个数。具体我们还是来看例子:
独孤九剑第五式-朴素贝叶斯模型,机器学习从基础到进阶,机器学习,概率论,数据挖掘,朴素贝叶斯
这是一个相亲得一份数据,我们以第一行为例子,比如说公务员,学历是本科,收入是中,那么女方选择见你!就是这个意思。请问在给定的信息下,对于高收入的公务员,并且其学历为硕士的男生来说,女孩是否愿意参与他的相亲?这个我们来计算一下:
独孤九剑第五式-朴素贝叶斯模型,机器学习从基础到进阶,机器学习,概率论,数据挖掘,朴素贝叶斯
分别对应公式我们就明白了,然后我们求得最后得后验概率公式为:
独孤九剑第五式-朴素贝叶斯模型,机器学习从基础到进阶,机器学习,概率论,数据挖掘,朴素贝叶斯
所以最后我们分析得到,女方愿意和你见面。

🗼伯努利贝叶斯分类器

当数据只有0-1这两种也被称为二元值类型得数值时候,那么我们通常会选择伯努利贝叶斯分类器公式:
独孤九剑第五式-朴素贝叶斯模型,机器学习从基础到进阶,机器学习,概率论,数据挖掘,朴素贝叶斯
独孤九剑第五式-朴素贝叶斯模型,机器学习从基础到进阶,机器学习,概率论,数据挖掘,朴素贝叶斯
其中得p也是这样表示。
那么我们还是来看例子:
独孤九剑第五式-朴素贝叶斯模型,机器学习从基础到进阶,机器学习,概率论,数据挖掘,朴素贝叶斯
假设对10条评论数据做分词处理后,得到如表所示的文档词条矩阵,矩阵中含有5个词语和1个表示情感的结果,其中类别为0表示正面情绪,1表示负面情绪。如果一个用户的评论中仅包含“还行”一词,请问该用户的评论属于哪种情绪?也就是说为00010这种类型我们判断最后得类别是什么?
独孤九剑第五式-朴素贝叶斯模型,机器学习从基础到进阶,机器学习,概率论,数据挖掘,朴素贝叶斯
最后求得的后验概率是:
独孤九剑第五式-朴素贝叶斯模型,机器学习从基础到进阶,机器学习,概率论,数据挖掘,朴素贝叶斯
那么我们得出结论:
当用户的评论中只含有“还行”一词时,计算该评论为正面情绪的概率约为0.015,评论为负面情绪的概率约为0.00073,故根据贝叶斯后验概率最大原则将该评论预判为正面情绪。

🏰朴素贝叶斯模型实战

⛺️高斯实战
🗼数据

独孤九剑第五式-朴素贝叶斯模型,机器学习从基础到进阶,机器学习,概率论,数据挖掘,朴素贝叶斯

🗼导入数据
import pandas as pd
# 读入数据
skin = pd.read_excel(r'Skin_Segment.xlsx')
# 设置正例和负例
skin.y = skin.y.map({2:0,1:1})
skin.y.value_counts()

导入设置正负例子,把2换成0

from sklearn import model_selection
# 样本拆分
X_train,X_test,y_train,y_test = model_selection.train_test_split(skin.iloc[:,:3], skin.y, 
                                                                 test_size = 0.3, random_state=1234)
🗼拟合模型
from sklearn import naive_bayes
# 调用高斯朴素贝叶斯分类器的“类”
gnb = naive_bayes.GaussianNB()
# 模型拟合
gnb.fit(X_train, y_train)
# 模型在测试数据集上的预测
gnb_pred = gnb.predict(X_test)
# 各类别的预测数量
pd.Series(gnb_pred).value_counts()
🗼混淆矩阵
from sklearn import metrics
import matplotlib.pyplot as plt
import seaborn as sns
# 构建混淆矩阵
cm = pd.crosstab(gnb_pred,y_test)
# 绘制混淆矩阵图
sns.heatmap(cm, annot = True, cmap = 'GnBu', fmt = 'd')
# 去除x轴和y轴标签
plt.xlabel('Real')
plt.ylabel('Predict')
# 显示图形
plt.show()

print('模型的准确率为:\n',metrics.accuracy_score(y_test, gnb_pred))
print('模型的评估报告:\n',metrics.classification_report(y_test, gnb_pred))

独孤九剑第五式-朴素贝叶斯模型,机器学习从基础到进阶,机器学习,概率论,数据挖掘,朴素贝叶斯

🗼ROC曲线
y_score = gnb.predict_proba(X_test)[:,1]
fpr,tpr,threshold = metrics.roc_curve(y_test, y_score)
# 计算AUC的值
roc_auc = metrics.auc(fpr,tpr)
# 绘制面积图
plt.stackplot(fpr, tpr, color='steelblue', alpha = 0.5, edgecolor = 'black')
# 添加边际线
plt.plot(fpr, tpr, color='black', lw = 1)
# 添加对角线
plt.plot([0,1],[0,1], color = 'red', linestyle = '--')
# 添加文本信息
plt.text(0.5,0.3,'ROC curve (area = %0.2f)' % roc_auc)
# 添加x轴与y轴标签
plt.xlabel('1-Specificity')
plt.ylabel('Sensitivity')
# 显示图形
plt.show()

独孤九剑第五式-朴素贝叶斯模型,机器学习从基础到进阶,机器学习,概率论,数据挖掘,朴素贝叶斯
这里说明我们的模型是合格哒!!!

⛺️多项式实战
🗼数据

独孤九剑第五式-朴素贝叶斯模型,机器学习从基础到进阶,机器学习,概率论,数据挖掘,朴素贝叶斯

🗼导入数据
import pandas as pd
# 读取数据
mushrooms = pd.read_csv(r'mushrooms.csv')
# 数据的前5行
mushrooms.head()
🗼因子化处理
columns = mushrooms.columns[1:]
for column in columns:
    mushrooms[column] = pd.factorize(mushrooms[column])[0]
mushrooms.head()
🗼数据拆分
from sklearn import model_selection
# 将数据集拆分为训练集合测试集
Predictors = mushrooms.columns[1:]
X_train,X_test,y_train,y_test = model_selection.train_test_split(mushrooms[Predictors], mushrooms['type'], 
                                                                 test_size = 0.25, random_state = 10)
🗼模型拟合和混淆矩阵
from sklearn import naive_bayes
from sklearn import metrics
import seaborn as sns
import matplotlib.pyplot as plt
# 构建多项式贝叶斯分类器的“类”
mnb = naive_bayes.MultinomialNB()
# 基于训练数据集的拟合
mnb.fit(X_train, y_train)
# 基于测试数据集的预测
mnb_pred = mnb.predict(X_test)
# 构建混淆矩阵
cm = pd.crosstab(mnb_pred,y_test)
# 绘制混淆矩阵图
sns.heatmap(cm, annot = True, cmap = 'GnBu', fmt = 'd')
# 去除x轴和y轴标签
plt.xlabel('Real')
plt.ylabel('Predict')
# 显示图形
plt.show()

# 模型的预测准确率
print('模型的准确率为:\n',metrics.accuracy_score(y_test, mnb_pred))
print('模型的评估报告:\n',metrics.classification_report(y_test, mnb_pred))
🗼ROC曲线
y_score = mnb.predict_proba(X_test)[:,1]
fpr,tpr,threshold = metrics.roc_curve(y_test.map({'edible':0,'poisonous':1}), y_score)
# 计算AUC的值
roc_auc = metrics.auc(fpr,tpr)

# 绘制面积图
plt.stackplot(fpr, tpr, color='steelblue', alpha = 0.5, edgecolor = 'black')
# 添加边际线
plt.plot(fpr, tpr, color='black', lw = 1)
# 添加对角线
plt.plot([0,1],[0,1], color = 'red', linestyle = '--')
# 添加文本信息
plt.text(0.5,0.3,'ROC curve (area = %0.2f)' % roc_auc)
# 添加x轴与y轴标签
plt.xlabel('1-Specificity')
plt.ylabel('Sensitivity')
# 显示图形
plt.show()
⛺️伯努利贝叶斯实战
🗼数据

独孤九剑第五式-朴素贝叶斯模型,机器学习从基础到进阶,机器学习,概率论,数据挖掘,朴素贝叶斯

🗼导入数据
import pandas as pd
# 读入评论数据
evaluation = pd.read_excel(r'Contents.xlsx',sheet_name=0)
# 查看数据前10行
evaluation.head(10)
🗼正则表达式去除数字和字母
evaluation.Content = evaluation.Content.str.replace('[0-9a-zA-Z]','')
evaluation.head()
🗼处理词
jieba.load_userdict(r'all_words.txt')

# 读入停止词
with open(r'mystopwords.txt', encoding='UTF-8') as words:
    stop_words = [i.strip() for i in words.readlines()]

# 构造切词的自定义函数,并在切词过程中删除停止词
def cut_word(sentence):
    words = [i for i in jieba.lcut(sentence) if i not in stop_words]
    # 切完的词用空格隔开
    result = ' '.join(words)
    return(result)
# 对评论内容进行批量切词
words = evaluation.Content.apply(cut_word)
# 前5行内容的切词效果
words[:5]
🗼词表格处理成1-0
from sklearn.feature_extraction.text import CountVectorizer
# 计算每个词在各评论内容中的次数,并将稀疏度为99%以上的词删除
counts = CountVectorizer(min_df = 0.01)
# 文档词条矩阵
dtm_counts = counts.fit_transform(words).toarray()
# 矩阵的列名称
columns = counts.get_feature_names()
# 将矩阵转换为数据框--即X变量
X = pd.DataFrame(dtm_counts, columns=columns)
# 情感标签变量
y = evaluation.Type
X.head()
🗼混淆矩阵和ROC
from sklearn import model_selection
from sklearn import naive_bayes
from sklearn import metrics
import matplotlib.pyplot as plt
import seaborn as sns
# 将数据集拆分为训练集和测试集
X_train,X_test,y_train,y_test = model_selection.train_test_split(X,y,test_size = 0.25, random_state=1)
# 构建伯努利贝叶斯分类器
bnb = naive_bayes.BernoulliNB()
# 模型在训练数据集上的拟合
bnb.fit(X_train,y_train)
# 模型在测试数据集上的预测
bnb_pred = bnb.predict(X_test)
# 构建混淆矩阵
cm = pd.crosstab(bnb_pred,y_test)
# 绘制混淆矩阵图
sns.heatmap(cm, annot = True, cmap = 'GnBu', fmt = 'd')
# 去除x轴和y轴标签
plt.xlabel('Real')
plt.ylabel('Predict')
# 显示图形
plt.show()

# 模型的预测准确率
print('模型的准确率为:\n',metrics.accuracy_score(y_test, bnb_pred))
print('模型的评估报告:\n',metrics.classification_report(y_test, bnb_pred))

独孤九剑第五式-朴素贝叶斯模型,机器学习从基础到进阶,机器学习,概率论,数据挖掘,朴素贝叶斯

y_score = bnb.predict_proba(X_test)[:,1]
fpr,tpr,threshold = metrics.roc_curve(y_test.map({'Negative':0,'Positive':1}), y_score)
# 计算AUC的值
roc_auc = metrics.auc(fpr,tpr)

# 绘制面积图
plt.stackplot(fpr, tpr, color='steelblue', alpha = 0.5, edgecolor = 'black')
# 添加边际线
plt.plot(fpr, tpr, color='black', lw = 1)
# 添加对角线
plt.plot([0,1],[0,1], color = 'red', linestyle = '--')
# 添加文本信息
plt.text(0.5,0.3,'ROC curve (area = %0.2f)' % roc_auc)
# 添加x轴与y轴标签
plt.xlabel('1-Specificity')
plt.ylabel('Sensitivity')
# 显示图形
plt.show()

独孤九剑第五式-朴素贝叶斯模型,机器学习从基础到进阶,机器学习,概率论,数据挖掘,朴素贝叶斯

💐文章适合于所有的相关人士进行学习💐
🍀各位看官看完了之后不要立刻转身呀🍀
🌿期待三连关注小小博主加收藏🌿
🍃小小博主回关快 会给你意想不到的惊喜呀🍃
各位老板动动小手给小弟点赞收藏一下,多多支持是我更新得动力!!!

独孤九剑第五式-朴素贝叶斯模型,机器学习从基础到进阶,机器学习,概率论,数据挖掘,朴素贝叶斯文章来源地址https://www.toymoban.com/news/detail-780932.html

到了这里,关于独孤九剑第五式-朴素贝叶斯模型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【机器学习 | 朴素贝叶斯】朴素贝叶斯算法:概率统计方法之王,简单有效的数据分类利器

    🤵‍♂️ 个人主页: @AI_magician 📡主页地址: 作者简介:CSDN内容合伙人,全栈领域优质创作者。 👨‍💻景愿:旨在于能和更多的热爱计算机的伙伴一起成长!!🐱‍🏍 🙋‍♂️声明:本人目前大学就读于大二,研究兴趣方向人工智能硬件(虽然硬件还没开始玩,但一直

    2024年02月15日
    浏览(56)
  • 机器学习--朴素贝叶斯分类器

    第1关:条件概率 什么是条件概率 概率指的是某一事件 A 发生的可能性,表示为 P(A) 。而条件概率指的是某一事件 A 已经发生了条件下,另一事件 B 发生的可能性,表示为 P(B|A) ,举个例子: 今天有 25% 的可能性下雨,即 P(下雨)=0.25 ; 今天 75% 的可能性是晴天,即 P(晴天)=0.7

    2024年02月08日
    浏览(65)
  • 【机器学习笔记】4 朴素贝叶斯

    贝叶斯分类 贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。 朴素贝叶斯分类是这一类算法中最简单的较为常见的算法。 先验概率 根据以往经验和分析得到的概率。我们用𝑃(𝑌)来代表在没有训练数据前假设𝑌拥有的初始概率。

    2024年02月19日
    浏览(45)
  • 机器学习_9、朴素贝叶斯

    2024年01月23日
    浏览(35)
  • 【AI】机器学习——朴素贝叶斯

    用于解决分类问题:将连续取值输入映射为离散取值的输出 解决分类问题的依据是数据的属性 利用后验概率选择最佳分类,后验概率通过贝叶斯定理求解 朴素贝叶斯假定所有属性相互独立,基于这一假设将类条件概率转化为属性条件概率的乘积 朴素贝叶斯方法可以使期望风

    2024年02月09日
    浏览(41)
  • 机器学习之朴素贝叶斯一

    朴素贝叶斯算法是典型的有监督学习算法,解决的是分类问题 贝叶斯算法是一种基于贝叶斯定理的分类算法,它的优点和缺点如下: 优点: 算法原理简单易懂,实现较为容易; 可以利用先验知识对模型进行训练,并不需要大量的数据就可以得到合理的预测结果; 对噪声数

    2024年02月06日
    浏览(38)
  • 机器学习课后习题 --- 朴素贝叶斯

    1.假设会开车的本科生比例是15%,会开车的研究生比例是23%。若在某大学研究生占学生比例是20%,则会开车的学生是研究生的概率是多少? A:80% B:16.6% C:23% D:15%   2.下列关于朴素贝叶斯的特点说法错误的是() A:朴素贝叶斯模型发源于古典数学理论,数学基础坚实 B:朴素贝叶斯

    2024年02月10日
    浏览(43)
  • 机器学习算法——贝叶斯分类器3(朴素贝叶斯分类器)

    基于贝叶斯公式来估计后验概率P(c|x)的主要困难在于:类条件概率P(x|c)是所有属性上的联合概率,难以从有限的训练样本直接估计而得。 为避开这个障碍,朴素贝叶斯分类器(Naive Bayes classfier)采用了“ 属性条件独立性假设 ”:对已知类别,假设所有属性相互独立。换句话

    2023年04月22日
    浏览(58)
  • 机器学习理论知识部分——朴素贝叶斯

    机器学习以及matlab和数据分析 机器学习聚类算法——BIRCH算法、DBSCAN算法、OPTICS算法_ 机器学习——随机森林算法、极端随机树和单颗决策树分类器对手写数字数据进行对比分析_极端随机森林算法 文章目录 问题一、朴素贝叶斯是基于特征独立性假设的概率模型吗? 问题二、

    2024年02月11日
    浏览(74)
  • 机器学习-朴素贝叶斯过滤垃圾邮件

    什么是朴素贝叶斯算法:用贝叶斯定理来预测一个未知类别的样本属于各个类别的可能性,选择可能性最大的一个类别作为该样本的最终类别。 用这个算法处理垃圾邮件就可以理解为:用贝叶斯定理来预测一封由若干个单词组成的不知道是否为垃圾邮件的邮件,它是垃圾邮件

    2024年02月09日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包