K-Means算法的并行和分布式写法

本文介绍了K-Means算法的思想原理,包括初始中心点选择、相似度计算和聚类过程。接着详细阐述了如何使用Numpy、多进程并行以及Dask分布式实现K-Means算法,并通过结果对比展示了并行和分布式的优势。在速度方面,多进程并行实现最快,Numpy次之,而分布式表现较慢。
摘要由CSDN通过智能技术生成

  前段时间学习了并行与分布式技术,为了写了篇关于KMeans算法的并行和分布式的编程写法,上网找了挺久,没想到网上并没有很多资料,那今天就来说一下我是怎么写的吧。

首先来讲一下K-Means的思想原理吧!

K-Means算法思想原理

   K-means算法是根据给定 n n n个对象的数据集,构建 K K K个划分聚类方法,每个划分聚类称为簇。在这K个簇中,每个簇至少有一个数据对象,且每个数据对象有且只可属于一个簇。簇中的数据还有一个必须遵守的法则:同一个簇内的数据对象相似度高,不同簇的数据对象相似度低。这里的相似度将采用距离来衡量。

   根据下图,可以看到K-means算法包括初始中心点的选择,对剩余数据对象遍历,进行相似度(距离)的计算,将相似度最高的数据点划分至该簇,重新计算中心点,再次相似度计算,直至代价函数达到最小值,即数据中心不再移动为止。
kmeans图片

算法步骤总结

step1: 随机初始化 K K K个聚类中心点,循环Z次, ε = 1 0 − 5 \varepsilon=10^{-5} ε=105

step2: 遍历其余样本点计算与各中心点的距离,选择相似度最高的聚为一类。

\step3: 计算代价函数 J J J,若 ∣ J ∣ ≤ ε |J|\leq\varepsilon Jε或所有的观测值不再被分配或 k k k大于指定循环次数则退出循环, k = k + 1 k = k + 1 k=k+1

step4: 重新计算新聚类中心点,返回step2。

接下来就是代码实现啦!

首先来看看只是用Numpy是怎么写的吧!

使用Numpy实现

为了方便理解,附上流程图如下:
numpy
Numpy的实现其实就是把所有数据丢进一个矩阵,然后算算算就好了😀

import numpy as np
import pandas as pd

# 找出最优簇选择(初始)
def initial_value(n, k):
    minJ = np.min(data, axis=0
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值