''' 1.將所有樣本都看作各自一類 2.定義類間距離計算公式 3.選擇距離最小的一堆元素合並成一個新的類 4.重新計算各類之間的距離並重復上面的步驟 5.直到所有的原始元素划分成指定數量的類 程序要點: 1.生成測試數據 sklearn.datasets.make_blobs 2.系統聚類算法 sklearn.cluster.AgglomerativeClustering 3.必須滿足該條件不然會報錯(自定義函數中的參數) assert 1 <= n_clusters <= 4 4.顏色,紅綠藍黃 r g b y 5. o * v + 散點圖的形狀 6.[] 內可以為條件表達式,輸出數組中滿足條件的數據 data[predictResult == i] 7.訪問 x 軸,y 軸坐標 subData[:,0] subData[:,1] 8.plt.scatter(x軸,y軸,c,marker,s=40) colors = "rgby" markers = "o*v+" c 顏色 c=colors[i] marker 形狀 marker=markers[i] 9.生成隨機數據並返回樣本點及標簽 data,labels = make_blobs(n_samples=200,centers=4) make_blobs 為 sklearn.datasets.make_blobs 庫 n_samples 為需要的樣本數量 centers 為標簽數 ''' import numpy as np import matplotlib.pyplot as plt from sklearn.datasets import make_blobs from sklearn.cluster import AgglomerativeClustering def AgglomerativeTest(n_clusters): assert 1 <= n_clusters <= 4 predictResult = AgglomerativeClustering( n_clusters=n_clusters, affinity='euclidean', linkage='ward' ).fit_predict(data) # 定義繪制散點圖時使用的顏色和散點符號 colors = "rgby" markers = "o*v+" # 依次使用不同的顏色和符號繪制每個類的散點圖 for i in range(n_clusters): subData = data[predictResult == i] plt.scatter( subData[:,0], subData[:,1], c = colors[i], marker = markers[i], s = 40 ) plt.show() # 生成隨機數據,200個點,4類標簽,返回樣本及標簽 data , labels = make_blobs(n_samples=200,centers=4) print(data) AgglomerativeTest(2)
2020-04-10