欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python聚類算法之基本K均值實(shí)例詳解

 更新時(shí)間:2015年11月20日 10:44:19   作者:intergret  
這篇文章主要介紹了Python聚類算法之基本K均值運(yùn)算技巧,結(jié)合實(shí)例形式較為詳細(xì)的分析了基本K均值的原理與相關(guān)實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下

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

基本K均值 :選擇 K 個(gè)初始質(zhì)心,其中 K 是用戶指定的參數(shù),即所期望的簇的個(gè)數(shù)。每次循環(huán)中,每個(gè)點(diǎn)被指派到最近的質(zhì)心,指派到同一個(gè)質(zhì)心的點(diǎn)集構(gòu)成一個(gè)。然后,根據(jù)指派到簇的點(diǎn),更新每個(gè)簇的質(zhì)心。重復(fù)指派和更新操作,直到質(zhì)心不發(fā)生明顯的變化。

# scoding=utf-8
import pylab as pl
points = [[int(eachpoint.split("#")[0]), int(eachpoint.split("#")[1])] for eachpoint in open("points","r")]
# 指定三個(gè)初始質(zhì)心
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')
# 記錄每次迭代后每個(gè)簇的質(zhì)心的更新軌跡
center1 = [currentCenter1]; center2 = [currentCenter2]; center3 = [currentCenter3]
# 三個(gè)簇
group1 = []; group2 = []; group3 = []
for runtime in range(50):
  group1 = []; group2 = []; group3 = []
  for eachpoint in points:
    # 計(jì)算每個(gè)點(diǎn)到三個(gè)質(zhì)心的距離
    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)
    # 將該點(diǎn)指派到離它最近的質(zhì)心所在的簇
    mindis = min(distance1,distance2,distance3)
    if(mindis == distance1):
      group1.append(eachpoint)
    elif(mindis == distance2):
      group2.append(eachpoint)
    else:
      group3.append(eachpoint)
  # 指派完所有的點(diǎn)后,更新每個(gè)簇的質(zhì)心
  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)]
  # 記錄該次對(duì)質(zhì)心的更新
  center1.append(currentCenter1)
  center2.append(currentCenter2)
  center3.append(currentCenter3)
# 打印所有的點(diǎn),用顏色標(biāo)識(shí)該點(diǎn)所屬的簇
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')
# 打印每個(gè)簇的質(zhì)心的更新軌跡
for center in [center1,center2,center3]:
  pl.plot([eachcenter[0] for eachcenter in center], [eachcenter[1] for eachcenter in center],'k')
pl.show()

運(yùn)行效果截圖如下:

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • 一文詳解如何使用Python從字符串中提取數(shù)字

    一文詳解如何使用Python從字符串中提取數(shù)字

    這篇文章主要給大家介紹了關(guān)于如何使用Python從字符串中提取數(shù)字的相關(guān)資料,我們?cè)谶M(jìn)行數(shù)據(jù)處理時(shí)候,可能想要提取字符串中的數(shù)字進(jìn)行分析,需要的朋友可以參考下
    2023-11-11
  • Python的Tornado框架實(shí)現(xiàn)異步非阻塞訪問(wèn)數(shù)據(jù)庫(kù)的示例

    Python的Tornado框架實(shí)現(xiàn)異步非阻塞訪問(wèn)數(shù)據(jù)庫(kù)的示例

    Tornado框架的異步非阻塞特性是其最大的亮點(diǎn),這里我們將立足于基礎(chǔ)來(lái)介紹一種簡(jiǎn)單的Python的Tornado框架實(shí)現(xiàn)異步非阻塞訪問(wèn)數(shù)據(jù)庫(kù)的示例:
    2016-06-06
  • Python實(shí)現(xiàn)讀取txt文件并轉(zhuǎn)換為excel的方法示例

    Python實(shí)現(xiàn)讀取txt文件并轉(zhuǎn)換為excel的方法示例

    這篇文章主要介紹了Python實(shí)現(xiàn)讀取txt文件并轉(zhuǎn)換為excel的方法,涉及Python針對(duì)txt文件的讀取及Excel格式文件生成相關(guān)操作技巧,需要的朋友可以參考下
    2018-05-05
  • python實(shí)現(xiàn)SOM算法

    python實(shí)現(xiàn)SOM算法

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)SOM算法,聚類算法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • 基于Python的EasyGUI學(xué)習(xí)實(shí)踐

    基于Python的EasyGUI學(xué)習(xí)實(shí)踐

    這篇文章主要介紹了基于Python的EasyGUI學(xué)習(xí)實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • 淺談Python線程的同步互斥與死鎖

    淺談Python線程的同步互斥與死鎖

    這篇文章主要介紹了淺談Python線程的同步互斥與死鎖,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)實(shí)現(xiàn)對(duì)不原生支持比較操作的對(duì)象排序算法示例

    Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)實(shí)現(xiàn)對(duì)不原生支持比較操作的對(duì)象排序算法示例

    這篇文章主要介紹了Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)實(shí)現(xiàn)對(duì)不原生支持比較操作的對(duì)象排序算法,結(jié)合實(shí)例形式分析了Python針對(duì)類實(shí)例進(jìn)行排序相關(guān)操作技巧,需要的朋友可以參考下
    2018-03-03
  • 基于python實(shí)現(xiàn)銀行管理系統(tǒng)

    基于python實(shí)現(xiàn)銀行管理系統(tǒng)

    這篇文章主要介紹了基于python實(shí)現(xiàn)銀行管理系統(tǒng),文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python項(xiàng)目制作的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-04-04
  • python學(xué)習(xí)之whl文件解釋與安裝詳解

    python學(xué)習(xí)之whl文件解釋與安裝詳解

    whl格式本質(zhì)上是一個(gè)壓縮包,里面包含了py文件,以及經(jīng)過(guò)編譯的pyd文件,下面這篇文章主要給大家介紹了關(guān)于python學(xué)習(xí)之whl文件解釋與安裝的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • 詳解Python中for循環(huán)的定義迭代方法

    詳解Python中for循環(huán)的定義迭代方法

    for循環(huán)用于迭代序列(即列表、元組、字典、集合或字符串)。for 語(yǔ)句的寫法如從對(duì)象開始按順序給變量賦值,元素個(gè)數(shù)重復(fù)這個(gè)過(guò)程。對(duì)象可以是列表(數(shù)組)、元組、字符串等。本文將詳細(xì)講解Python中for定義迭代方法詳解,需要的可以了解一下
    2022-04-04

最新評(píng)論