K-means通過迭代優(yōu)化簇中心實(shí)現(xiàn)聚類:1.隨機(jī)初始化K個(gè)質(zhì)心;2.將樣本分配至最近簇;3.更新質(zhì)心為簇均值;4.判斷收斂,否則重復(fù)2-3步。
K-means 是一種常用的無(wú)監(jiān)督聚類算法,用于將數(shù)據(jù)劃分為 K 個(gè)簇。其核心思想是通過迭代優(yōu)化簇中心,使每個(gè)樣本到所屬簇中心的距離平方和最小。以下是 Python 中實(shí)現(xiàn) K-means 算法的具體計(jì)算步驟。
隨機(jī)選擇 K 個(gè)樣本點(diǎn)作為初始的簇中心(質(zhì)心)。這一步對(duì)最終聚類結(jié)果有一定影響,因此在實(shí)際應(yīng)用中可采用 K-means++ 方法優(yōu)化初始化過程,以提高收斂速度和聚類質(zhì)量。
對(duì)于每一個(gè)樣本,計(jì)算它與 K 個(gè)簇中心之間的歐氏距離,將其分配給距離最近的簇。公式如下:
假設(shè)樣本為 xi,第 j 個(gè)簇中心為 cj,則距離為:
立即學(xué)習(xí)“Python免費(fèi)學(xué)習(xí)筆記(深入)”;
d(xi, cj) = ||xi - cj||2
將 xi 歸入使該距離最小的簇。
重新計(jì)算每個(gè)簇的質(zhì)心,即取該簇中所有樣本的均值作為新的中心點(diǎn):
檢查算法是否滿足停止條件,常見的包括:
如果不滿足,則返回第 2 步繼續(xù)迭代;否則結(jié)束算法。
基本上就這些。整個(gè)過程簡(jiǎn)單高效,適合處理大規(guī)模數(shù)值型數(shù)據(jù)。在 Python 中可通過 scikit-learn 快速調(diào)用,也可手動(dòng)實(shí)現(xiàn)以加深理解。
以上就是Python K-means算法的計(jì)算步驟的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!
每個(gè)人都需要一臺(tái)速度更快、更穩(wěn)定的 PC。隨著時(shí)間的推移,垃圾文件、舊注冊(cè)表數(shù)據(jù)和不必要的后臺(tái)進(jìn)程會(huì)占用資源并降低性能。幸運(yùn)的是,許多工具可以讓 Windows 保持平穩(wěn)運(yùn)行。
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號(hào)
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)