sklearn 如何使用保存的模型来预测新数据
sklearn how to use saved model to predict new data
我使用 sklearn 训练了一个 SVM 文本分类器,使用 tf-idf(TfidfVectorizer) 来提取特征。
现在我需要保存模型并加载它来预测看不见的文本。我会在另一个文件中加载模型,让我困惑的是如何提取新文本 tf-idf 特征
您需要保存模型和 tfidf 转换器。您可以单独保存它们,也可以创建两者的管道并保存管道(这是首选选项)。
示例:
from sklearn.linear_model import LogisticRegression
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.pipeline import Pipeline
import pickle
Tfidf = TfidfVectorizer()
LR = LogisticRegression()
pipe = Pipeline([("Tfidf", Tfidf), ("LR", LR)])
pipe.fit(X, y)
with open('pipe.pickle', 'wb') as picklefile:
pickle.dump(pipe, picklefile)
然后您可以加载整个管道,predict
将首先应用矢量化器,然后将其传递给模型:
with open('pipe.pickle', 'rb') as picklefile:
saved_pipe = pickle.load(picklefile)
saved_pipe.predict(X_test)
我使用 sklearn 训练了一个 SVM 文本分类器,使用 tf-idf(TfidfVectorizer) 来提取特征。 现在我需要保存模型并加载它来预测看不见的文本。我会在另一个文件中加载模型,让我困惑的是如何提取新文本 tf-idf 特征
您需要保存模型和 tfidf 转换器。您可以单独保存它们,也可以创建两者的管道并保存管道(这是首选选项)。
示例:
from sklearn.linear_model import LogisticRegression
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.pipeline import Pipeline
import pickle
Tfidf = TfidfVectorizer()
LR = LogisticRegression()
pipe = Pipeline([("Tfidf", Tfidf), ("LR", LR)])
pipe.fit(X, y)
with open('pipe.pickle', 'wb') as picklefile:
pickle.dump(pipe, picklefile)
然后您可以加载整个管道,predict
将首先应用矢量化器,然后将其传递给模型:
with open('pipe.pickle', 'rb') as picklefile:
saved_pipe = pickle.load(picklefile)
saved_pipe.predict(X_test)