一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python聚類算法之基本K均值實例詳解

Python聚類算法之基本K均值實例詳解

2020-08-03 11:39intergret Python

這篇文章主要介紹了Python聚類算法之基本K均值運算技巧,結合實例形式較為詳細的分析了基本K均值的原理與相關實現技巧,具有一定參考借鑒價值,需要的朋友可以參考下

本文實例講述了Python聚類算法之基本K均值運算技巧。分享給大家供大家參考,具體如下:

基本K均值 :選擇 K 個初始質心,其中 K 是用戶指定的參數,即所期望的簇的個數。每次循環中,每個點被指派到最近的質心,指派到同一個質心的點集構成一個。然后,根據指派到簇的點,更新每個簇的質心。重復指派和更新操作,直到質心不發生明顯的變化。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# scoding=utf-8
import pylab as pl
points = [[int(eachpoint.split("#")[0]), int(eachpoint.split("#")[1])] for eachpoint in open("points","r")]
# 指定三個初始質心
currentCenter1 = [20,190]; currentCenter2 = [120,90]; currentCenter3 = [170,140]
pl.plot([currentCenter1[0]], [currentCenter1[1]],'ok')
pl.plot([currentCenter2[0]], [currentCenter2[1]],'ok')
pl.plot([currentCenter3[0]], [currentCenter3[1]],'ok')
# 記錄每次迭代后每個簇的質心的更新軌跡
center1 = [currentCenter1]; center2 = [currentCenter2]; center3 = [currentCenter3]
# 三個簇
group1 = []; group2 = []; group3 = []
for runtime in range(50):
  group1 = []; group2 = []; group3 = []
  for eachpoint in points:
    # 計算每個點到三個質心的距離
    distance1 = pow(abs(eachpoint[0]-currentCenter1[0]),2) + pow(abs(eachpoint[1]-currentCenter1[1]),2)
    distance2 = pow(abs(eachpoint[0]-currentCenter2[0]),2) + pow(abs(eachpoint[1]-currentCenter2[1]),2)
    distance3 = pow(abs(eachpoint[0]-currentCenter3[0]),2) + pow(abs(eachpoint[1]-currentCenter3[1]),2)
    # 將該點指派到離它最近的質心所在的簇
    mindis = min(distance1,distance2,distance3)
    if(mindis == distance1):
      group1.append(eachpoint)
    elif(mindis == distance2):
      group2.append(eachpoint)
    else:
      group3.append(eachpoint)
  # 指派完所有的點后,更新每個簇的質心
  currentCenter1 = [sum([eachpoint[0] for eachpoint in group1])/len(group1),sum([eachpoint[1] for eachpoint in group1])/len(group1)]
  currentCenter2 = [sum([eachpoint[0] for eachpoint in group2])/len(group2),sum([eachpoint[1] for eachpoint in group2])/len(group2)]
  currentCenter3 = [sum([eachpoint[0] for eachpoint in group3])/len(group3),sum([eachpoint[1] for eachpoint in group3])/len(group3)]
  # 記錄該次對質心的更新
  center1.append(currentCenter1)
  center2.append(currentCenter2)
  center3.append(currentCenter3)
# 打印所有的點,用顏色標識該點所屬的簇
pl.plot([eachpoint[0] for eachpoint in group1], [eachpoint[1] for eachpoint in group1], 'or')
pl.plot([eachpoint[0] for eachpoint in group2], [eachpoint[1] for eachpoint in group2], 'oy')
pl.plot([eachpoint[0] for eachpoint in group3], [eachpoint[1] for eachpoint in group3], 'og')
# 打印每個簇的質心的更新軌跡
for center in [center1,center2,center3]:
  pl.plot([eachcenter[0] for eachcenter in center], [eachcenter[1] for eachcenter in center],'k')
pl.show()

運行效果截圖如下:

Python聚類算法之基本K均值實例詳解

希望本文所述對大家Python程序設計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美兽皇video | 亚洲精品一 | 日韩理论片 | 亚洲精品一区二区久久久久 | 无码欧美喷潮福利XXXX | 色戒 完整版 | 日韩欧美国产一区 | 福利社在线免费观看 | 女教师巨大乳孔中文字幕免费 | 天天操精品视频 | 精品视频免费 | 欧美国产高清 | 午夜久| 精品视频在线播放 | 亚洲精品乱码久久久久久蜜桃图片 | 九九精品99久久久香蕉 | 天天射夜夜爽 | 能播放18xxx18女同 | 国产精品久久久久毛片真精品 | 火影小南被爆羞羞网站 | 国产精品免费 | 男人摸女人下面 | 1024免费观看完整版在线播放 | 国产在线视频第一页 | 欧美久久一区二区三区 | 色偷偷伊人 | 日本高清va不卡视频在线观看 | 欧乱色国产精品兔费视频 | 欧美精品一区二区在线观看 | 91制片厂制作传媒破解版免费 | 岛国在线播放v片免费 | 久久综合久综合久久鬼色 | 狠狠做五月深爱婷婷天天综合 | 国产精品夜色视频一级区 | 免费抽搐一进一出印度 | 成人丁香婷婷 | 免费α片| 99热6这里只有精品 99欧美精品 | 韩国女主播在线大尺无遮挡 | 久久国产36精品色熟妇 | 亚洲香蕉综合在人在线视看 |