贝叶斯算法

贝叶斯算法

主要应用:新闻分类,评论分析,垃圾邮件分类等与文本相关的分类。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
古典学派和贝叶斯学派的争论
在这里插入图片描述
贝叶斯定理
在这里插入图片描述
在这里插入图片描述举个栗子:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
朴素贝叶斯:
在这里插入图片描述多项式模型
在这里插入图片描述
伯努利模型
在这里插入图片描述
混合模型
在这里插入图片描述
高斯模型
在这里插入图片描述
大脑中的贝叶斯
在这里插入图片描述

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))

#伯努利模型
ber = BernoulliNB()
ber.fit(x_train,y_train)

print(classification_report(ber.predict(x_test),y_test))
print(confusion_matrix(ber.predict(x_test),y_test))

#高斯模型
gis= GaussianNB()
gis.fit(x_train,y_train)

print(classification_report(gis.predict(x_test),y_test))
print(confusion_matrix(gis.predict(x_test),y_test))

三种算法的比较,对于iris,数据是连续的,所以采用高斯模型效果更好。

词袋模型

在这里插入图片描述举个栗子:
在这里插入图片描述

#CountVectorizer()方法构建单词的字典,
# 每个单词实例被转换为特征向量的一个数值特征,每个元素是单词在文本中出现的次数
from sklearn.feature_extraction.text import CountVectorizer

texts = ["dog cat fish","dog cat cat","fish bird fish"]
cv = CountVectorizer()#实例化这个类
cv_fit = cv.fit_transform(texts)#调用这个类的方法

print(cv.get_feature_names())#查看特征的描述
print(cv_fit.toarray())#把他变成array的形式

print(cv_fit.toarray().sum(axis=0))

统计每一个单词出现的次数,把它们相加即可得到这个
在这里插入图片描述
查看数据集中的情况:

from sklearn.datasets import fetch_20newsgroups
from sklearn.model_selection import train_test_split

news = fetch_20newsgroups(subset='all')

#数据集切分
x_train,x_test,y_train,y_test= train_test_split(news.data,news.target)


print(news.target_names)#20个种类名称标签
print(len(news.data))#18846篇文章
print(len(news.target))
print(news.data[0])#第0篇文章的内容

print(news.target[0])#第0篇文章对应的标签
print(news.target_names[news.target[0]])

TF-IDF

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#TfidfVectorizer使用一个高级的计算方法,称为Term Frequency Inverse Document
#Frequency(TF-IDF).这是衡量一个词在文本中或语料中重要的统计方法。
#直觉上讲,该方法通过比较在整个语料库的词的频率,寻求在当前文档中频率较高的词。
#这是一种将结果进行标准化的方法,可以避免因为有些词出现太过频繁而对一个实例的特征化作用不大的情况。
#我猜测比如a和and在英语中出现的频率比较高,但是他们对表征一个文本没什么作用
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())

字母后面的vaule值是标号。对应下面的计算所得之的下标。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值