【发布时间】:2021-05-11 22:05:02
【问题描述】:
我想使用词袋来训练回归模型。但是,我不想在我的训练集和测试集之间发生信息泄漏。所以,这意味着我需要在训练集上创建一个与我的测试集分开的词向量。我运行了这段代码
def bow (tokens, data):
tokens = tokens.apply(nltk.word_tokenize)
cvec = CountVectorizer(min_df = .01, max_df = .95, ngram_range=(1,2), tokenizer=lambda doc:doc, lowercase=False)
cvec.fit(tokens)
cvec_counts = cvec.transform(tokens)
cvec_counts_bow = cvec_counts.toarray()
vocab = cvec.get_feature_names()
bow_model = pd.DataFrame(cvec_counts_bow, columns=vocab)
return bow_model
X_train = bow(train['clean_text'], train)
X_test = bow(test['clean_text'], test)
vocab = list(X_train.columns)
但我的数据框的形状是 X_train: (300, 730) 和 X_test (35, 1661) 我的测试集中有比我的训练集更多的独特词——因为训练集太小——而且这些词不匹配。 X_train 中有一些词不在 X_test 中,反之亦然。我想从 X_train 创建一个词汇表,然后只保留 X_test 中的列,但这似乎不对。
如何将 X_train 中的词汇表拟合到 X_test 中?
【问题讨论】:
标签: tensorflow keras nlp token vectorization