u++の備忘録

画像認識におけるKMeansによるBoVW

 『画像認識』(機械学習プロフェッショナルシリーズ)*1の第4章pp.92-95に載っていた、KMeansによるBag of Visual Words(BoVW)を実装。

import numpy as np
from sklearn.cluster import KMeans

## KMeansによるBoVW
def coding(X_ap):
    bovw = np.zeros((len(X_ap), NUM_K))
    for i in range(len(X_ap)):
        cluster = kmeans_model.predict(X_ap[i].reshape(1, -1))
        bovw[i, cluster] += 1
    return bovw

# KMeansモデルの学習
NUM_K = 200 # クラスタ数
kmeans_model = KMeans(n_clusters=NUM_K, max_iter=100).fit(X_ap)

# コーディング
C = coding(X_ap)