首页 > 解决方案 > 使用 TfIdfVectorizer 生成测试数据

问题描述

我已将数据分成训练和测试部分。我的数据表有一个“文本”列。考虑一下我还有十列代表数字特征。我已经使用 TfidfVectorizer 和训练数据来生成术语矩阵,并将其与数值特征相结合来创建训练数据框。

tfidf_vectorizer=TfidfVectorizer(use_idf=True, max_features=5000, max_df=0.95)
tfidf_vectorizer_train = tfidf_vectorizer.fit_transform(X_train['text'].values)
df1_tfidf_train = pd.DataFrame(tfidf_vectorizer_train.toarray(), columns=tfidf_vectorizer.get_feature_names())
df2_train = df_main_ques.iloc[train_index][traffic_metrics]#to collect numerical features
df_combined_train = pd.concat([df1_tfidf_train, df2_train], axis=1)

要计算测试部分的 tf-idf 分数,我需要重用训练数据集。我不确定如何生成测试数据部分。相关帖子:

[1]将 tfidf 附加到 pandas 数据框:仅讨论创建训练数据集部分

[2] TfidfVectorizer 如何计算测试数据的分数:讨论了测试数据部分,但不清楚如何生成包含术语和数值特征的测试数据帧。

标签: pythonscikit-learntfidfvectorizer

解决方案


您可以使用transform经过训练的矢量化器的方法在已经训练过的矢量化器上转换您的测试数据。您可以重用经过训练的矢量化器来生成测试数据集 TF-IDF 分数

tfidf_vectorizer_test = tfidf_vectorizer.transform(X_test['text'].values)

推荐阅读