机器学习入门之贝叶斯算法

贝叶斯公式

请添加图片描述

在这里插入图片描述

朴素贝叶斯

请添加图片描述

三种贝叶斯模型

sklearn中已经为我们准备好了贝叶斯的库,引入代码:
from sklearn.naive_bayes import MultinomialNB,BernoulliNB,GaussianNB

(1)伯努利贝叶斯BernoulliNB

这种方法比较适合于伯努利分布的数据集,也被称为二项分布或者是0-1分布,比如我们进行抛硬币的游戏,硬币落下来只有两种可能,正面或反面,这就是一种伯努利分布。

(2)高斯贝叶斯GaussianNB

假设样本的特征符合高斯分布,或者说是正态分布的时候使用的算法

(3)多项式贝叶斯MultinomialNB

用于拟合多项式分布的数据集,比如说扔骰子,结果可能是1-6六个数字,如果我们投n次骰子,而每个面朝上的分布情况,就是一个多项式分布。

词袋模型

词袋模型的作用:把不同长度的文本都转换为相同长度的向量

先给出下面两个文本文档
John likes to watch movies.Mary likes too.
John also likes to watch football games.
基于上述两个文档中出现的单词,构建如下词典
(“John”:1,“likes”:2,“to”:3,“watch”:4,“movies”:5,“also”:6,“football”:7,“games”:8,“Mary”:9,“too”:10)
那么这两个文档就都可以用一个10维的向量来表示
[1,2,1,1,1,0,0,0,1,1]
[1,1,1,1,0,1,1,1,0,0]
该向量与原来文本中单词出现的顺序没有关系,而是词典中每个单词在文本中出现的频率

一个小案例

# 词袋模型
from sklearn.feature_extraction.text import CountVectorizer
texts=["cat fish","dog cat cat","fish brid","brid"]
cv=CountVectorizer()#实例化构建词典的对象
cv_fit=cv.fit_transform(texts)

print(cv.get_feature_names_out())
print(cv_fit.toarray())

在这里插入图片描述

TF-IDF

  1. 提取词频(TF),但是一篇文章出现最多的可能是“的,是,在”等对文章分类或搜索没有帮助的停用词。
  2. 假设我们把停用词都过滤掉了,只考虑有意义的词,“中国”,“蜜蜂”,“养殖”这三个词的TF一样,作为关键词,他们的重要性一样吗?
  3. 显然不是,“中国”是很常见的词,相对而言,“蜜蜂”,“养殖”不拿,不那么常见,如果这三个词在一篇文章中的出现次数一样多,有理由认为“蜜蜂,养殖”的重要程度大于“中国”。
  4. 所以在词频的基础上,我们给每个词分配一个“重要性”的权重,这个权重叫做“逆文档频率”(IDF)

请添加图片描述

请添加图片描述
一个小栗子:

还是以《中国的蜜蜂养殖》为例,假定该文长度为1000个词,“中国”、“蜜蜂”、“养殖"各出现20次,则这三个词的"词频”(TF)都为0.02。然后,搜索Google发现,包含"的"字的网页共有250亿张,假定这就是中文网页总数。包含"中国"的网页共有62.3亿张,包含"蜜蜂"的网页为0.484亿张,包含"养殖"的网页为0.973亿张。则它们的逆文档频率(IDF)和TF-IDF如下

请添加图片描述
所以对于这篇文章来说,关键词的重要度:
蜜蜂>养殖>中国

python实现

from sklearn.feature_extraction.text import TfidfVectorizer
text=["The quick brown fox jumped over the lazy dog",
      "The dog",
      "The fox"]
#创建变换函数
vectorizer=TfidfVectorizer()
#词条化以及创建词汇表
vectorizer.fit(text)
#总结
print(vectorizer.vocabulary_)
print(vectorizer.idf_)
#编码文档
vector=vectorizer.transform([text[0]])
#总结编码文档
print(vector.shape)
print(vector.toarray())

在这里插入图片描述
对于text[0]来说,序号为7的tf-idf最大,所以我们认为the是对text[0]最重要的词,同理,需要为1,2的最小,所以dog和fox是最不重要的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值