Vectorizer存储适合信息的位置和方式?

时间:2016-03-09 02:58:06

标签: python scikit-learn

在文本挖掘/分类中,当使用矢量化程序将文本转换为数字要素时,在训练TfidfVectorizer(...).fit_transform(text)TfidfVectorizer(...).fit(text)中使用。在测试中,它假设使用以前的训练信息,并在训练拟合后转换数据。

一般情况下,试运行与列车运行完全分开。但它需要一些关于在训练阶段获得的拟合的信息,否则转换将失败并出现错误sklearn.utils.validation.NotFittedError: idf vector is not fitted。它不仅仅是一本字典,还有其他的东西。

培训结束后应该保存什么,以使测试阶段顺利通过?

换句话说,火车和测试在时间和空间上分开,如何使测试工作,利用培训结果?

更深层次的问题是在scikit-learn环境中“适合”意味着什么,但它可能超出了范围

1 个答案:

答案 0 :(得分:0)

在测试阶段,您应使用与训练阶段中使用的相同型号名称。通过这种方式,您将能够使用在训练阶段中派生的模型参数。以下是一个例子;

  • 首先给你的矢量化器和你的预测算法命名(在这种情况下是NB)
  

vectorizer = TfidVectorizer()

     

classifier = MultinomialNB()

  • 然后,使用这些名称来矢量化和预测您的数据
  

trainingdata_counts = vectorizer.fit_transform(trainingdata.values)

     

classifier.fit(trainingdata_counts,trainingdatalabels)

     

testdata_counts = vectorizer.transform(testdata.values)

     

预测= classifier.predict(testdata_counts)

通过这种方式,您的代码将能够持续处理培训和测试阶段。

相关问题