分类:贝叶斯分类之新闻组数据组学习(查看数据类型的方法)(环境:Pycharm)

1、查看数据类型:
type(数据)(在下面的探究中会标注出来)
2、初步探究(重点是机器学习模型只能处理数值数据,所以新闻样本集里的每一个文本样本都要转为TF-IDF向量。)

from sklearn.datasets import fetch_20newsgroups
from sklearn.feature_extraction.text import TfidfVectorizer
news=fetch_20newsgroups()
print(news.data[0]) #输出news.data数据里的第一行数据内容
print(type(news.data[0]))#查看news.data数据的类型,查看第一行数据内容就行
vectorizer=TfidfVectorizer()
vdata=vectorizer.fit_transform(news.data)
print(vdata.shape) #11314个样本转为TF-IDF向量
print(vdata.nnz) #非零元素数量
注:**新闻样本集里的一个文本样本大多是几百个字符,转为TF-IDF向量后,特征维超过13万个,而每个样本的非零特征维平均只有158个,可见这个数据集是非常稀疏的,适用于先验分布为多项式分布的朴素贝叶斯分类模型MultinomialNB** (在Scikit-learn朴素贝叶斯模块naive_bayes中,一共有三个朴素贝叶斯分类模型类,其中GaussianNB是先验分布为高斯分布的朴素贝叶斯,MultinomialNB是先验分布为多项式分布的朴素贝叶斯,BernoulliNB是先验分布为伯努利分布的朴素贝叶斯)

3、数据集整体再探究

from sklearn.datasets import fetch_20newsgroups
from sklearn.feature_extraction.text import TfidfVectorizer #TF-IDF向量
from sklearn.naive_bayes import MultinomialNB #导入多项式分布的朴素贝叶斯模型
from sklearn.model_selection import train_test_split as tsplit 
from sklearn.metrics import classification_report #导入分类结果报告函数
X,y=fetch_20newsgroups(return_X_y=True) #获取新闻数据集合分类标签集
vectorizer=TfidfVectorizer()
vdata=vectorizer.fit_transform(X) #文本转为TF-IDF向量
x_train,x_test,y_train,y_test=tsplit(vdata,y,test_size=0.1)
m=MultinomialNB() #实例化多项式分布的朴素贝叶斯分类模型
m.fit(x_train,y_train) #模型训练
precision=m.score(x_test,y_test)
print("测试集分类准确率:%0.2f"%precision)
y_pred=m.predict(x_test)
report=classification_report(y_test,y_pred)
print("测试集分类结果报告:
",report)

4、贝叶斯分类是基于朴素贝叶斯算法的模型,朴素贝叶斯的假设每个输入变量都是独立的。朴素贝叶斯分类模型的原理是:在给出的待分类样本中,找出当前条件下出现概率最大的类别,此类别即为待分类样本的所属类别。

原文地址:https://www.cnblogs.com/lgbdbky/p/14726612.html