【问题标题】:How to use save model for prediction in python如何在python中使用保存模型进行预测
【发布时间】:2016-03-08 06:41:16
【问题描述】:

我正在 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 并执行预测?
  • 还有其他方法可以执行预测吗?

【问题讨论】:

    标签: python-2.7 scikit-learn nltk prediction


    【解决方案1】:

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

    为了更方便,您可以使用Pipeline 构造一个“可拟合”对象,该对象表示将原始输入转换为预测输出所需的步骤。在这种情况下,管道由一个 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 函数并将原始文档作为输入。

    【讨论】:

      【解决方案2】:

      我是根据搜索“如何使用保存的模型进行预测?”重定向到这里的。所以只是添加到 YS-L 的答案,最后一步。

      保存模型

      from sklearn.externals import joblib
      joblib.dump(fittedModel, 'name.model')
      

      加载保存的模型并预测

      fittedModel = joblib.load('name.model')
      fittedModel.predict(X_new)  # X_new is unseen example to be predicted
      

      【讨论】:

        【解决方案3】:

        您可以简单地将 clf.predict 与 .apply 和 lambda 一起使用

        datad['Predictions']=datad['InputX'].apply(lambda x: unicode(clf.predict(count_vect.transform([x])))) 
        

        【讨论】:

          猜你喜欢
          • 2018-09-22
          • 2016-11-25
          • 1970-01-01
          • 2018-12-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-09-28
          • 2018-11-22
          相关资源
          最近更新 更多