【发布时间】:2019-12-24 21:38:29
【问题描述】:
我正在尝试在一组上训练 NLP 模型,保存词汇和模型,然后将其应用于单独的验证集。代码正在运行,但我如何确定它按预期工作?
换句话说,我从训练集中保存了一个 vocab 和 nmodel,然后我用保存的词汇创建了 TFidfVectorizer,最后我在新的验证笔记上使用了“fit_transform”。
这是否仅应用经过训练的词汇和模型?它不是从验证集中“学习”任何新东西吗?
训练,然后加载词汇和模型并应用于验证集:
train_vector = tfidf_vectorizer.fit_transform(training_notes)
pickle.dump(tfidf_vectorizer.vocabulary_, open('./vocab/' + '_vocab.pkl', 'wb'))
X_train = train_vector.toarray()
y_train = np.array(train_data['ref_std'])
model.fit(X_train, y_train)
dump(model, './model/' + '.joblib')
train_prediction = model.predict(X_train)
vocab = pickle.load(open('./vocab/' + '_vocab.pkl', 'rb'))
tfidf_vectorizer = TfidfVectorizer(vocabulary = vocab)
valid_vector = tfidf_vectorizer.fit_transform(validation_notes)
X_valid = valid_vector.toarray()
y_valid = np.array(validation_data['ref_std'])
model = load('./model/' + '.joblib')
valid_prediction = model.predict(X_valid)```
【问题讨论】:
-
你描述的方式,它绝对IS从新的验证集学习,事实上你告诉它忽略从训练集。不要在验证数据上使用
fit_transform,而应该只使用.transform(),因为fit_步骤会重新训练模型
标签: python nlp tfidfvectorizer