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

Sau*_*ood 8 python machine-learning pandas scikit-learn

我有一堆14784文本文档,我试图进行矢量化,所以我可以运行一些分析.我CountVectorizer在sklearn中使用了将文档转换为特征向量.我这样做是通过调用:

vectorizer = CountVectorizer
features = vectorizer.fit_transform(examples)
Run Code Online (Sandbox Code Playgroud)

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

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

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

Nic*_*eli 19

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

X = vect.fit_transform(docs) 
Run Code Online (Sandbox Code Playgroud)

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

count_vect_df = pd.DataFrame(X.todense(), columns=vect.get_feature_names())
Run Code Online (Sandbox Code Playgroud)

连接原始df和列count_vect_df.

pd.concat([df, count_vect_df], axis=1)
Run Code Online (Sandbox Code Playgroud)


Tch*_*hke -1

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

import pandas as pd    
features_df = pd.DataFrame(features)
combined_df = pd.concat([df, features_df], axis=1)
Run Code Online (Sandbox Code Playgroud)

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