私はTfIdfVectorizerとMultinomialNBを使用して自分のモデルを訓練し、ピクルファイルに保存しました。tfidfvectorizer保存されたクラシファイアを予測する
他のファイルの分類子を使用して、目に見えないデータを予測しようとしているので、分類子の機能の数が私の機能の数と同じではない現在のコーパス。
これは私が予測しようとしているコードです。関数do_vectorizeは、トレーニングで使用される関数とまったく同じです。
def do_vectorize(data, stop_words=[], tokenizer_fn=tokenize):
vectorizer = TfidfVectorizer(stop_words=stop_words, tokenizer=tokenizer_fn)
X = vectorizer.fit_transform(data)
return X, vectorizer
# Vectorizing the unseen documents
matrix, vectorizer = do_vectorize(corpus, stop_words=stop_words)
# Predicting on the trained model
clf = pickle.load(open('../data/classifier_0.5_function.pkl', 'rb'))
predictions = clf.predict(matrix)
は、しかし、私はこれは私もテストするために、トレーニングから自分の語彙を保存しなければならないことを意味
ValueError: Expected input with 65264 features, got 472546 instead
機能の数が異なっているというエラーを受け取りますか?トレーニングに存在しない用語がある場合はどうなりますか?
私はscikit-learnのパイプラインを同じベクタライザとクラシファイアと両方で同じパラメータで使用しようとしました。しかし、それは1時間から6時間以上に遅すぎたので、私は手動で行うことを好む。