用于分类的 Python 向量化

标签 python scikit-learn vectorization random-forest

<分区>

我目前正在尝试构建一个包含大约 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!这将使字典远离训练集。

关于用于分类的 Python 向量化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24806383/

相关文章:

python - "Reduce"系列功能

python - 查找列表中项目的长度

python - Linux下GUI设计模式的有效性

python - 如何编辑 .bashrc 以使用 virtualenvwrapper 的 workon 命令

python - svm.sparse.SVC 需要花费大量时间进行训练

python - 优化使用numpy sin、cos、sum 和abs 的Python 代码

python - 如何在 TensorFlow 中获取 tf.summary.FileWriter 的文件名?

python - sklearn preprocessing.scale() 函数,什么时候使用它?

python - 如何在sklearn中为SpectralCluster使用曼哈顿距离

matlab - 在 Matlab 中对一维波形中的脉冲进行计数的最佳方法