首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB +K均值聚类

MongoDB +K均值聚类
EN

Stack Overflow用户
提问于 2016-05-29 01:04:48
回答 2查看 1.1K关注 0票数 3

我使用MongoDB作为数据存储,并希望将文档的“集群”配置存储在单独的集合中。

所以在一个集合中,我会有我的原始对象集,而在我的第二个集合中,它会有

代码语言:javascript
复制
kMeansCollection: {
     1: [mongoObjectCopy1], [mongoObjectCopy2]...
     2: [mongoObjectCopy3], [mongoObjectCopy4]... 
   }

我在这里遵循文本聚类的K-方法,http://tech.swamps.io/recipe-text-clustering-using-nltk-and-scikit-learn/,但是我很难思考如何将输出绑定到MongoDB中。

一个例子(取自链接):

代码语言:javascript
复制
if __name__ == "__main__":
    tags = collection.find({}, {'tag_data': 1, '_id': 0})
    clusters = cluster_texts(tags, 5) #algo runs here with 5 clusters
    pprint(dict(clusters))

var“tag”是运行algo所需的输入。它必须以数组的形式出现,但是当前标记返回一个对象数组(因此我必须从查询中提取文本值)。

然而,在神奇地聚类了我的集合5种方式之后,我如何才能将它们与它们各自来自mongo的对象条目结合起来呢?

我只从对象的一个属性中输入特定的文本内容。

非常感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-29 01:29:39

您需要有一些文档的标识符。在查询中包含_id字段可能是个好主意,这样您就有了一个唯一的文档标识符。然后,您可以创建idstag_data的并行列表。

代码语言:javascript
复制
docs = collection.find({}, {'tag_data': 1, '_id': 1})
ids = [doc['_id'] for doc in docs]
tags = [doc['tag_data'] for doc in docs]

然后调用标记数据上的集群函数。

代码语言:javascript
复制
clusters = cluster_text(tags)

然后用zip将结果与ids一起返回。

代码语言:javascript
复制
doc_clusters = zip(ids, clusters)

从这里开始,您已经构建了(_id, cluster)的元组,这样就可以更新mongo文档上的集群标签。

票数 3
EN

Stack Overflow用户

发布于 2016-05-29 06:53:06

这样做的有效方法是使用聚合框架使用服务器端操作创建"_id“和”标记数据“列表。这还减少了通过线路发送的数据量,以及用于在客户端解码文档的时间和内存。

您需要对文档进行$group,并使用$push累加器操作符返回_id列表和tag-data列表。当然,aggregate()方法允许访问聚合管道。

代码语言:javascript
复制
cursor = collection.aggregate([{
    '$group': {
        '_id': None, 
        'ids': {'$push': '$_id'}, 
        'tags': {'$push': '$tag-data'}
    }
}])

然后使用.next()方法在CommandCursor上检索数据,因为我们按None分组,因此游标包含一个元素。

代码语言:javascript
复制
data = cursor.next()

在此之后,只需调用您的函数并将结果zip

代码语言:javascript
复制
clusters = cluster_text(data['tags'])
doc_clusters = zip(data['ids'], clusters)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37505192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档