3 K均值演算法

2022-06-01 13:18:11 字數 2847 閱讀 4810

2). *自主編寫k-means演算法 ,以鳶尾花花瓣長度資料做聚類,並用散點圖顯示。(加分題)

1

import

numpy as np

2from sklearn.datasets import

load_iris

3import

matplotlib.pyplot as plt

45 iris =load_iris()

6 x = iris.data[:, 1] #

鳶尾花花瓣長度資料

7 y = np.zeros(150)89

def initcent(x, k): #

初始聚類中心陣列

10return

x[0:k].reshape(k)

1112

def nearest(kc, i): #

陣列中的值,與聚類中心最小距離所在類別的索引號

13 d = (abs(kc -i))

14 w = np.where(d ==np.min(d))

15return

w[0][0]

1617

def kcmean(x, y, kc, k): #

計算各聚類新均值

18 l =list(kc)

19 flag =false

20for c in

range(k):

21 m = np.where(y ==c)

22 n =np.mean(x[m])

23if l[c] !=n:

24 l[c] =n

25 flag = true #

聚類中心發生變化

26return

(np.array(l), flag)

2728

defxclassify(x, y, kc):

29for i in range(x.shape[0]): #

對陣列的每個值分類

30 y[i] =nearest(kc, x[i])

31returny32

33 k = 3 #

3個聚類中心

34 kc =initcent(x, k)

35 flag =true

36print

(x, y, kc, flag)

37while

flag:

38 y =xclassify(x, y, kc)

39 kc, flag =kcmean(x, y, kc, k)

40print

(y, kc, type(kc))

4142 plt.scatter(x,x,c=y,s=50,cmap='

rainbow

',marker='

p',alpha=0.5);

43 plt.show()

執行結果:

3). 用sklearn.cluster.kmeans,鳶尾花花瓣長度資料做聚類,並用散點圖顯示.

from sklearn.datasets import

load_iris

import

matplotlib.pyplot as plt

from sklearn.cluster import

kmeans

iris=load_iris()

sl=iris.data[:,1]

x=sl.reshape(-1,1)

est=kmeans(n_clusters=3)

est.fit(x)

y_kmeans=est.predict(x)

plt.scatter(x[:,0],x[:,0],c=y_kmeans,s=50,cmap='

rainbow');

plt.show()

實驗結果:

4). 鳶尾花完整資料做聚類並用散點圖顯示.

from sklearn.datasets import

load_iris

import

matplotlib.pyplot as plt

from sklearn.cluster import

kmeans

iris=load_iris()

x=iris.data

est=kmeans(n_clusters=3)

est.fit(x)

kc=est.cluster_centers_

y_kmeans=est.predict(x)

print

(y_kmeans,kc)

print

(kc.shape,y_kmeans.shape,x.shape)

plt.scatter(x[:,0],x[:,1],c=y_kmeans,s=50,cmap='

rainbow');

plt.show()

實驗結果:

5).想想k均值演算法中以用來做什麼?

k-means應用:

k均值演算法在機器學習中屬於簡單易懂容易實現的演算法之一,一般用於模式識別或者資料探勘等等。

3 K均值演算法

作業 1 撲克牌手動演練k均值聚類過程 30張牌,3類 隨機在撲克牌中抽取30張牌,當中取3張聚類中心10,5,2 進行分 計算三堆牌的平均值分別為10.5,5.5,2。以11,6,2為新的聚類中心來分類 計算平均值,均值不變,分類結束。2 自主編寫k means演算法 以鳶尾花花瓣長度資料做聚類,...

3 K均值演算法

1.機器學習的步驟 資料,模型選擇,訓練,測試,2.安裝機器學習庫sklearn pip list 檢視版本 python m pip install upgrade pip pip install u scikit learn pip uninstall sklearn pip uninstall...

3 K均值演算法

4.作業 1 撲克牌手動演練k均值聚類過程 30張牌,3類 第一種劃分 第二種劃分 2 自主編寫k means演算法 以鳶尾花花瓣長度資料做聚類,並用散點圖顯示。加分題 如下 from sklearn.datasets import load iris import numpy as np impo...