Bonjour à tous,

Je voudrais savoir si quelqu'un d'entre vous à déjà travailler sur les Kmedoids ?

Voici un code que j'ai trouvé sur le site de matlab. J'aurai juste une question sur ce code. Voilà dans la fonction Kmeans de base il y a une option 'replicate' qui nous donne une solution ayant une fonction objective minimale parmi X itérations.

Or dans le code suivant pour les kmedoids je ne sais pas comment faire pour calculer cette fonction objective. Es-ce que quelqu'un aurait une idée ?

Merci d'avance

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function [label, energy, index] = kmedoids(X,k)
% X: d x n data matrix
% k: number of cluster
 
v = dot(X,X,1);
D = bsxfun(@plus,v,v')-2*(X'*X);
n = size(X,2);
[~, label] = min(D(randsample(n,k),:),[],1);
last = 0;
while any(label ~= last)
    [~, index] = min(D*sparse(1:n,label,1,n,k,n),[],1);
    last = label;
    [val, label] = min(D(index,:),[],1);
end
energy = sum(val);