无监督学习------分类学习-----朴素贝叶斯(navie bayes)

朴素贝叶斯是一个实用性很强的分类模型,不过线性分类器和支持向量机分类器(基于线性假设的模型)不同,朴素贝叶斯的构造基础是贝叶斯理论

这个模型的基本数学假设是:各个维度上的特征被分类的条件概率之间是相互独立的。

朴素贝叶斯模型有着广泛的实际应用环境,特别是在文本分类的任务中间,包括互联网新闻的分类,垃圾邮件的筛选等等。

一:以经典的20类新闻文本作为测试数据。

(1)读取20类新闻文本的数据细节

print(len(news.data))

print(news.data[0])

不同于前面的样例数据,这些文本数据既没有被设定特征,也没有数字化的量度。因此,再交给朴素贝叶斯分类器学习之前,要对数据作进一步的处理。

(2)20类新闻文本数据分割

#从sklearn.model_selection导入train_test_split

from sklearn.model_selection import train_test_split

#随机采样25%的数据样本作为测试集

X_train,X_test,y_train,y_test=train_test_split(news.data,news_traget,news_size=0.25,random_state=33)

(3)首先将文本转化为特征向量,然后利用朴素贝叶斯模型从训练数据中估计参数,最后利用这些概率参数对同样转化为特征向量的测试新闻样本进行分类预测。

使用朴素贝叶斯分类器对新闻文本数据进行类别预测

#从sklearn.feature_extraction.text里导入用于文本特征向量转化模块。

from sklearn.feature_extraction.text import CountVectorizer

vec=CountVectorizer()

X_train=vec.fit_transform(X_train)

X_test=vec.transform(X_test)

#从sklearn.navie_bayes里导入朴素贝叶斯模型

from sklearn.navie_bayes import MultinomialNB

#使用默认配置初始化朴素贝叶斯模型

mnb=MultinomailNB()

$利用训练数据对模型参数进行估计

mnb.fit(X_train,y_train)

#对测试样本进行类别预测,结果存储在变量y_predict中

y_predict=mnb.predict(X_test)

(4)性能评估,对朴素贝叶斯分类器在新闻文本数据上的表现性能进行评估

#从sklearn.metrics里导入classifiercation_report用于详细的分类性能描述

from sklearn.metrics import classification_report

print('The accuracy of navie bayes classifier id',mnb.score(X_test,y_test))

print(classification_report(y_test,y_predict,target_names=news.target_names))

(5)特点分析:朴素贝叶斯模型被广泛应用于海量互联网文本分类任务。由于其较强的特征条件独立假设,使得模型预测所需要估计的参数规模从幂指数量级向线性量级减少,极大地节约了内存消耗和计算时间。但是也正是受这种强假设的限制模型训练时无法将各个特征之间的联系考量在内,使得该模型在其他数据特征关联性较强的分类任务上的性能表现不佳

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值