在 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())
将原始df
和count_vect_df
按列连接。
pd.concat([df, count_vect_df], axis=1)
【讨论】:
我喜欢你第二行中的这些补充——我会将它们整合到我一直在从事的一些项目中!以上是关于在 pandas 数据框中插入 sklearn CountVectorizer 的结果的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Pandas 数据框中的特定位置插入一列? (更改熊猫数据框中的列顺序)
Python pandas:在groupby数据框中插入缺失日期、时间序列的行