如何使用TfIdfVectorizer使用SciKitLearn对文档进行分类?

yon*_*ano 2 python machine-learning scikit-learn

以下示例显示了如何使用Sklearn 20新闻组数据训练分类器.

>>> from sklearn.feature_extraction.text import TfidfVectorizer 
>>> categories = ['alt.atheism', 'talk.religion.misc', 'comp.graphics', 'sci.space']
>>> newsgroups_train = fetch_20newsgroups(subset='train', ... categories=categories) 
>>> vectorizer = TfidfVectorizer() >>> vectors = vectorizer.fit_transform(newsgroups_train.data) 
>>> vectors.shape (2034, 34118)
Run Code Online (Sandbox Code Playgroud)

但是,我有自己的标签语料库,我想使用它.

获得我自己的数据的tfidfvector后,我会训练这样的分类器吗?

classif_nb = nltk.NaiveBayesClassifier.train(vectorizer)
Run Code Online (Sandbox Code Playgroud)

回顾一下:我如何使用自己的语料库而不是20个新组,但这里使用的方法相同?那么如何使用我的TFIDFVectorized语料库来训练分类器呢?

谢谢!

lej*_*lot 8

解决评论中的问题; 在一些分类任务中使用tfidf表示的整个基本过程你应该:

  1. 您将矢量化器拟合到训练数据并将其保存在某个变量中,我们称之为tfidf
  2. 您通过data = tfidf.transform(...)转换训练数据(没有标签,只是文本)
  3. 您使用some_classifier.fit(数据,标签)来拟合模型(分类器),其中标签的顺序与数据中的文档顺序相同
  4. 在测试期间,您对新数据使用tfidf.transform(...),并检查模型的预测