机器学习笔记05:朴素贝叶斯

朴素贝叶斯

1. 概率基础

  1. 案例:垃圾邮件的分类
  2. 概率:一件事情发生的可能性。
    条件:所有特征之间是相互独立的
    在这里插入图片描述
  3. 题目:
    在夏季,某公园男性穿凉鞋的概率为 12 ,女性穿凉鞋的概率为 23 ,并且该公园中男女比例通常为 2:1 ,问题:若你在公园中随机遇到一个穿凉鞋的人,请问他的性别为男性或女性的概率分别为多少?
    1. 先验概率:是指根据以往经验和分析得到的概率。
      在这里插入图片描述
    2. 条件概率:条件概率是指在事件 Y=y 已经发生的条件下,事件 X=x 发生的概率。条件概率可表示为: P(X=x|Y=y) 。而条件概率计算公式为:
      在这里插入图片描述
    3. 联合概率:其中 P(X=x,Y=y) 是联合概率
      在这里插入图片描述
    4. 全概率公式 :全概率公式是指:如果事件 Y=y1,Y=y2,…,Y=yn 可构成一个完备事件组,即它们两两互不相容,其和为全集。则对于事件 X=x 有:
      在这里插入图片描述
    5. 后验概率:后验概率是指,某事件 X=x 已经发生,那么该事件是因为事件 Y=y 的而发生的概率。也就是上例中所需要求解的“在知道一个人穿拖鞋的前提下,这个人是男性的概率或者是女性的概率是多少”。后验概率形式化便是:
      在这里插入图片描述
      而朴素贝叶斯算法正是利用以上信息求解后验概率,并依据后验概率的值来进行分类。
      在这里插入图片描述

2.fit、transform、fit_transform区别

  1. fit():就是求得训练集的均值,方差,最大值,最小值,这些训练集的固有属性。
  2. transform():在fit的基础上,进行标准化,降维,归一化等操作。
  3. fit_transform():fit_transform是fit和transform的组合,既包括了训练又包含了转换。transform()和fit_transform()二者的功能都是对数据进行某种统一处理(比如标准~N(0,1),将数据缩放(映射)到某个固定区间,归一化,正则化等)

3. 朴素贝叶斯(Naive Bayesian)

  1. 前提条件:特征相互独立。
  2. !!!!贝叶斯公式:
    在这里插入图片描述
  3. 案例:
    在这里插入图片描述
    出现问题:
  4. API:sklearn.naive_bayes.MultinomialNB
# sklearn 20类新闻分类
from sklearn.neighbors import KNeighborsClassifier
import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.datasets import load_iris,fetch_20newsgroups,load_boston
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB

def naivebayes():
    # 朴素贝叶斯
    
    news = fetch_20newsgroups(subset = 'all')
    
    #对数据进行分割
    x_train,x_test,y_train,y_test = train_test_split(news.data,news.target,test_size = 0.25)
    
    # 对数据集进行特征抽取
    tf = TfidfVectorizer()
    
    x_train = tf.fit_transform(x_train)
    print(tf.get_feature_names())
    print(x_train.toarray())
    x_test = tf.transform(x_test)
    
    # 朴素贝叶斯算法

    mlt = MultinomialNB(alpha=1.0)
    mlt.fit(x_train,y_train)
    
    y_predict = mlt.predict(x_test)
    
    print(y_predict)
    
    print(mlt.score(x_test,y_test))

    return None

if __name__ == "__main__":
    naivebayes()

在这里插入图片描述

  1. 朴素贝叶斯的影响因素就是训练集它不像knn那样可以调参数。
  2. 优点:
    1. 朴素贝叶斯模型发源于古典数学理论,有稳定的分类效率
    2. 缺失数据不太敏感,算法也比较简单,常用于文本分类。
    3. 分类准确度高,速度快
  3. 缺点:
    需要知道先验概率P(F1,F2,…|C),假设了他们的相对独立,因此在某些时候会由于假设的先验模型的原因导致预测效果不佳。

4. 分类模型的评估

  1. 准确率:estimator.score()
  2. 混淆矩阵:有几个类别有几个混淆矩阵
    首先考虑二分类的问题:
    在这里插入图片描述
    精确率:预测结果为正例样本中真实为正例的比例。
    召回率:真实的正例中预测结果为正例的比例。
    在这里插入图片描述
  3. F1-score:越高越好
    在这里插入图片描述
    API:sklearn.metrics.classfication_report
    使用:sklearn.metrics.classfication_report(y_true,y_pred,target_names = None)
    返回值:每个类别的精确率和召回率

5. 模型选择和调优

  1. 交叉验证:
    在这里插入图片描述
  2. 网格搜索(超参数搜索):调参数,用交叉验证得出值,进行比较取最优
    不止一个参数时,就是要两两组合。
    API:sklearn.model_selection.GridSearchCV
    举例:sklearn.model_selection.GridSearchCV(estimator, param_grid=None,cv=None)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值