作家
登录

如何为时间序列数据优化K-均值聚类速度?

作者: 来源: 2017-11-13 14:02:07 阅读 我要评论

  •    for n in range(num_iter): 
  •        assignments={} 
  •        for ind, i in enumerate(data): 
  •            min_dist = float('inf'
  •            closest_clust = None 
  •            for c_ind, j in enumerate(centroids): 
  •                dist = euclid_dist(i, j) 
  •                if dist < min_dist: 
  •                   min_dist = dist 
  •                   closest_clust = c_ind 
  •            if closest_clust in assignments: 
  •                assignments[closest_clust].append(ind) 
  •            else
  •                assignments[closest_clust]=[] 
  •                assignments[closest_clust].append(ind) 
  •        for key in assignments: 
  •            clust_sum = 0 
  •            for k in assignments[key]: 
  •                clust_sum = clust_sum + data[k] 
  •            centroids[key] = [m / len(assignments[key]) for m in clust_sum] 
  •    return centroids 
  • 到今朝为止,我们所有的实现都是单线程的,所以我们决定摸索 k-means++ 算法的并行化部分。因为我们在应用 Jupyter Notebook,所以我们选择应用用于并行计算的 ipyparallel 来治理并行性(ipyparallel 地址:https://github.com/ipython/ipyparallel)。应用 ipyparallel,我们不必担心┞符个办事器分叉,但我们须要解决一些特别问题。比如说,我们必须指导我们的工作器节点加载 NumPy。

    1. t1 = time.time() 
    2. centroids = k_means(signals, 100, 100) 
    3. t2 = time.time() 
    4. print("Took {} seconds".format(t2 - t1)) 
    5.  
    6. Took 1138.8745470046997 seconds 

    向量化的实现

    应用 NumPy 的一大年夜优势是向量化运算。(如不雅你不太懂得向量化运算,请参考这个链接:http://www.scipy-lectures.org/intro/numpy/operations.html)


      推荐阅读

      Git的4个阶段的撤销更改命令分析

    Tech Neo技巧沙龙 | 11月25号,九州云/ZStack与您一路商量云时代收集界线治理实践 固然 git 出生距今已有 12 年之久,网上各类关于 git 的介绍文┞仿数不堪数,然则依然有很多人(包含我本>>>详细阅读


    本文标题:如何为时间序列数据优化K-均值聚类速度?

    地址:http://www.17bianji.com/lsqh/38787.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)