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) #非零元素数量
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、贝叶斯分类是基于朴素贝叶斯算法的模型,朴素贝叶斯的假设每个输入变量都是独立的。朴素贝叶斯分类模型的原理是:在给出的待分类样本中,找出当前条件下出现概率最大的类别,此类别即为待分类样本的所属类别。