1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > svc预测概率_机器学习朴素贝叶斯 SVC对新闻文本进行分类

svc预测概率_机器学习朴素贝叶斯 SVC对新闻文本进行分类

时间:2020-06-04 01:17:39

相关推荐

svc预测概率_机器学习朴素贝叶斯 SVC对新闻文本进行分类

朴素贝叶斯分类器模型(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 importfetch_20newsgroups

news= fetch_20newsgroups(subset='all')from string importpunctuation

table= str.maketrans(' ',' ',punctuation)

st= [w.translate(table) for w innews.data]from sklearn.model_selection importtrain_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 importCountVectorizerfrom sklearn.feature_extraction.text importTfidfVectorizer,TfidfTransformerfrom sklearn.metrics importclassification_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 importLinearSVC

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。