如何在Python中使用保存模型进行预测

2024-04-11

我正在 python 中进行文本分类,我想在生产环境中使用它来对新文档进行预测。我正在使用 TfidfVectorizer 来构建 bagofWord。

我在做:

X_train = vectorizer.fit_transform(clean_documents_for_train, classLabel).toarray()

然后我进行交叉验证并使用 SVM 构建模型。之后我保存模型。

为了对我的测试数据进行预测,我将该模型加载到另一个脚本我有相同的 TfidfVectorizer,并且我知道我无法对测试数据进行 fit_transform 。我要做:

X_test = vectorizer.transform(clean_test_documents, classLabel).toarray()

但这是不可能的,因为我必须先适应。我知道有办法。我可以加载我的训练数据并执行fit_transform就像我在构建模型期间所做的那样,但是我的训练数据非常大,每次我想要预测时我都无法做到这一点。所以我的问题是:

  • 有没有办法可以在我的测试数据上使用 TfidfVectorizer 并执行预测?
  • 还有其他方法可以进行预测吗?

矢量化器是模型的一部分。当你保存训练好的SVM模型时,你还需要保存相应的向量化器。

为了使这更方便,您可以使用Pipeline http://scikit-learn.org/stable/modules/generated/sklearn.pipeline.Pipeline.html构造一个“适合”对象,表示将原始输入转换为预测输出所需的步骤。在这种情况下,管道由 Tf-Idf 提取器和 SVM 分类器组成:

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn import svm
from sklearn.pipeline import Pipeline

vectorizer = TfidfVectorizer()
clf = svm.SVC()
tfidf_svm = Pipeline([('tfidf', vectorizer), ('svc', clf)])

documents, y = load_training_data()
tfidf_svm.fit(documents, y)

这样,只需要保存一个对象:

from sklearn.externals import joblib
joblib.dump(tfidf_svm, 'model.pkl')

要将模型应用于测试文档,请加载经过训练的管道并简单地使用其predict使用原始文档作为输入照常运行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Python中使用保存模型进行预测 的相关文章

随机推荐