Source

ml-class / ex7.py

import matplotlib.pyplot as plt
from scipy.io import loadmat
from sklearn.cluster import KMeans
import numpy as np

def image():
    img = loadmat('ex7/bird_small.mat')['A']
    vectors = img.reshape(128*128, 3)
    km = KMeans(n_clusters=16)
    km.fit(vectors)

    normed = np.array([km.cluster_centers_[i] for i in km.predict(vectors)])
    nimg = normed.reshape(128, 128, 3)

    fig = plt.figure()
    ax1 = fig.add_subplot(1, 2, 1)
    ax2 = fig.add_subplot(1, 2, 2)
    ax1.imshow(img)
    ax2.imshow(nimg)
    fig.show()
    raw_input('')

if __name__ == '__main__':
    image()