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

Posted

技术标签:

【中文标题】在 pandas 数据框中插入 sklearn CountVectorizer 的结果【英文标题】:Insert result of sklearn CountVectorizer in a pandas dataframe 【发布时间】:2017-03-15 05:24:48 【问题描述】:

我有一堆 14784 个文本文档,我正在尝试对其进行矢量化,以便进行一些分析。我在 sklearn 中使用了CountVectorizer,将文档转换为特征向量。我通过调用来做到这一点:

vectorizer = CountVectorizer
features = vectorizer.fit_transform(examples)

其中示例是所有文本文档的数组

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

将矢量化特征插入熊猫数据框的好方法是什么?

【问题讨论】:

【参考方案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) 来限制特征数量。

【讨论】:

那么,在您的第二行中,您是否正在创建矢量化特征的数据框?如果是这样,那对我不起作用。我收到以下错误:PandasError: DataFrame constructor not properly called! 我使用过:features_df = pd.DataFrame(res) 其中 res 是 CountVectorizer fit_transform 方法的结果【参考方案2】:

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

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)

【讨论】:

我喜欢你第二行中的这些补充——我会将它们整合到我一直在从事的一些项目中!

以上是关于在 pandas 数据框中插入 sklearn CountVectorizer 的结果的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Pandas 数据框中的特定位置插入一列? (更改熊猫数据框中的列顺序)

Python pandas:在groupby数据框中插入缺失日期、时间序列的行

根据日期列在pandas Dataframe中插入行

根据 pandas 数据框中的条件将 value_counts 与 groupby 函数一起使用并插入新列

如何在 sklearn 中一次在多个列上应用预处理方法

Pandas 如何从 JSON 索引列表并将其放入数据框中?