蝙蝠岛资源网 Design By www.hbtsch.com
k-means 聚类算法思想先随机选择k个聚类中心,把集合里的元素与最近的聚类中心聚为一类,得到一次聚类,再把每一个类的均值作为新的聚类中心重新聚类,迭代n次得到最终结果分步解析
一、初始化聚类中心
首先随机选择集合里的一个元素作为第一个聚类中心放入容器,选择距离第一个聚类中心最远的一个元素作为第二个聚类中心放入容器,第三、四、、、N个同理,为了优化可以选择距离开方做为评判标准
二、迭代聚类
依次把集合里的元素与距离最近的聚类中心分为一类,放到对应该聚类中心的新的容器,一次聚类完成后求出新容器里个类的均值,对该类对应的聚类中心进行更新,再次进行聚类操作,迭代n次得到理想的结果
三、可视化展示
利用 python 第三方库中的可视化工具 matplotlib.pyplot 对聚类后的元素显示(散点图),方便查看结果
python代码实现
import numpy as np import matplotlib.pyplot as plt # 两点距离 def distance(e1, e2): return np.sqrt((e1[0]-e2[0])**2+(e1[1]-e2[1])**2) # 集合中心 def means(arr): return np.array([np.mean([e[0] for e in arr]), np.mean([e[1] for e in arr])]) # arr中距离a最远的元素,用于初始化聚类中心 def farthest(k_arr, arr): f = [0, 0] max_d = 0 for e in arr: d = 0 for i in range(k_arr.__len__()): d = d + np.sqrt(distance(k_arr[i], e)) if d > max_d: max_d = d f = e return f # arr中距离a最近的元素,用于聚类 def closest(a, arr): c = arr[1] min_d = distance(a, arr[1]) arr = arr[1:] for e in arr: d = distance(a, e) if d < min_d: min_d = d c = e return c if __name__=="__main__": ## 生成二维随机坐标(如果有数据集就更好) arr = np.random.randint(100, size=(100, 1, 2))[:, 0, :] ## 初始化聚类中心和聚类容器 m = 5 r = np.random.randint(arr.__len__() - 1) k_arr = np.array([arr[r]]) cla_arr = [[]] for i in range(m-1): k = farthest(k_arr, arr) k_arr = np.concatenate([k_arr, np.array([k])]) cla_arr.append([]) ## 迭代聚类 n = 20 cla_temp = cla_arr for i in range(n): # 迭代n次 for e in arr: # 把集合里每一个元素聚到最近的类 ki = 0 # 假定距离第一个中心最近 min_d = distance(e, k_arr[ki]) for j in range(1, k_arr.__len__()): if distance(e, k_arr[j]) < min_d: # 找到更近的聚类中心 min_d = distance(e, k_arr[j]) ki = j cla_temp[ki].append(e) # 迭代更新聚类中心 for k in range(k_arr.__len__()): if n - 1 == i: break k_arr[k] = means(cla_temp[k]) cla_temp[k] = [] ## 可视化展示 col = ['HotPink', 'Aqua', 'Chartreuse', 'yellow', 'LightSalmon'] for i in range(m): plt.scatter(k_arr[i][0], k_arr[i][1], linewidth=10, color=col[i]) plt.scatter([e[0] for e in cla_temp[i]], [e[1] for e in cla_temp[i]], color=col[i]) plt.show()
结果展示
总结
蝙蝠岛资源网 Design By www.hbtsch.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
蝙蝠岛资源网 Design By www.hbtsch.com
暂无k-means 聚类算法与Python实现代码的评论...
更新日志
2024年12月23日
2024年12月23日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]