机器学习算法加强——聚类实践
生活随笔
收集整理的這篇文章主要介紹了
机器学习算法加强——聚类实践
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
?
比我有錢的離我最近的朋友,和我的距離
求L特征值、特征向量,求它前k小的特征值所對應的特征向量所形成的u矩陣,對它做k均值,就得到了譜聚類的最終結果?
?
?
未說明,首選隨機游走拉普拉斯矩陣
?以概率化傳,防止進入死循環
from PIL import Image import numpy as np from sklearn.cluster import KMeans import matplotlib import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3Ddef restore_image(cb, cluster, shape):row, col, dummy = shapeimage = np.empty((row, col, 3))index = 0for r in range(row):for c in range(col):image[r, c] = cb[cluster[index]]index += 1return imagedef show_scatter(a):N = 10print('原始數據:\n', a)density, edges = np.histogramdd(a, bins=[N,N,N], range=[(0,1), (0,1), (0,1)])density /= density.max()x = y = z = np.arange(N)d = np.meshgrid(x, y, z)fig = plt.figure(1, facecolor='w')ax = fig.add_subplot(111, projection='3d')ax.scatter(d[1], d[0], d[2], c='r', s=100*density, marker='o', depthshade=True)ax.set_xlabel(u'紅色分量')ax.set_ylabel(u'綠色分量')ax.set_zlabel(u'藍色分量')plt.title(u'圖像顏色三維頻數分布', fontsize=20)plt.figure(2, facecolor='w')den = density[density > 0]den = np.sort(den)[::-1]t = np.arange(len(den))plt.plot(t, den, 'r-', t, den, 'go', lw=2)plt.title(u'圖像顏色頻數分布', fontsize=18)plt.grid(True)plt.show()if __name__ == '__main__':matplotlib.rcParams['font.sans-serif'] = [u'SimHei']matplotlib.rcParams['axes.unicode_minus'] = Falsenum_vq = 60im = Image.open('flower2.png') # son.bmp(100)/flower2.png(200)/son.png(60)/lena.png(50)image = np.array(im).astype(np.float) / 255image = image[:, :, :3]image_v = image.reshape((-1, 3))model = KMeans(num_vq)show_scatter(image_v)N = image_v.shape[0] # 圖像像素總數# 選擇足夠多的樣本(如1000個),計算聚類中心idx = np.random.randint(0, N, size=1000)image_sample = image_v[idx]model.fit(image_sample)c = model.predict(image_v) # 聚類結果print('聚類結果:\n', c)print('聚類中心:\n', model.cluster_centers_)plt.figure(figsize=(15, 8), facecolor='w')plt.subplot(121)plt.axis('off')plt.title(u'原始圖片', fontsize=18)plt.imshow(image)# plt.savefig('1.png')plt.subplot(122)vq_image = restore_image(model.cluster_centers_, c, image.shape)plt.axis('off')plt.title(u'矢量量化后圖片:%d色' % num_vq, fontsize=20)plt.imshow(vq_image)# plt.savefig('2.png')plt.tight_layout(1.2)plt.show()?
?
?
?
?
?
總結
以上是生活随笔為你收集整理的机器学习算法加强——聚类实践的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习算法加强——聚类
- 下一篇: 机器学习算法加强——贝叶斯网络