深入解析K-means聚類:從原理到調優實戰

一、聚類分析與K-means的核心價值

????????在無監督學習領域,聚類分析是探索數據內在結構的核心技術。?K-means算法因其簡潔高效成為最廣泛使用的聚類方法,在客戶分群、圖像壓縮、生物信息學等領域應用廣泛。其核心目標是將數據集劃分為K個簇,實現“簇內相似度高,簇間差異顯著”的理想狀態。接下來我們將深入解析這一經典算法的原理、實現與優化技巧。


二、K-means原理與數學本質

?算法工作流程?

K-means通過迭代優化實現聚類,其核心步驟為:

  1. ?初始化中心?:隨機選擇K個數據點作為初始質心(可優化)
  2. ?分配樣本?:計算每個點到質心的距離,分配到最近簇
  3. ?更新質心?:重新計算各簇樣本均值作為新質心
  4. ?迭代收斂?:重復2-3步直至質心變化小于閾值或達到最大迭代次數

?數學表示?

目標函數(SSE)是算法優化的核心:

其中:

  • Ci??表示第i個簇
  • μi??是該簇質心
  • ∥x?μi?∥?為歐氏距離

?關鍵點?:K-means本質是通過迭代最小化SSE實現聚類。算法復雜度為O(n?K?t),其中n為樣本數,K為簇數,t為迭代次數。

?距離度量選擇?

雖然默認使用歐氏距離?但可根據數據類型替換為:

  • 曼哈頓距離:(適用于高維稀疏數據)
  • 余弦相似度:?(適用于文本向量)

三、API參數深度解析(sklearn.cluster.KMeans)

掌握API參數是模型效果的關鍵保障:

?參數?默認值說明調優建議
n_clusters8聚類簇數K通過肘部法則確定
init'k-means++'初始化方法優先選'k-means++'避免局部最優
n_init10不同初始化次數增大值提升穩定性,但增加計算量
max_iter300最大迭代次數高維數據建議增加到500
tol1e-4收斂閾值值越小精度越高但可能不收斂
algorithm'auto'算法實現大數據選'elkan'提升速度

?關鍵參數實踐?:

# 優化后的參數設置示例
from sklearn.cluster import KMeans
model = KMeans(n_clusters=5, init='k-means++', n_init=20, max_iter=500,tol=1e-5,random_state=42
)

?屬性解析?

  • labels_:樣本所屬簇標簽
  • cluster_centers_:質心坐標矩陣
  • inertia_:當前SSE值(核心評估指標)

四、實戰案例:酒聚類

import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
from sklearn import metricsbeer = pd.read_table("data.txt",sep=' ',encoding='utf8',engine='python')
X=beer.iloc[:,1:]from sklearn.cluster import KMeans
scores=[]
K=[2,3,4,5,6,7,8,9]
for i in K:model = KMeans(n_clusters=i)model.fit(X)labels = model.labels_                          #獲取分類之后的標簽score = metrics.silhouette_score(X,labels)      #輪廓系數,可用來評價模型性能scores.append(score)best_K=K[np.argmax(scores)]
print('最佳K值',best_K)modle=KMeans(n_clusters=best_K)
modle.fit(X)
labels = modle.labels_
print('輪廓系數:',metrics.silhouette_score(X,labels))fig = plt.figure(figsize=(10, 8))
fig = plt.axes(projection="3d")# 繪制散點圖(顏色映射和大小漸變)
scatter = fig.scatter(xs=X.iloc[:,0],ys=X.iloc[:,1],zs=X.iloc[:,2],c=labels,  # 按聚類結果著色# cmap='viridis',  # 使用色圖映射alpha=0.8,s=50)# 設置標簽和標題
fig.set(xlabel='X Axis', ylabel='Y Axis', zlabel='Z Axis',title='3D Scatter Plot with Color Gradient')
plt.show()

五、模型評價:超越準確率的評估體系

無監督學習需依賴內部評價指標:

?指標?公式評估目標范圍應用場景
?輪廓系數?max(a,b)b?a?樣本歸屬合理性[-1, 1]非凸簇評估
s_score = silhouette_score(X, labels)  # 越接近1越好
print(f"輪廓系數: {s_score:.2f}")

?六?K值選擇策略

from sklearn.cluster import KMeans
scores=[]
K=[2,3,4,5,6,7,8,9]
for i in K:model = KMeans(n_clusters=i)model.fit(X)labels = model.labels_                          #獲取分類之后的標簽score = metrics.silhouette_score(X,labels)      #輪廓系數,可用來評價模型性能scores.append(score)best_K=K[np.argmax(scores)]
print('最佳K值',best_K)

給出幾個K值,循環帶入模型,保存輪廓系數,最后根據最優的輪廓系數找出最佳K值。

?????????????????????????????????????????????????????????????????

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/92536.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/92536.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/92536.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

數據結構基礎:哈希表、排序和查找算法

目錄 一、哈希表 1.哈希算法 2.哈希碰撞 3.哈希表 4.哈希表相關操作 哈希表插入 哈希表遍歷 元素查找 哈希表銷毀 二、排序算法 1. 排序算法對比 2. 排序算法實現 冒泡排序 選擇排序 插入排序 希爾排序 快速排序 三、查找算法 1. 查找算法對比 2. 查找算法實…

Linux內核參數調優:為K8s節點優化網絡性能

在高并發微服務環境中,網絡性能往往成為K8s集群的瓶頸。本文將深入探討如何通過精細化的Linux內核參數調優,讓你的K8s節點網絡性能提升30%以上。引言:為什么網絡調優如此重要?作為一名在生產環境中維護過數千節點K8s集群的運維工程…

全家桶” 戰略如何重塑智能服務標準?無憂秘書 AI + 智腦 + 數字人協同模式的底層架構解析

在數字化浪潮的推動下,企業對智能化服務的需求日益增長。然而,單一的技術或產品往往難以滿足復雜場景下的多樣化需求。近年來,“全家桶”戰略成為科技行業的一大趨勢,通過整合多維度技術與服務,為企業提供全方位的支持…

前端后端之爭?JavaScript和Java的特性與應用場景解析

一、名字相似,本質迥異 1.1 歷史淵源與命名背景 在編程世界中,很少有兩種語言像JavaScript和Java這樣,僅僅因為名字的相似性就引發了無數初學者的困惑。然而,這種相似性純屬巧合——或者說是一種營銷策略的產物。 JavaScript誕…

【文獻分享】Machine learning models提供數據和代碼

數據輸入及前期信息:ChronoGauge 需要一個基因表達矩陣,其中包括來自多個時間進程 RNA-測序實驗的觀測數據,用于訓練,并且需要有關每個基因在連續光照(LL)條件下經過光暗(LD)周期調整…

PHP MySQL Delete 操作詳解

PHP MySQL Delete 操作詳解 引言 在Web開發中,數據庫是存儲和管理數據的重要工具。PHP作為一種流行的服務器端腳本語言,與MySQL數據庫結合使用可以高效地處理數據。本文將詳細介紹PHP中如何使用DELETE語句刪除MySQL數據庫中的數據。 什么是DELETE語句&am…

計組-大/小端存放區別

在計算機系統中,大端存放(Big-Endian)和小端存放(Little-Endian)是兩種不同的多字節數據存儲方式,主要區別在于字節在內存中的排列順序。理解它們對底層編程(如網絡通信、二進制文件處理、硬件交…

線程同步相關知識

文章目錄一、線程同步的核心目標二、線程安全的判定條件三、同步方式一:synchronized 關鍵字1. 同步代碼塊2. 同步方法四、鎖的釋放與不釋放場景1. 自動釋放鎖的場景2. 不會釋放鎖的場景五、同步方式二:ReentrantLock(顯式鎖)1. 核…

Armoury Crate無法通過BIOS卸載

設備:天選4 Armoury Crate窗口反復彈出影響使用體驗,但無法通過BIOS關閉該怎么辦?本文以天選4為例提供解決方案。 Step1:進入服務支持官網 Armoury Crate-服務支持 下滑點擊”查看更多” 下載安裝卸載工具 得到Armoury_Crate_Un…

如何將視頻轉為GIF格式,3大視頻轉為GIF工具

在社交媒體和即時通訊盛行的當下,GIF 動圖以其獨特的魅力備受青睞。它能夠生動地捕捉視頻中的精彩瞬間,憑借體積小巧、無需復雜加載且可循環播放的特性,成為了人們在網絡交流中表達情感、分享趣事的得力工具。無論是制作詼諧幽默的表情包&…

開發避坑指南(22):Vue3響應式編程中this綁定機制與解決方案

錯誤信息 TypeError: Cannot read properties of undefined (reading find) TypeError: r.vnode.el.querySelector is not a function報錯背景 vue2項目升級到vue3后,原來的代碼報錯。 報錯代碼computed: {/** 計算列的顯示與隱藏*/columnVisible() {return functio…

AI學習筆記三十五:實時傳輸視頻

若該文為原創文章,轉載請注明原文出處。 目的是實現視頻的傳輸,只是個demo. 程序分為兩部分,視頻接收端和視頻發送端。 一、視頻接收端流程分析 主要流程: 初始化配置: 設置UDP端口(5001)和緩…

【ArcGIS】分區統計中出現Null值且Nodata無法忽略的問題以及shp擦除(erase)的使用——以NDVI去水體為例

需求 已有某地NDVI柵格、行政區shp以及水體shp,計算每個行政區的平均NDVI 問題 1.如果不剔除水體 負值NDVI會把平均值拉低 且水體NDVI并不全為負 需要通過shp剔除,Mask掩膜是提取水體本身而不是剩余部分 2.使用分區統計工具(Zonal statis…

Linux中的內核同步源碼相關總結

什么是內核同步Linux 內核同步是指內核中用于解決并發執行單元(如進程、中斷、內核線程等)對共享資源(如全局數據結構、硬件寄存器、鏈表等)的競爭訪問的一系列機制和技術。其核心目標是保證多個并發單元在操作共享資源時的數據一…

WORD接受修訂,并修改修訂后文字的顏色

在 Word 中,接受修訂之后默認會采用正文的默認字體格式,不會保留修訂時設置的顏色,比如“插入內容是藍色字體”的設置會被清除。 如果你想要做到:? 接受所有修訂后仍然讓“原插入的文字”變為藍色字體保留下來你只能通過一些手動…

行業速覽:中國新能源汽車市場格局與關鍵趨勢

在全球汽車產業邁向綠色、低碳、智能化的變革浪潮中,新能源汽車已成為各國爭奪的戰略高地。中國,作為全球最大的汽車市場和新能源汽車制造國,正以強大的市場規模、完整的產業鏈體系以及快速提升的技術創新能力,在這場變革中不斷加…

【51單片機2個按鍵控制流水燈轉向】2022-10-25

緣由51單片機按鍵流水燈-嵌入式-CSDN問答 #include "REG52.h" sbit k1P3^0; sbit k2P3^1; void main() {unsigned char l0,xd0,ys10,ys20,z0;P1l;while(1){if(k10&&xd0){z0;while(k10);}if(k20&&xd0){z1;while(k20);}if(ys10)if(ys20){if(z0)if(l0)…

flutter開發(一)flutter命令行工具

安裝 Linux下面的flutter安裝比較簡單,在flutter 中文戰 上下載一個最新穩定的版本,解壓到系統上就行了。 我下載的是Linux下的3.32.7版。 解壓之后,flutter目錄里會有bin、dev等目錄,把bin目錄加到系統的PATH環境變量里&#…

OpenCV 入門實戰:從環境配置到圖像 / 視頻處理

OpenCV 是計算機視覺領域最常用的開源庫之一,它提供了豐富的圖像和視頻處理功能。本文將從環境配置開始,帶大家一步步解析基礎操作代碼,快速入門 OpenCV 的使用。 一、環境配置 在開始之前,我們需要先搭建好 OpenCV 的運行環境。…

2.2.1 飾面板材和陶瓷的特性和應用

1、飾面石材1)天然花崗巖2)天然大理石3)人造石(1)人造石按主要原材料分包括人造石實體面材、人造石英石和人造石崗石等產品。2、建筑衛生陶瓷建筑衛生陶瓷包括建筑陶瓷和衛生陶瓷兩大類。建筑陶瓷包括陶瓷磚、建筑琉璃…