3 K均值演算法

2022-09-02 13:33:10 字數 2218 閱讀 4186

4. 作業:

1). 撲克牌手動演練k均值聚類過程:>30張牌,3類

第一種劃分:

第二種劃分:

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

**如下:

from sklearn.datasets import

load_iris

import

numpy as np

import

random

import

matplotlib.pyplot as plt

iris =load_iris()

data = iris.data[:, 2] #

樣本的花瓣長度

data.shape

n = len(data) #

樣本個數

k = 3 #

類中心的個數

dist = np.zeros([n, k+1]) #

初始化距離矩陣,最後一列存放每乙個樣本的類別(歸屬的類)

#1、選中心

center = random.sample(list(data), k) #

初始化類中心,即選取前3個樣本作為初始類中心

centernew =np.zeros(k)

while

true:

for i in

range(n):

for j in

range(k):

dist[i, j] = np.sqrt((data[i] - center[j]) ** 2) #

2、求距離

dist[i, k] = np.argmin(dist[i, :k]) #

3、歸類

#4、求新類中心

for i in

range(k):

index = dist[:, k] == i #

判斷距離矩陣中最後一列歸屬為哪一類

centernew[i] =data[index].mean()

#5、判斷結束

if np.all((center == centernew)): #

判斷新的類中心是否與上一輪的

break

else

: center =centernew

print('

150個樣本的歸類:

', dist[:, k])

plt.rcparams[

'font.sans-serif

'] = ['

simhei

'] #

解決中文亂碼

plt.title('

鳶尾花花瓣k-means演算法')

plt.scatter(data, data, c=dist[:, k], cmap='

rainbow')

plt.show()

執行效果圖如下:

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

**如下圖:

執行結果圖:

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

執行結果圖:

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

答:k均值演算法能夠把樣本根據需要劃分為具有不同特徵的樣本集,以這些樣本集來訓練出來的模型可以很好的起到**的作用。例如:一堆有明確直徑的球體,可以通過k均值演算法很快的分出大、中、小球。

3 K均值演算法

2 自主編寫k means演算法 以鳶尾花花瓣長度資料做聚類,並用散點圖顯示。加分題 1 import numpy as np 2from sklearn.datasets import load iris 3import matplotlib.pyplot as plt 45 iris load ...

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...