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