16 using namespace shogun;
40 while (changed && (iter<max_iter))
44 SG_SWARNING(
"kmeans clustering changed throughout %d iterations stopping...\n", max_iter-1)
47 SG_SINFO(
"Iteration[%d/%d]: Assignment of %i patterns changed.\n", iter, max_iter, changed)
54 for (int32_t i=0; i<XSize; i++)
60 for (int32_t j=0; j<dimensions; j++)
61 mus.
matrix[Cl*dimensions+j] += vec[j];
66 for (int32_t i=0; i<k; i++)
68 if (weights_set[i]!=0.0)
70 for (int32_t j=0; j<dimensions; j++)
71 mus.
matrix[i*dimensions+j] /= weights_set[i];
76 for (int32_t i=0; i<XSize; i++)
80 const int32_t ClList_Pat=ClList[Pat];
85 for(int32_t idx_k=0;idx_k<k;idx_k++)
86 dists[idx_k]=distance->
distance(Pat,idx_k);
89 imini=0 ; mini=dists[0];
97 if (imini!=ClList_Pat)
102 weights_set[imini]+= 1.0;
104 weights_set[ClList_Pat]-= 1.0;
108 for (j=0; j<dimensions; j++)
110 mus.
matrix[imini*dimensions+j]-=
111 (vec[j]-mus.
matrix[imini*dimensions+j]) / weights_set[imini];
118 if (weights_set[ClList_Pat]!=0.0)
122 for (j=0; j<dimensions; j++)
124 mus.
matrix[ClList_Pat*dimensions+j]-=
125 (vec[j]-mus.
matrix[ClList_Pat*dimensions+j]) / weights_set[ClList_Pat];
132 for (j=0; j<dimensions; j++)
133 mus.
matrix[ClList_Pat*dimensions+j]=0;