在pandas数据框中插入sklearn CountVectorizer的结果

时间:2016-11-02 00:46:23

标签: python pandas machine-learning scikit-learn

我有一堆14784个文本文档,我试图进行矢量化,所以我可以运行一些分析。我在sklearn中使用了CountVectorizer来将文档转换为特征向量。我通过致电:

来做到这一点
vectorizer = CountVectorizer
features = vectorizer.fit_transform(examples)

其中examples是所有文本文档的数组

现在,我正在尝试使用其他功能。为此,我将这些功能存储在pandas数据帧中。目前,我的pandas数据框(未插入文本功能)的形状为(14784, 5)。我的特征向量的形状是(14784, 21343)

将矢量化特征插入pandas数据帧的好方法是什么?

2 个答案:

答案 0 :(得分:17)

从原始文档中学习词汇词典后返回术语 - 文档矩阵。

X = vect.fit_transform(docs) 

将稀疏csr矩阵转换为密集格式,并允许列包含从要素整数索引到要素名称的数组映射。

count_vect_df = pd.DataFrame(X.todense(), columns=vect.get_feature_names())

将原始dfcount_vect_df列连接起来。

pd.concat([df, count_vect_df], axis=1)

答案 1 :(得分:-1)

如果你的基础数据框是df,你需要做的就是:

import pandas as pd    
features_df = pd.DataFrame(features)
combined_df = pd.concat([df, features_df], axis=1)

我建议使用一些选项来减少功能的数量,这可能很有用,具体取决于您正在进行的分析类型。例如,如果您还没有,我建议您考虑删除停用词和词干。此外,您可以设置max_features,例如features = vectorizer.fit_transform(examples, max_features = 1000)以限制功能的数量。