中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

網(wǎng)站制作模板下載/公司宣傳軟文

網(wǎng)站制作模板下載,公司宣傳軟文,企業(yè)申請域名,佛山設(shè)計(jì)網(wǎng)站公司K均值聚類方法是一種劃分聚類方法,它是將數(shù)據(jù)分成互不相交的K類。K均值法先指定聚類數(shù),目標(biāo)是使每個(gè)數(shù)據(jù)到數(shù)據(jù)點(diǎn)所屬聚類中心的總距離變異平方和最小,規(guī)定聚類中心時(shí)則是以該類數(shù)據(jù)點(diǎn)的平均值作為聚類中心。 01K均值法原理與步驟 對于有N個(gè)…

K均值聚類方法是一種劃分聚類方法,它是將數(shù)據(jù)分成互不相交的K類。K均值法先指定聚類數(shù),目標(biāo)是使每個(gè)數(shù)據(jù)到數(shù)據(jù)點(diǎn)所屬聚類中心的總距離變異平方和最小,規(guī)定聚類中心時(shí)則是以該類數(shù)據(jù)點(diǎn)的平均值作為聚類中心。

?

01K均值法原理與步驟

對于有N個(gè)數(shù)據(jù)的數(shù)據(jù)集,我們想把它們聚成K類,開始需要指定K個(gè)聚類中心,假設(shè)第i類有ni個(gè)樣本數(shù)據(jù),計(jì)算每個(gè)數(shù)據(jù)點(diǎn)分別到聚類中心的距離平方和,距離這里直接用的歐式距離,還有什么海明距離、街道距離、余弦相似度什么的其實(shí)都可以,這里聚類的話,歐式距離就好。

(1)、所有類別樣本數(shù)等于總樣本數(shù),即每個(gè)類類是互不相同的

K-means算法通俗原理及Python與R語言的分別實(shí)現(xiàn)-圖片1

(2)、每一類(假設(shè)是第i類)中數(shù)據(jù)點(diǎn)到聚類中心距離平方總和di為:

xi表示第i類各點(diǎn)平均值(聚類中心)

K-means算法通俗原理及Python與R語言的分別實(shí)現(xiàn)-圖片2

(3)、K類數(shù)據(jù)點(diǎn)距離之和為:

K-means算法通俗原理及Python與R語言的分別實(shí)現(xiàn)-圖片3

這樣就會(huì)有一個(gè)KN的距離平方和矩陣,每一列(比如第j列)的最小值對應(yīng)的行數(shù)(比如第i行)就表明:第j個(gè)數(shù)據(jù)樣本屬于第i類別。這樣,每個(gè)數(shù)據(jù)就會(huì)分別屬于不同的類別了。

K-means算法通俗原理及Python與R語言的分別實(shí)現(xiàn)-圖片4

比如,表格中紅色部分?jǐn)?shù)據(jù)點(diǎn)x2到第一類的聚類中心距離最小,則x2就屬于第一類。

K均值步驟:

  1. 隨機(jī)選取K個(gè)數(shù)據(jù)點(diǎn)作為(起始)聚類中心;
  2. 按照距離最近原則分配數(shù)據(jù)點(diǎn)到對應(yīng)類;
  3. 計(jì)算每類的數(shù)據(jù)點(diǎn)平均值(新的聚類中心);
  4. 計(jì)算數(shù)據(jù)點(diǎn)到聚類中心總距離;
  5. 如果與上一次相比總距離下降,聚類中心替換;
  6. 直到總距離不再下降或者達(dá)到指定計(jì)算次數(shù)。

其實(shí),這個(gè)過程相對比較簡單,給我一組聚類中心,總能根據(jù)到聚類中心距離最小原則生成一組聚類方案,然后計(jì)算各個(gè)類別到聚類中心距離總和是否下降,如果距離總和下降,就繼續(xù)計(jì)算每類數(shù)據(jù)點(diǎn)平均值(新的聚類中心),對應(yīng)的聚類方案要好(還是那句話:給我一組聚類中心,總能根據(jù)到聚類中心距離最小原則生成一組聚類方案),然后不斷計(jì)算,直到距離總和下降幅度很小(幾乎收斂),或者達(dá)到指定計(jì)算次數(shù)。

K-means算法缺點(diǎn)主要是:

  1. 對異常值敏感;
  2. 需要提前確定k值;
  3. 結(jié)果不穩(wěn)定;

02 K均值算法Python的實(shí)現(xiàn)

思路:

  1. 首先用random模塊產(chǎn)生隨機(jī)聚類中心;
  2. 用numpy包簡化運(yùn)算;
  3. 寫了一個(gè)函數(shù)實(shí)現(xiàn)一個(gè)中心對應(yīng)一種聚類方案;
  4. 不斷迭代;
  5. matplotlib包結(jié)果可視化。

代碼如下:

  1. import numpy as np
  2. import random as rd
  3. import matplotlib.pyplot as plt
  4. import math
  5. #數(shù)據(jù)
  6. dat = np.array([[14,22,15,20,30,18,32,13,23,20,21,22,23,24,35,18],
  7. [15,28,18,30,35,20,30,15,25,23,24,25,26,27,30,16]])
  8. print(dat)
  9. #聚類中心#
  10. n = len(dat[0])
  11. N = len(dat)n
  12. k = 3
  13. #-------隨機(jī)產(chǎn)生-----#
  14. center = rd.sample(range(n),k)
  15. center = np.array([dat.T[i] for i in center])
  16. print(‘初始聚類中心為:’)
  17. print(center)
  18. print(‘-----------------------’)
  19. ?
  20. #計(jì)算聚類中心
  21. def cent(x):
  22. return(sum(x)/len(x))
  23. ?
  24. #計(jì)算各點(diǎn)到聚類中心的距離之和
  25. def dist(x):
  26. #聚類中心
  27. m0 = cent(x)
  28. dis = sum(sum((x-m0)2))
  29. return(dis)
  30. ?
  31. #距離
  32. def f(center):
  33. c0 = []
  34. c1 = []
  35. c2 = []
  36. D = np.arange(k*n).reshape(k,n)
  37. d0 = center[0]-dat.T
  38. d1 = center[1]-dat.T
  39. d2 = center[2]-dat.T
  40. d = np.array([d0,d1,d2])
  41. for i in range(k):
  42. D[i] = sum((d[i]2).T)
  43. for i in range(n):
  44. ind = D.T[i].argmin()
  45. if(ind 0):
  46. c0.append(i)#分配類別
  47. else:
  48. if(ind 1):
  49. c1.append(i)
  50. else:
  51. c2.append(i)
  52. C0 = np.array([dat.T[i] for i in c0])
  53. C1 = np.array([dat.T[i] for i in c1])
  54. C2 = np.array([dat.T[i] for i in c2])
  55. C = [C0,C1,C2]
  56. print([c0,c1,c2])
  57. s = 0
  58. for i in C:
  59. s+=dist(i)
  60. return(s,C)
  61. ?
  62. n_max = 50
  63. #初始距離和
  64. print(‘第1次計(jì)算!’)
  65. dd,C = f(center)
  66. print(‘距離和為’+str(dd))
  67. print(‘第2次計(jì)算!’)
  68. center = [cent(i) for i in C]
  69. Dd,C = f(center)
  70. print(‘距離和為’+str(Dd))
  71. K = 3
  72. ?
  73. while(K<n_max):
  74. #兩次差值很小并且計(jì)算了一定次數(shù)
  75. if(math.sqrt(dd-Dd)<1 and K>20):
  76. break;
  77. print(‘第’+str(K)+‘次計(jì)算!’)
  78. dd = Dd
  79. print(‘距離和為’+str(dd))
  80. #當(dāng)前聚類中心
  81. center = [cent(i) for i in C]
  82. Dd,C = f(center)
  83. K+=1
  84. ?
  85. ?
  86. #—聚類結(jié)果可視化部分—#
  87. ?
  88. j = 0
  89. for i in C:
  90. if(j 0):
  91. plt.plot(i.T[0],i.T[1],‘ro’)
  92. if(j 1):
  93. plt.plot(i.T[0],i.T[1],‘b+’)
  94. if(j == 2):
  95. plt.plot(i.T[0],i.T[1],‘g*’)
  96. j+=1
  97. ?
  98. plt.show()

?

(1):聚類成功的例子:

對于不合適的初始隨機(jī)聚類中心,一般而言不會(huì)失敗,成功次數(shù)較多。

K-means算法通俗原理及Python與R語言的分別實(shí)現(xiàn)-圖片5

可以看出,其實(shí)第五次就收斂了,共分成了三類。它們的標(biāo)簽序號(hào)為:

第一類:[1, 3, 8, 9, 10, 11, 12, 13];

第二類:[4, 6, 14];

第三類:[0, 2, 5, 7, 15]

聚類圖:

K-means算法通俗原理及Python與R語言的分別實(shí)現(xiàn)-圖片6

聚類結(jié)果與實(shí)際情況一致

(2):聚類失敗的例子:

有時(shí)候可能會(huì)失敗,運(yùn)行實(shí)驗(yàn)了三次出現(xiàn)了一次敗筆,迭代過程如下:

K-means算法通俗原理及Python與R語言的分別實(shí)現(xiàn)-圖片7

散點(diǎn)圖:

K-means算法通俗原理及Python與R語言的分別實(shí)現(xiàn)-圖片8

聚類失敗圖

顯然,由于初始點(diǎn)的隨機(jī)選取不當(dāng),導(dǎo)致聚類嚴(yán)重失真!這聚類效果明顯就很差,表明隨機(jī)產(chǎn)生的初始聚類中心應(yīng)該不合適,最后不管怎么迭代,都不可能生成合適的聚類了,這與k-means算法的原理確實(shí)可以解釋的。這就是k-means的最顯著的缺點(diǎn)!

03K均值算法的R語言實(shí)現(xiàn)

用的還是上面程序一樣的數(shù)據(jù),R語言聚類就很方便,直接調(diào)用kmeans(data,聚類數(shù))就能方便完成:

  
  1. rm(list = ls())
  2. path <- ‘C:\Users\26015\Desktop\clu.txt’
  3. dat <- read.csv(path,header = FALSE)
  4. dat <- t(dat)
  5. kc <- kmeans(dat,3)
  6. summary(kc)
  7. kc

查看聚類結(jié)果:

  
  1. K-means clustering with 3 clusters of sizes 8, 3, 5
  2. ?
  3. Cluster means:
  4. [,1] [,2]
  5. 1 21.87500 26.00000
  6. 2 32.33333 31.66667
  7. 3 15.60000 16.80000

聚成3類,分別有8,3,5個(gè)數(shù)據(jù)

Clustering vector:

V1? V2? V3? V4? V5? V6? V7? V8? V9

3?? 1?? 3??1?? 2?? 3?? 2?? 3??1

V10 V11 V12 V13 V14 V15 V16

1?? 1?? 1?? 1?? 1?? 2?? 3

第一類:2,4,9,10,11,12,13,14

第二類:1,3,6,8,16;

第三類:5,7,15

由于Python下標(biāo)是從“0”開始,所以兩種方法聚類結(jié)果實(shí)際上是一樣

http://www.risenshineclean.com/news/576.html

相關(guān)文章:

  • 小型企業(yè)網(wǎng)站建設(shè)報(bào)告/北京seo排名服務(wù)
  • 網(wǎng)站服務(wù)器在那里找/優(yōu)秀軟文范例200字
  • 做兼職什么網(wǎng)站/企業(yè)網(wǎng)絡(luò)營銷策略案例
  • 如何做網(wǎng)站窗口/關(guān)鍵詞整站優(yōu)化
  • 建筑培訓(xùn)網(wǎng)站有哪些/重慶seo培訓(xùn)
  • 產(chǎn)品展示型的網(wǎng)站功能有哪些/網(wǎng)上推廣專員是什么意思
  • 豬八戒網(wǎng)站 怎么做兼職/品牌策劃公司介紹
  • 樂平市網(wǎng)站建設(shè)/網(wǎng)絡(luò)營銷ppt案例
  • 福田做商城網(wǎng)站建設(shè)哪家公司靠譜/百度推廣是怎么做的
  • 外國客戶網(wǎng)站/營銷策劃公司取名大全
  • 網(wǎng)站后綴是nl是哪個(gè)國家/想要導(dǎo)航推廣網(wǎng)頁怎么做
  • php一臺(tái)電腦做網(wǎng)站/百度人工
  • 學(xué)做網(wǎng)站買什么樣的書/發(fā)布新聞稿
  • 網(wǎng)站建設(shè)公司建設(shè)/市場調(diào)研分析報(bào)告
  • 網(wǎng)站地圖 seo/武漢百度關(guān)鍵詞推廣
  • 我的世界有什么做的視頻網(wǎng)站/家庭優(yōu)化大師免費(fèi)下載
  • app界面生成器/seo1搬到哪里去了
  • 怎么做刷會(huì)員的網(wǎng)站/seo排名點(diǎn)擊器曝光行者seo
  • 用cn作網(wǎng)站行么/企業(yè)關(guān)鍵詞大全
  • 公司網(wǎng)站制作內(nèi)容/2022年今天新聞聯(lián)播
  • 海淘返利網(wǎng)站怎么做/上海網(wǎng)絡(luò)營銷上海網(wǎng)絡(luò)推廣
  • 國內(nèi)出名網(wǎng)站建設(shè)設(shè)計(jì)公司/qq推廣軟件
  • 亞馬遜雨林破壞現(xiàn)狀/文章優(yōu)化關(guān)鍵詞排名
  • 靈璧零度網(wǎng)站建設(shè)/國際新聞最新
  • wordpress 上傳文件中文亂碼/西安搜索引擎優(yōu)化
  • 中企動(dòng)力青島分公司/寧波seo關(guān)鍵詞如何優(yōu)化
  • 中國建設(shè)銀行人力資源網(wǎng)站/營銷互聯(lián)網(wǎng)推廣公司
  • 做站群的網(wǎng)站要備案嗎/電商網(wǎng)站平臺(tái)搭建
  • 微信商城與網(wǎng)站一體/谷歌瀏覽器下載手機(jī)版中文
  • 微信推送在哪個(gè)網(wǎng)站做/百度seo排名優(yōu)化技巧分享