朴素贝叶斯分类器模型(Naive Bayles)

Model basic introduction:

  朴素贝叶斯分类器是通过数学家贝叶斯的贝叶斯理论构造的,下面先简单介绍贝叶斯的几个公式:

先验概率: P(X) or P(Y)

条件概率: P(X|Y)=P(XY)\P(Y)  => P(XY)=P(X|Y)*P(Y)   ①

后验概率: P(Y|X)=P(YX)\P(X)  结合①式可以推导=> P(Y|X)=P(X|Y)*P(Y)\P(X)

朴素贝叶斯分类器:它可以计算数据的每一个维度 被分到某一个类的概率。倘若一个数据有n个维度的特征,用X={x1,x2,x3,x4,x5,….,xn}来表示,类别有K个,用Y={y1,y2,y3,y4,y5,…,yk}来表示。那么X被分到i类的概率就可以用一个公式来表示:

P(Y=y(i) | X) = P(X | Y=y(i) ) *P( Y=y(i) ) \ P(X)

朴素贝叶斯的目的就是找到向量X属于最大概率的类别,所以 argmax P(Y|X)=argmaxP(x1,x2,x3,x4…|Y)*P(Y)   因为朴素贝叶斯的每个特征假设都是独立的,所以将每个特征进行单独计算。

利用SVC分类器对文本进行分类:

对文本单词进行统计,统计出所有单词(去除重复的),然后将这些单词作为特征向量,将行数作为维度。

①   :分割数据集

②   :使用特征向量化库对文本进行 特征向量转化(将文本转化成多维度的特征向量)

③   :初始化SVC模型,用分割好的训练数据,训练模型,使模型get到参数

④   :用训练好的模型,预测X_test

⑤   :用svc自带的评估来评估模型,用classification_report对预测结果(分类器性能)评估

from sklearn.datasets import fetch_20newsgroups
news = fetch_20newsgroups(subset='all') from string import punctuation
table = str.maketrans(' ',' ',punctuation)
st = [w.translate(table) for w in news.data]
from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test = train_test_split(news.data,news.target,test_size=0.25,random_state=33,stratify=news.target)
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfVectorizer,TfidfTransformer
from sklearn.metrics import classification_report #运用tfidf来特征向量化
tfidf_filter_vec=TfidfVectorizer(max_df=0.045,binary=True,stop_words='english',ngram_range=(1,2),smooth_idf=True,sublinear_tf=True)
X_tfidf_filter_train = tfidf_filter_vec.fit_transform(X_train)
X_tfidf_filter_test = tfidf_filter_vec.transform(X_test) #svc
from sklearn.svm import LinearSVC
svc=LinearSVC()
svc.fit(X_tfidf_filter_train,y_train)
svc_pred = svc.predict(X_tfidf_filter_test)
print('svc',svc.score(X_tfidf_filter_test,y_test))

SVC评估结果为: 0.941213921901528

  

最新文章

  1. web前端之HTML的大框架(body元素与frameset元素)
  2. mysql explain 中key_len的计算
  3. html5+php实现文件的断点续传ajax异步上传
  4. 关于python中的编码:unicode, utf-8, gb2312
  5. 蓝桥杯历届试题 地宫取宝 dp or 记忆化搜索
  6. 用于分类的决策树(Decision Tree)-ID3 C4.5
  7. maven 添加中央仓库中没有的jar
  8. Programming a Spider in Java 源码帖
  9. 三种方式实现观察者模式 及 Spring中的事件编程模型
  10. openstack第五章:cinder
  11. C#直接使用DllImport调用C/C++动态库(dll文件)
  12. pycharm中replace的应用
  13. (转)RBAC权限管理
  14. 路由跟踪表满,日志报错nf_conntrack: table full, dropping packet.
  15. javascript 实现数据结构 - 队列
  16. MultipartFile 多文件上传的应用
  17. python 全栈开发,Day90(Vue组件,前端开发工具包)
  18. Service Fabric下删除实例并注销应用
  19. Weka中数据挖掘与机器学习系列之数据格式ARFF和CSV文件格式之间的转换(五)
  20. java中的byte

热门文章

  1. 【css】display:flex和display:box有什么区别
  2. 可运行jar包转.exe
  3. SuperMap iClient3D for WebGL 9D怎么将s3m图层的纹理变更精细些
  4. 关于iReport5.6.0无法正常启动或者闪退或者JDK8不兼容的解决方案
  5. Flutter 34: 图解自定义 View 之 Canvas (一)
  6. world 页面横向
  7. Caffe---自带工具进行网络结构(xxx.prototxt)可视化
  8. 自定义ViewGroup基础巩固2---onMeasure()学习及综合实现圆形菜单
  9. 【NOIP/CSP2019】D1T2 括号树
  10. NMI是什么