almost 3 years ago

KMean 分群法

一張圖如果只能使用5種顏色,畫出來的效果會是如何?
這是KMeans演算法的實做,概念如下:

  • 一張相片上假定有(20 *20)個像素,每個像素(pixel)都有三種顏色。
  • 有400個資料, 每組資料散布在(R,G,B)平面上。分成五群
  • 找到最佳的五組平均值
  • 回想資料會依照此最佳解被分類到那一群

程式碼如下

import kmeans
import matplotlib.image as mpimg
import matplotlib.pyplot as plt

path_to_img = 'test.png'
img =mpimg.imread(path_to_img)

top_row = img[0]
top_left_pixel = top_row[0]
pixels = [pixel for row in img for pixel in row]

clusterer = kmeans.KMeans(5)
clusterer.train(pixels)

def recolor(pixel):
    cluster = clusterer.classify(pixel)
    return clusterer.means[cluster]

new_img = [[recolor(pixel) for pixel in row] for row in img]

plt.imshow(new_img)
plt.axis('off')
plt.show()
← kmeans分群 資料科學趨勢 →
 
comments powered by Disqus