Scikit中的合并CountVectorizer学习特征提取



我是scikit学习的新手,需要一些我一直在做的事情的帮助。

我试图使用多项式朴素贝叶斯分类法对两种类型的文档(例如,类型A和类型B)进行分类。为了获得这些文档的术语计数,我在sklearn.feature_extract.text.中使用了CountVectorizer类

问题是,这两种类型的文档需要不同的正则表达式来提取令牌(CountVectorization的token_pattern参数)。我似乎找不到一种方法来先加载类型a的培训文件,然后再加载类型B的培训文件。有可能做一些类似的事情吗:

vecA = CountVectorizer(token_pattern="[a-zA-Z]+", ...)
vecA.fit(list_of_type_A_document_content)
...
vecB = CountVectorizer(token_pattern="[a-zA-Z0-9]+", ...)
vecB.fit(list_of_type_B_document_content)
...
# Somehow merge the two vectorizers results and get the final sparse matrix

您可以尝试:

vecA = CountVectorizer(token_pattern="[a-zA-Z]+", ...)
vecA.fit_transform(list_of_type_A_document_content)
vecB = CountVectorizer(token_pattern="[a-zA-Z0-9]+", ...)
vecB.fit_transform(list_of_type_B_document_content)
combined_features = FeatureUnion([('CountVectorizer', vectA),('CountVect', vectB)])
combined_features.transform(test_data)

你可以从中阅读更多关于FeatureUnion的信息http://scikit-learn.org/stable/modules/generated/sklearn.pipeline.FeatureUnion.html

可从版本0.13.1 获得

您可以尝试:

vecA = CountVectorizer(token_pattern="[a-zA-Z]+", ...)
vecA.fit_transform(list_of_type_A_document_content)
vecB = CountVectorizer(token_pattern="[a-zA-Z0-9]+", ...)
vecB.fit_transform(list_of_type_B_document_content)

你可以合并稀疏矩阵:

from scipy.sparse import csr_matrix, hstack
combined_features= hstack([vecA, vecB], 'csr')

相关内容

  • 没有找到相关文章