我目前正在尝试构建一个包含大约 80 个类别的文本分类模型(文档分类)。当我使用随机森林构建和训练模型时(将文本矢量化为 TF-IDF 矩阵后),该模型运行良好。然而,当我引入新数据时,我用来构建 RF 的相同单词不一定与训练集相同。这是一个问题,因为我的训练集中的特征数量与测试集中的特征数量不同(因此训练集的维度小于测试集的维度)。
####### Convert bag of words to TFIDF matrix
tfidf_vectorizer = TfidfVectorizer()
tfidf_matrix = tfidf_vectorizer.fit_transform(data)
print tfidf_matrix.shape
## number of features = 421
####### Train Random Forest Model
clf = RandomForestClassifier(max_depth=None,min_samples_split=1, random_state=1,n_jobs=-1)
####### k-fold cross validation
scores = cross_val_score(clf, tfidf_matrix.toarray(),labels,cv=7,n_jobs=-1)
print scores.mean()
### this is the new data matrix for unseen data
new_tfidf = tfidf_vectorizer.fit_transform(new_X)
### number of features = 619
clf.fit(tfidf_matrix.toarray(),labels)
clf.predict(new_tfidf.toarray())
我该如何创建一个用于分类的工作 RF 模型,该模型将包含训练中未见过的新功能(单词)?
不要打电话fit_transform
只对看不见的数据transform
!这将使字典远离训练集。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)