朴素贝叶斯——分类模型
2021/9/3 23:10:41
本文主要是介绍朴素贝叶斯——分类模型,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
朴素贝叶斯——分类模型
朴素贝叶斯:首先贝叶斯推论就是通过结论推条件。专业点就是先假定先验概率,然后通过后验概率来判断先验概率的正确性,若不准确,则修正。(感觉好像逻辑回归的反向传播)
然后朴素的意思是:各个因素相互独立。互不干扰
优点
朴素贝叶斯发源于古典数学理论,有稳定的分类效率。
对缺失数据不太敏感,算法也比较简单,常用于文本分类
分类准确度高,速度快
缺点
由于使用了样本属性独立性的假设,所以如果样本属性有关联时其效果不好
鸢尾花
from sklearn.naive_bayes import GaussianNB from sklearn import datasets from sklearn.model_selection import train_test_split iris = datasets.load_iris() feature = iris.data target = iris.target g = GaussianNB() g.fit(x_train,y_train) g.score(x_test,y_test) #0.8333333333333334 # 查看第一条测试数据的分类 g.predict(x_test[1].reshape((1,-1))) tmp = g.predict_proba(x_test[10].reshape(1,-1)) #获得预测值,求和=1,注意这里没有取log import numpy as np data= np.around(tmp, 2) #保留两位小数 data
手写数字
import sklearn.datasets as datasets import numpy as np digist = datasets.load_digits() feature= digist.data target = digist.target x_train,x_test,y_train,y_test = train_test_split(feature,target,test_size=0.1,random_state=2020) #训练模型 g = GaussianNB() g.fit(x_train,y_train) g.score(x_test,y_test)#0.8333333333333334 y_pred = g.predict(x_test) print('模型分类结果:',y_pred[:10]) print('真实的分类结果:',y_test[:10]) #看各种分类的概率 其中4的概率也是最大的 tmp = g.predict_proba(x_test[3].reshape(1,-1)) data= np.around(tmp, 2) data # g.predict_log_proba(x_test[3].reshape(1,-1)) 这个是把概率取log了,就不会发生很大的精度误差了
数据使用- 实战:数据使用fetch_20newsgroups中的数据,包含了20个主题的18000个新闻组的帖子
- 什么是TF-IDF
- 在信息检索中,tf-idf(词频-逆文档频率)是一种统计方法,用以评估一个单词在一个文档集合或语料库中的重要程度。
- 如果某个词或短语在一篇文章中出现的频率高(即TF高),并且在其他文章中很少出现(即IDF高),则认为此词或者短语具有很好的类别区分能力,适合用来分类。
import sklearn.datasets as datasets from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.model_selection import train_test_split from sklearn.naive_bayes import MultinomialNB news = datasets.fetch_20newsgroups(data_home='./') #加载20类新闻数据 feature = news.data#返回的是列表,列表中为一篇篇的文章 target = news.target#返回的ndarray,存储的是每一篇文章的类别 print(feature[1]) t = TfidfVectorizer() feature_t = t.fit_transform(feature) #提取Tf_idf x_train,x_test,y_train,y_test = train_test_split(feature_t,target,test_size=0.01,random_state=2020) m = MultinomialNB() m.fit(x_train,y_train) m.score(x_test,y_test) #0.868421052631579 m.predict(x_test) m.predict_log_proba(x_test[10])
这篇关于朴素贝叶斯——分类模型的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-01基于Python+Vue开发的医院门诊预约挂号系统
- 2024-10-01基于Python+Vue开发的旅游景区管理系统
- 2024-10-01RestfulAPI入门指南:打造简单易懂的API接口
- 2024-10-01初学者指南:了解和使用Server Action
- 2024-10-01Server Component入门指南:搭建与配置详解
- 2024-10-01React 中使用 useRequest 实现数据请求
- 2024-10-01使用 golang 将ETH账户的资产平均分散到其他账户
- 2024-10-01JWT用户校验课程:从入门到实践
- 2024-10-01Server Component课程入门指南
- 2024-09-30Dnd-Kit学习:新手快速入门指南