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)
(y_kmeans,kc)
(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...