将sklearn CountVectorizer矩阵转换为字典列表

时间:2017-10-13 08:03:34

标签: python numpy scikit-learn

我使用excludes ="META-INF/**/*"创建了一个矩阵,看起来像

CountVectorizer

其中每列映射到要素名称

[[1, 2, 1....],
 [0, 4, 0,...],
 [0, 0, 7....]]

我想做什么

将矩阵行转换为表单

的字典列表
['sweet', 'pretty', 'bad'....]

这基本上是[{'sweet': 1, 'pretty': 2, 'bad': 1 ..} , {'sweet': 0, 'pretty': 4, 'bad': 0 ..} , {'sweet': 0, 'pretty': 0, 'bad': 7 ..}] inverse_transform的{​​{1}}函数会做的,但由于我没有从字典中创建矩阵,我不认为我可以使用它,因为我收到此错误< / p>

  

&#39; DictVectorizer&#39;对象没有属性&#39; feature_names _&#39;

我如何实现这一目标? NumPy是否提供内置函数将数组转换为字典列表,我可以将每列映射到给定键?

1 个答案:

答案 0 :(得分:1)

您正在寻找的功能是get_feature_names
不确定是否有一种内置的方式来实现你想要的东西,但它可以通过一个简单的地图轻松实现

from sklearn.feature_extraction.text import CountVectorizer
cv = CountVectorizer() 

#`data` is an array of strings

tdata = cv.fit_transform(data) 

ft = cv.get_feature_names() 

#create a dictionary with feature names as keys and row elements as values

result = list(map(lambda row:dict(zip(ft,row)),tdata.toarray()))

编辑:内存保存解决方案

import pandas as pd

df = pd.SparseDataFrame(tdata, columns=ft)