7
votes

MATLAB: K-ES signifie regroupement

J'ai un matrice d'un (369x10) que je veux regrouper dans 19 clusters. J'utilise cette méthode xxx

quels rendements IDX (369x1) et CTRS (19x10)

Je reçois le point jusqu'à ici.Toutes mes lignes dans A sont regroupées dans 19 grappes.

Maintenant, j'ai un tableau B (49x10 ) / p>


2 commentaires

Disons que mes grappes sont p1..p19. et j'ai un point de données de test que je choisirai de manière aléatoire des données de test que j'utilise lors de la clustering. Je veux voir qc comme ça; "Mes données de test appartiennent à P5"


J'ai trouvé un moyen mais pas sûr que c'est correct. CTRS détient les centres de chaque cluster. Si je calculez les éléments de Distance Euclidiens de distance des CTR et de mes données de test et obtenez l'index du minimum, cela me donnera l'index de la cluster que mes données de test appartiennent. des idées?


5 Réponses :


4
votes

Je ne peux pas penser à une meilleure façon de le faire que ce que vous avez décrit. Une fonction intégrée sauverait une ligne, mais je ne pouvais pas en trouver un. Voici le code que j'utiliserais: xxx


0 commentaires

0
votes

Pour une petite quantité de données, vous pouvez faire

[testpointID,dum] = find(permute(all(bsxfun(@eq,B,permute(ctrs,[3,2,1])),2),[3,1,2]))


0 commentaires

1
votes

En supposant que vous utilisiez une métrique de distance euclidienne carrée, essayez ceci:

for i = 1:size(ctrs,2)
d(:,i) = sum((B-ctrs(repmat(i,size(B,1),1),:)).^2,2);
end
[distances,predicted] = min(d,[],2)


0 commentaires

11
votes

Ce qui suit est un exemple complet sur la clustering: xxx


0 commentaires

2
votes

Je ne sais pas si je reçois votre sens, mais si vous voulez savoir quel groupe appartient vos points, vous pouvez utiliser facilement KnnSearch Fonction. Il a deux arguments et recherchera en premier lieu pour le premier d'entre eux qui est le plus proche de l'argument deux.


0 commentaires