import numpy as np
import pandas as pd
# 找出最优簇选择(初始)
def initial_value(n, k):
centroids = []
for i in range(k):
lst = []
for j in range(n):
minJ = min(data[:, j])
maxJ = max(data[:, j])
rangeJ = float(maxJ - minJ)
res = minJ + rangeJ * np.random.rand()
lst.append(res)
centroids.append(lst)
return centroids
# 算每个的距离,,取最小距离的索引
def distance(data, centroids):
res = []
for i in data:
lst = []
for j in centroids:
d = np.sqrt(((i-np.array(j))**2).sum())
lst.append(d)
res.append(lst.index(min(lst)))
return res
# 更新簇中心
def update(res, K):
center = []
for k in range(K):
pf = [data[i] for i,j in enumerate(res) if j == k]
fin = np.array(pf).mean(axis=0)
center.append(fin)
return center
def main(k, data, iters):
m, n = np.shape(data)
centroids = initial_value(n, k) # 初始点
for i in range(iters):
res = distance(data, centroids) # 最小距离索引
new_centroids = update(res, k) # 更新簇
if (np.array(new_centroids) == centroids).all(): # 若更新前后中心相同,跳出循环
break
centroids = new_centroids
return res
if __name__ == '__main__':
data = pd.read_csv('data.csv').values
k, iters = 2, 100
m, n = np.shape(data)
result = main(k, data, iters)
print(result)
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
内容概要: KMeans算法是一种常用的无监督学习算法,用于将数据集分成K个簇或类别。并行和分布式的KMeans算法针对大规模数据集提供了高效的实现方式。并行化可以加速算法的计算过程,而分布式实现则可以处理更大规模的数据集。 这里主要用于算法在并行与分布式的基础应用。 使用场景:适用于处理大规模数据集的KMeans聚类任务,例如大型数据仓库中的数据分析、大规模网络数据的聚类分析等。 目标:提供并行和分布式实现的KMeans算法,以加速大规模数据集的聚类过程,并能够有效利用集群计算资源。 其他说明: 并行化和分布式实现通常涉及到使用多线程、多进程、分布式计算框架(如Apache Spark)等技术。 算法设计需要考虑数据的分片和通信开销等问题,以保证并行和分布式实现的效率和可扩展性。 对于大规模数据集,分布式KMeans算法通常能够提供更好的性能和可伸缩性,但也需要考虑到分布式系统的一致性和容错性等方面的挑战。
资源推荐
资源详情
资源评论
收起资源包目录
code.zip (4个子文件)
code
并行版.py 1KB
分布式版.py 2KB
for循环版.py 2KB
numpy版.py 1KB
共 4 条
- 1
资源评论
cskcejkbrejjk
- 粉丝: 1
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功