贝叶斯算法

主要应用在新闻分类,文本分析,反正跟文本之类的归类都可以

数据统计学处理的信息

总体信息:当前总体样本符合某种分布.比如抛硬币二项分布.学生的某一科的成绩符合正太分布.

样本信息:通过抽样得到的部分样本的某种分布

抽样信息 = 总体信息 + 样本信息

 

先验信息:抽样之前,有关推断问题中未知参数的一些信息,通常来自于经验或历史资料.

基于总体信息 + 样本信息 + 先验信息进行统计推断的方法和理论,称为贝耶斯统计学

贝叶斯定理告诉我们如何交换条件概率中的条件与结果,即如果已知p(x|h) ,要求p(h|x),那么可以使用下面的计算方法:

\large P(H|X) = \frac{P(X|H)P(H)}{P(X)}

1.P(H|X)给定观测数据样本X,假设H是成立的概率  , 比如X是一份具有特定特征的邮件,H是垃圾邮件,他里面包含很多的单词(特征),然后我们判定这封邮件属于垃圾邮件的概率是多少

2.P(H|X) 是后验概率.比如一份特定邮件中,是垃圾邮件的概率.

3.P(H)是H的先验概率,比如总体邮件中垃圾邮件的概率

4.P(X)是X的先验概率,比如总体邮件中特定特征的邮件概率

可以通过抽样来计算先验概率.抽样的数量越大,得到的结果越接近于真实的概率分布 - 大数定理

贝叶斯定理__ 举例

邮件 : 总体100,正常70,垃圾30.办证在邮件中出现10,在垃圾邮箱中出现25次

假设X为'办证',H为垃圾邮件

P(X|H) = 25/30 = 5/6

P(H) = 30/100 = 3/10

P(X) = 35/100 = 7/20

\large P(H|X) = \frac{P(X|H)P(H)}{P(X)} =5/7

包含'办证'这个词的邮件属于垃圾邮箱的概率为5/7

import numpy as np
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report,confusion_matrix
#多项模型,伯努模型,高斯模型
from sklearn.naive_bayes import MultinomialNB,BernoulliNB,GaussianNB

# 载入数据
iris = datasets.load_iris()
x_train,x_test,y_train,y_test = train_test_split(iris.data,iris.target)

mul_nb = MultinomialNB()
mul_nb.fit(x_train,y_train)
print(classification_report(mul_nb.predict(x_test),y_test))

print(confusion_matrix(mul_nb.predict(x_test),y_test))
#贝叶斯 --新闻分类

from sklearn.datasets import fetch_20newsgroups
from sklearn.model_selection import train_test_split
news = fetch_20newsgroups(subset = 'all')

print(news.target_names)
print(len(news.data))
print(len(news.target))

print(news.target[0])
print(news.target_names[news.target[0]])

x_train,x_test,y_train,y_test = train_test_split(news.data,news.target)

# CountVectorizer 方法构建单词的字典,每一个单词实例被转换为特征向量的一个数值特征,每一个元素都是特定单词在文本中出现的次数
from sklearn.feature_extraction.text import CountVectorizer
texts = ['dog cat fish','dog cat cat','fish bird','bird']
cv = CountVectorizer()
cv_fit = cv.fit_transform(texts)
print(cv.get_feature_names())
print(cv_fit.toarray())
print(cv_fit.toarray().sum(axis=0))

 

TF - IDE 算法

词频(TF) = 某个词在文章中的出现次数

词频(TF) = 某个词在文章中的出现次数 / 文章的总词数

词频(TF) = 某个词在文章中的出现次数 / 给文出现次数最多的词的出现次数

逆文档频率(IDF) = log(语料库的文档总数 / 包含该词的文档数+1)

TF - IDF = 词频(TF) * 逆文档频率(IDF)

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CID( ͡ _ ͡°)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值