鱼C论坛

 找回密码
 立即注册
查看: 404|回复: 0

多进程fanh返回值处理问题

[复制链接]
最佳答案
0 
发表于 2017-11-14 22:27:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

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

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,))

我想调用函数返回的标签能一一对应,请问各位大佬有什么好办法?主要就是为了缩短聚类时间
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2018-9-26 23:48

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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