日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

聚类算法(1):K-Means算法

發布時間:2025/3/21 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 聚类算法(1):K-Means算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ? ? 聚類分析,簡單的說,就是對數據分群,它以相似性為基礎,相同類中的樣本比不同類中的本更具相似性。在商業應用中,聚類通常用來劃分用戶群,然后分別加以研究。另外,它還可以挖掘數據中潛在的模式,基于此改進業務流程或設計新產品等。常見的聚類算法有k- Means算法、系統聚類算法,下面將依次介紹。

目錄

?1. K-Means算法

(1)用于衡量好的標準

(2)K- Means實現的基本步驟

?2. 代碼實現

(1)R語言

(2)Python實現


?1. K-Means算法

? ? ? ? K- Means算法是一種基于劃分的經典聚類算法,對于給定的含有N條記錄的數據集,算法將把數據集分成k組(k<N),使得每一分組至少包含一條數據記錄,每條記錄屬于且僅屬于一個分組。算法首先會給出一個隨機初始的分組,再通過反復迭代改變分組,使每一次改進的分組比上一次好。

(1)用于衡量好的標準

? ? ? ?同一分組中的記錄越近越好,而不同分組中的記錄越遠越好,通常使用歐氏距離作為相異性度量。

(2)K- Means實現的基本步驟

  • ① 從數據中隨機抽取K個點作為初始聚類的K個中心,分別代表K個聚類
  • ② 計算數據中所有的點到這K個中心點的距離,通常是歐氏距離
  • ③ 將每個點歸屬到離其最近的聚類里,生成K個聚類
  • ④ 重新計算每類的中心點,即計算每類中所有點的幾何中心(即平均值)
  • ⑤ 如果滿足終止條件,算法將結束;否則,進入第②步。

? ? 終止條件通常有如下三種:

  • ① 聚類的中心點不再移動
  • ② 聚類的中心點移動的大小在給定的閥值范圍內
  • ③ 迭次次數達到上限

?2. 代碼實現

(1)R語言

? ? ? ? R語言中,使用kmeans()函數來實現聚類,其定義及參數定義如下:

? ? ? ? ??

? ? ? ? ???

? ? ?使用K-Means算法對AirPassagers的年度標準曲線進行聚類,旨在發現乘客數據的年度變化模式,代碼如下:?

#重構數據 ap.data<-t(mapply(function(i){AirPassengers[(12*(i-1)+1):(i*12)]},1:12)) # t()轉置 # mapply、apply之后原始數據的行列會互換,因此需要將其t轉置回來#標準化曲線 ap.data.std<-t(apply(ap.data,1,function(x){(x-min(x))/(max(x)-min(x))})) #使用kmeans函數進行聚類,假定分成兩類 kOut<-kmeans(ap.data.std,centers=2,nstart=20,iter.max=200) #聚類統計情況如下 table(kOut$cluster) # 1 2 分類1有8個,分類2有4個 # 8 4 # kOut$cluster 2 2 2 1 2 1 1 1 1 1 1 1#設置類標簽 ap.data.std<-cbind(ap.data.std,kOut$cluster) #畫出曲線圖 plot(1:12,1:12,col='white',ylim=c(0,1),xlab="年份",ylab="標準化值") for(i in 1:nrow(ap.data.std)) {lines(1:12,ap.data.std[i,1:12],col=ap.data.std[i,13]+2) } legend(1,1,c("類1","類2"),lty=1,col=c("blue","green "))

AirPassengers 1949-1960 12年數據
? ? ? ? ?Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
1949 112 118 132 129 121 135 148 148 136 119 104 118
1950 115 126 141 135 125 149 170 170 158 133 114 140
1951 145 150 178 163 172 178 199 199 184 162 146 166
1952 171 180 193 181 183 218 230 242 209 191 172 194
1953 196 196 236 235 229 243 264 272 237 211 180 201
1954 204 188 235 227 234 264 302 293 259 229 203 229
1955 242 233 267 269 270 315 364 347 312 274 237 278
1956 284 277 317 313 318 374 413 405 355 306 271 306
1957 315 301 356 348 355 422 465 467 404 347 305 336
1958 340 318 362 348 363 435 491 505 404 359 310 337
1959 360 342 406 396 420 472 548 559 463 407 362 405
1960 417 391 419 461 472 535 622 606 508 461 390 432

? ? ? ? 效果如圖所示,12條年度曲線被分成了兩類,藍色線表示類1,綠色線表示類2,可以到,各類里面曲線彼此接近,而類間的差異較大。細致觀察,可以看出,乘客數量在6、7、8及10月份比較穩定,這或許與季節比較相關,具體如何還需進一步考察。

?? ? ? ? ? ? ? ? ? ?

(2)Python實現

總結

以上是生活随笔為你收集整理的聚类算法(1):K-Means算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。