在文本挖掘/分类中,当使用矢量化程序将文本转换为数字要素时,在训练TfidfVectorizer(...).fit_transform(text)
或TfidfVectorizer(...).fit(text)
中使用。在测试中,它假设使用以前的训练信息,并在训练拟合后转换数据。
一般情况下,试运行与列车运行完全分开。但它需要一些关于在训练阶段获得的拟合的信息,否则转换将失败并出现错误sklearn.utils.validation.NotFittedError: idf vector is not fitted
。它不仅仅是一本字典,还有其他的东西。
培训结束后应该保存什么,以使测试阶段顺利通过?
换句话说,火车和测试在时间和空间上分开,如何使测试工作,利用培训结果?
更深层次的问题是在scikit-learn环境中“适合”意味着什么,但它可能超出了范围
答案 0 :(得分:0)
在测试阶段,您应使用与训练阶段中使用的相同型号名称。通过这种方式,您将能够使用在训练阶段中派生的模型参数。以下是一个例子;
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)
通过这种方式,您的代码将能够持续处理培训和测试阶段。