python - 使用 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 如何计算测试数据的分数:讨论了测试数据部分,但不清楚如何生成包含术语和数值特征的测试数据帧。
解决方案
您可以使用transform
经过训练的矢量化器的方法在已经训练过的矢量化器上转换您的测试数据。您可以重用经过训练的矢量化器来生成测试数据集 TF-IDF 分数
tfidf_vectorizer_test = tfidf_vectorizer.transform(X_test['text'].values)
推荐阅读
- matplotlib - 如何在底图背景上绘制不透明的饼图?
- firebase - 修复“[Firebase] 您的 Cloud Firestore 数据库的规则不安全”
- spacy - 解析配置覆盖时出错 - `nlp.tokenizer` 部分不存在
- c# - 为什么 DictionaryValue 在 ASP.NET Core 的 Serilog 中转换为 ScalarValue
- json - 使用 Swift 获取 JSON 中的第一个元素
- python - 将元素放入 3D 网格的最快方法
- python - 如何在 python pandas 中重塑数据框
- docker - Docker - 在执行容器时挂载卷
- apache-camel - 无法在 apache camel 中处理正文中的空值
- python - 使用python将cassandra sstable从gcloud复制到s3