我正在训练一个模型来检测垃圾邮件/火腿电子邮件,并通过执行以下操作来选择功能:
t = TfidfVectorizer(max_features=num_feature)
t.fit_transform(spam_corpus)
spam_features = t.get_feature_names()
t.fit_transform(ham_corpus)
ham_features = t.get_feature_names()
joblib.dump(t, './output/tfidf.pkl')
return spam_features + ham_features
要素空间同时包含垃圾邮件和垃圾邮件要素。我保存了Tfidf模型,然后将其用于预测这样一个全新的独立电子邮件。但是,在这封新电子邮件中,仅创建了一半的功能(因为我没有添加垃圾邮件和火腿),因此SVM分类器无法预测任何内容。
处理此问题的最佳方法是什么,以使我在受过训练的Tfidf模型和新电子邮件中具有相同数量的功能?
我没有意识到fit_transform完全取代了前一个。我只需要分别保存两者。