python - 用于多标签分类问题的 tf-idf 矢量化器
问题描述
我有一个针对大量文本的多标签分类项目。我在文本(train_v['doc_text'])上使用了 tf-Idf 矢量化器,如下所示:
tfidf_transformer = TfidfTransformer()
X_counts = count_vect.fit_transform(train_v['doc_text'])
X_tfidf = tfidf_transformer.fit_transform(X_counts)
x_train_tfidf, x_test_tfidf, y_train_tfidf, y_test_tfidf = train_test_split(X_tfidf_r, label_vs, test_size=0.33, random_state=9000)
sgd = SGDClassifier(loss='hinge', penalty='l2', random_state=42, max_iter=25, tol=None, fit_intercept=True, alpha = 0.000009 )
现在,我需要在一组特征(test_v['doc_text'])上使用相同的矢量化器来预测标签。但是,当我使用以下
X_counts_test = count_vect.fit_transform(test_v['doc_text'])
X_tfidf_test = tfidf_transformer.fit_transform(X_counts_test)
predictions_test = clf.predict(X_tfidf_test)
我收到一条错误消息
ValueError: X has 388894 features per sample; expecting 330204
关于如何处理这个问题的任何想法?
谢谢。
解决方案
问题是你在fit_transform
这里使用它来TfidfTransform()
适应test data
然后转换它。
而是使用transform
方法就可以了。
此外,您应该使用TfidfVectorizer
在我看来,代码应该是:
from sklearn.feature_extraction.text import TfidfVectorizer
tfidf_transformer = TfidfVectorizer()
# X_counts = count_vect.fit_transform(train_v['doc_text'])
X_tfidf = tfidf_transformer.fit_transform(train_v['doc_text'])
x_train_tfidf, x_test_tfidf, y_train_tfidf, y_test_tfidf = train_test_split(X_tfidf, label_vs, test_size=0.33, random_state=9000)
sgd = SGDClassifier(loss='hinge', penalty='l2', random_state=42, max_iter=25, tol=None, fit_intercept=True, alpha = 0.000009 )
# X_counts_test = count_vect.fit_transform(test_v['doc_text'])
X_tfidf_test = tfidf_transformer.transform(test_v['doc_text'])
predictions_test = clf.predict(X_tfidf_test)
另外,您为什么要使用count_vect
我认为它在这里没有可用性,并且在train_test_split
您使用X_tfidf_r
的任何地方都没有提到。
推荐阅读
- c - CLion 文档提示不再提供完整的参考资料
- python - UnicodeDecodeError - 从一个目录连接多个 csv 的问题
- c# - 实体框架核心 - 多租户应用程序
- spring - 如何使用 Spring Boot (Kotlin) 执行 ApplicationRunner
- svg - SVG SMIL 路径动画在 Safari 中不起作用
- python - Python文件写入在docker内部不起作用
- sass - 如何在 Docusaurus v2 中使用 Sass?
- wpf - 将工具提示添加到 VB.Net 中启用/禁用的图片控制?
- css - 如何从 ttf / woff 文件中仅导出一个字符以避免加载不必要的文件大小?
- node.js - MongoDB将字段添加到数组内的对象