QQ登录

只需一步,快速开始

登录 | 立即注册 | 找回密码

主题

帖子

荣誉

新鱼友

Rank: 1

积分
4
查看: 49|回复: 0

多进程fanh返回值处理问题

[复制链接]
最佳答案
0 

尚未签到

JXV 发表于 2017-11-14 22:27:37 490 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
现在在做k_means聚类,但是数据量有点大,有一百多万行,单核运算实在太慢,我想通过并行运算计算每个点和各个中心点的距离,并返回与最近中心点的标签,有个问题是,我返回的标签顺序得按顺序输出出来,不能乱序。


def getLabelFromClosestCentroid(arg):
    dataSetRow = arg[0]
    centroids = arg[1]
    label = centroids[0, -1]  # 首先假设label是与K1相同的
    minDistace = np.linalg.norm(dataSetRow - centroids[0, :-1])  # 计算与K1的距离为最小距离

    for i in range(1, centroids.shape[0]):
        dist = np.linalg.norm(dataSetRow - centroids[i, :-1])
        # 当与另一个中心点的距离小于预设中心点距离时,就修改label
        if dist < minDistace:
            minDistace = dist
            label = centroids[i, -1]
    # print('minDistance:', minDistace)
    return label


def multi_process_updataLabls(dataSet,centroids):
    numPoints, numDim = dataSet.shape
    pool = multiprocessing.Pool()
    args = [dataSet[i, :-1], centroids, dataSet]
    for i in range(0, numPoints):
        pool.apply_async(getLabelFromClosestCentroid, (args,))

我想调用函数返回的标签能一一对应,请问各位大佬有什么好办法?主要就是为了缩短聚类时间
楼层
跳转到指定楼层

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐 上一条 /1 下一条

    移动客户端下载(未启用)
    微信公众号

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备11014136号

Copyright 2018 鱼C论坛 版权所有 All Rights Reserved.

Powered by Discuz! X3.1 Copyright
© 2001-2018 Comsenz Inc.    All Rights Reserved.

小黑屋|手机版|Archiver|鱼C工作室 ( 粤公网安备 44051102000370号 | 粤ICP备11014136号

GMT+8, 2017-11-25 11:58

快速回复 返回顶部 返回列表