国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語(yǔ)言編程技術(shù)及教程分享平臺(tái)!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - k-means 聚類算法與Python實(shí)現(xiàn)代碼

k-means 聚類算法與Python實(shí)現(xiàn)代碼

2020-06-02 10:17FrancoLiang Python

這篇文章主要介紹了k-means 聚類算法與Python實(shí)現(xiàn)代碼,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

k-means 聚類算法思想先隨機(jī)選擇k個(gè)聚類中心,把集合里的元素與最近的聚類中心聚為一類,得到一次聚類,再把每一個(gè)類的均值作為新的聚類中心重新聚類,迭代n次得到最終結(jié)果分步解析

一、初始化聚類中心

首先隨機(jī)選擇集合里的一個(gè)元素作為第一個(gè)聚類中心放入容器,選擇距離第一個(gè)聚類中心最遠(yuǎn)的一個(gè)元素作為第二個(gè)聚類中心放入容器,第三、四、、、N個(gè)同理,為了優(yōu)化可以選擇距離開(kāi)方做為評(píng)判標(biāo)準(zhǔn)

二、迭代聚類

依次把集合里的元素與距離最近的聚類中心分為一類,放到對(duì)應(yīng)該聚類中心的新的容器,一次聚類完成后求出新容器里個(gè)類的均值,對(duì)該類對(duì)應(yīng)的聚類中心進(jìn)行更新,再次進(jìn)行聚類操作,迭代n次得到理想的結(jié)果

三、可視化展示

利用 python 第三方庫(kù)中的可視化工具 matplotlib.pyplot 對(duì)聚類后的元素顯示(散點(diǎn)圖),方便查看結(jié)果

python代碼實(shí)現(xiàn)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import numpy as np
import matplotlib.pyplot as plt
 
# 兩點(diǎn)距離
def distance(e1, e2):
  return np.sqrt((e1[0]-e2[0])**2+(e1[1]-e2[1])**2)
 
# 集合中心
def means(arr):
  return np.array([np.mean([e[0] for e in arr]), np.mean([e[1] for e in arr])])
 
# arr中距離a最遠(yuǎn)的元素,用于初始化聚類中心
def farthest(k_arr, arr):
  f = [0, 0]
  max_d = 0
  for e in arr:
    d = 0
    for i in range(k_arr.__len__()):
      d = d + np.sqrt(distance(k_arr[i], e))
    if d > max_d:
      max_d = d
      f = e
  return f
 
# arr中距離a最近的元素,用于聚類
def closest(a, arr):
  c = arr[1]
  min_d = distance(a, arr[1])
  arr = arr[1:]
  for e in arr:
    d = distance(a, e)
    if d < min_d:
      min_d = d
      c = e
  return c
 
 
if __name__=="__main__":
  ## 生成二維隨機(jī)坐標(biāo)(如果有數(shù)據(jù)集就更好)
  arr = np.random.randint(100, size=(100, 1, 2))[:, 0, :]
 
  ## 初始化聚類中心和聚類容器
  m = 5
  r = np.random.randint(arr.__len__() - 1)
  k_arr = np.array([arr[r]])
  cla_arr = [[]]
  for i in range(m-1):
    k = farthest(k_arr, arr)
    k_arr = np.concatenate([k_arr, np.array([k])])
    cla_arr.append([])
 
  ## 迭代聚類
  n = 20
  cla_temp = cla_arr
  for i in range(n):  # 迭代n次
    for e in arr:  # 把集合里每一個(gè)元素聚到最近的類
      ki = 0    # 假定距離第一個(gè)中心最近
      min_d = distance(e, k_arr[ki])
      for j in range(1, k_arr.__len__()):
        if distance(e, k_arr[j]) < min_d:  # 找到更近的聚類中心
          min_d = distance(e, k_arr[j])
          ki = j
      cla_temp[ki].append(e)
    # 迭代更新聚類中心
    for k in range(k_arr.__len__()):
      if n - 1 == i:
        break
      k_arr[k] = means(cla_temp[k])
      cla_temp[k] = []
 
  ## 可視化展示
  col = ['HotPink', 'Aqua', 'Chartreuse', 'yellow', 'LightSalmon']
  for i in range(m):
    plt.scatter(k_arr[i][0], k_arr[i][1], linewidth=10, color=col[i])
    plt.scatter([e[0] for e in cla_temp[i]], [e[1] for e in cla_temp[i]], color=col[i])
  plt.show()

結(jié)果展示

k-means 聚類算法與Python實(shí)現(xiàn)代碼

總結(jié)

到此這篇關(guān)于k-means 聚類算法與Python實(shí)現(xiàn)代碼的文章就介紹到這了,更多相關(guān)k-means 聚類算法python內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:https://blog.csdn.net/qq_37509235/article/details/82925781

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 偷拍自拍第一页 | 少妇一级片免费看 | 影音先锋在线看片资源 | 日本午夜精品 | 精品一区二区三区免费毛片爱 | 精品一区电影 | 就操成人网 | 人人爱超碰 | 一级片av| 高清一区二区三区 | 成年人黄色免费视频 | 欧美一级在线观看 | 中文字幕亚洲区 | h片在线 | 亚洲免费在线观看 | 亚洲成人一区 | 午夜精品久久久久久久久久久久 | 在线亚洲免费 | 午夜激情视频在线观看 | 99re视频| 国产三区在线视频 | 亚洲欧美另类图片 | 一区二区三区免费观看 | 97超碰免费 | 亚洲一区二区在线视频 | 婷婷久久综合 | 国产在线乱| 免费观看aaa | 国产精品大片 | 久久久久久久久久久福利观看 | 99精品在线 | 一级免费网站 | 亚洲狠狠爱一区二区三区 | 国产中文字幕在线 | 久久手机免费视频 | 这里只有精品在线 | 欧美日韩精品综合 | 香蕉大人久久国产成人av | 久久国产精品一区 | 久久中文字幕一区二区 | 亚洲精品久久久久久久久久久 |