まず、イメージと対応するラベルからフィーチャを抽出してみます。 X
がすべての画像の特徴行列を表すとします。したがって、X
の各行は、各サンプルの特徴ベクトルを示す。
opts = statset('Display','final');
k = 2;
startPositions = [0.01 0.01 ; -0.01 -0.01];
[idx,ctrs] = kmeans(X,k,...
'Distance','city',...
'Options',opts,...
'Start',startPositions ...
);
plot(X(idx==1,1),X(idx==1,2),'r.','MarkerSize',12)
hold on
plot(X(idx==2,1),X(idx==2,2),'b.','MarkerSize',12)
plot(ctrs(:,1),ctrs(:,2),'kx',...
'MarkerSize',12,'LineWidth',2)
plot(ctrs(:,1),ctrs(:,2),'ko',...
'MarkerSize',12,'LineWidth',2)
legend('Cluster 1','Cluster 2','Centroids',...
'Location','NW')
ここのコードはMatlabのドキュメントから抜粋したものです。
すべてのサンプルと対応するクラスターを取得したら、クエリーの特徴ベクトルとクラスターの中心を距離メトリックで簡単に比較し、最も近いクラスターを結果として簡単に取得できます。