【发布时间】:2019-04-27 08:35:30
【问题描述】:
我有以下带有数据的数据框:
index field1 field2 field3
1079 COMPUTER long text.... 3
field1 是一个类别,field2 是描述,field3 只是 field1 的整数表示。
我正在使用以下代码通过 sklearn 学习 field2 到类别的映射:
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfTransformer
from sklearn.naive_bayes import MultinomialNB
X_train, X_test, y_train, y_test = train_test_split(df['Text'], df['category_id'], random_state = 0)
count_vect = CountVectorizer()
X_train_counts = count_vect.fit_transform(X_train)
tfidf_transformer = TfidfTransformer()
X_train_tfidf = tfidf_transformer.fit_transform(X_train_counts)
clf = MultinomialNB().fit(X_train_tfidf, y_train)
训练完模型后,我可以用它来预测一个类别,而且效果很好。但是,我想使用测试集评估模型。
X_test_counts = count_vect.fit_transform(X_test)
X_test_tfidf = tfidf_transformer.fit_transform(X_test_counts)
clf.score(X_test_tfidf, y_test)
它会抛出以下错误:
ValueError: dimension mismatch
有没有办法测试模型并使用此类数据集获得分数或准确度?
更新:向测试集添加类似的转换。
【问题讨论】:
-
注意:对文本数据进行类似的转换并不意味着fit_tranform,而只是transform。 ;) 这就是你得到那个错误的原因。请参阅下面的答案。
标签: python scikit-learn nlp