矢量化器,拟合信息的存储位置或方式



当使用矢量化器将文本转换为数字特征时,在训练TfidfVectorizer(...).fit_transform(text)中使用TfidfVectorizer(...).fit(text)。在测试中,它假设利用以前的训练信息,并在训练拟合后转换数据。

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

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

换句话说,训练

和测试在时间和空间上是分开的,如何利用训练结果使测试工作?

更深层次的问题是"适合"在scikit-learn上下文中意味着什么,但它可能超出了范围

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

  • 首先给你的矢量化器和你的预测算法起一个名字(在本例中是NB)

矢量化器 = TfidVectorizer()

分类器 = 多项式NB()

  • 然后,使用这些名称对数据进行矢量化和预测

trainingdata_counts = vectorizer.fit_transform(trainingdata.values)

classifier.fit(trainingdata_counts, trainingdatalabels)

testdata_counts = vectorizer.transform(testdata.values)

预测

=分类器.预测(testdata_counts)

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

最新更新