认真是我们
参与这个社会的方式

fetch_20newsgroups案例

参考

https://blog.csdn.net/qq_35082030/article/details/70211552


fetch_20newsgroups是sklearn中内置的一个数据集。案例是一个新闻标题分类,整个过程概括起来分为以下几步

  1. 数据采集
  2. 特征提取
  3. 模型训练
  4. 模型评估

函数原型

##函数原型是这样的。
'''
fetch_20newsgroups(data_home=None,subset='train',categories=None,shuffle=True,random_state=42,remove=(),download_if_missing=True)
'''
'''
data_home指的是数据集的地址,如果默认的话,所有的数据都会在'~/scikit_learn_data'文件夹下.

subset就是train,test,all三种可选,分别对应训练集、测试集和所有样本。

categories:是指类别,如果指定类别,就会只提取出目标类,如果是默认,则是提取所有类别出来。

shuffle:是否打乱样本顺序,如果是相互独立的话。

random_state:打乱顺序的随机种子

remove:是一个元组,用来去除一些停用词的,例如标题引用之类的。

download_if_missing: 如果数据缺失,是否去下载。
'''

 

数据采集

from sklearn.datasets import fetch_20newsgroups
categories = ['alt.atheism', 'soc.religion.christian', 'comp.graphics', 'sci.med']
twenty_train = fetch_20newsgroups(subset='train', categories=categories, shuffle=True, random_state=42)

注:这里根据上面的函数原型可以得知,获取的是训练集

twenty_train.data是一个list类型,每一个元素是str类型,也就是一篇文章。

twenty_train.target则是它的标签。

提取特征

'''
这是开始提取特征,这里的特征是词频统计。
'''
from sklearn.feature_extraction.text import CountVectorizer
count_vect = CountVectorizer()
X_train_counts = count_vect.fit_transform(twenty_train.data)

'''
这是开始提取特征,这里的特征是TFIDF特征。
'''
from sklearn.feature_extraction.text import TfidfTransformer
tfidf_transformer = TfidfTransformer()
X_train_tfidf = tfidf_transformer.fit_transform(X_train_counts)

 

训练模型

这里我们使用朴素贝叶斯来进行训练,而且使用的是默认值,官网上面有很多参数可以调节这个算法。

'''
使用朴素贝叶斯分类,并做出简单的预测
'''
from sklearn.naive_bayes import MultinomialNB
#这是进行训练的过程。
clf = MultinomialNB().fit(X_train_tfidf, twenty_train.target)
docs_new = ['God is love', 'OpenGL on the GPU is fast']
X_new_counts = count_vect.transform(docs_new)
X_new_tfidf = tfidf_transformer.transform(X_new_counts)
#重要的一行在这里,这是进行预测的过程。
predicted = clf.predict(X_new_tfidf)
for doc, category in zip(docs_new, predicted):
    print('%r => %s' % (doc, twenty_train.target_names[category]))

 

 

没有故事 也没有酒

点也没用点也没用