以下示例展示了如何使用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)
然而,我有自己的标记语料库,我想使用它。
在获得我自己的数据的tfidf向量后,我应该这样训练分类器吗?
classif_nb = nltk.NaiveBayesClassifier.train(vectorizer)
总结一下:如何使用我自己的语料库来代替这里使用的20个新闻组?然后如何使用我的TFIDF向量化的语料库来训练分类器?
谢谢!
回答:
为了回答评论中的问题;在使用tfidf表示进行某些分类任务的基本流程中,你应该:
- 你需要将向量化器拟合到你的训练数据上,并将其保存到某个变量中,我们称之为tfidf
- 你需要将训练数据(仅文本,不含标签)通过data = tfidf.transform(…)进行转换
- 你需要使用some_classifier.fit(data, labels)来拟合模型(分类器),其中标签的顺序与data中的文档顺序相同
- 在测试过程中,你使用tfidf.transform(…)对新数据进行转换,并检查你的模型的预测结果