// assign a vector (represented by its dissimilarities to others, as dissimilarities[index,])
// to a cluster, represented by its center ==> output is integer in 0..K-1
-static uint32_t assignCluster(uint32_t index, Real* dissimilarities,
+static uint32_t assignCluster(uint32_t index, float* dissimilarities,
uint32_t* centers, uint32_t n, uint32_t K)
{
uint32_t minIndex = 0;
- Real minDist = dissimilarities[index * n + centers[0]];
+ float minDist = dissimilarities[index * n + centers[0]];
for (uint32_t j = 1; j < K; j++)
{
}
// assign centers given a clustering, and also compute corresponding distortion
-static void assign_centers(uint32_t nbClusters, Vector** clusters, Real* dissimilarities,
- uint32_t nbItems, uint32_t* ctrs, Real* distor)
+static void assign_centers(uint32_t nbClusters, Vector** clusters, float* dissimilarities,
+ uint32_t nbItems, uint32_t* ctrs, float* distor)
{
*distor = 0.0;
// TODO [heuristic]: checking only a neighborhood of the former center ?
{
// If the cluster is empty, choose a center at random (pathological case...)
uint32_t minIndex = get_rand_int() % nbItems;
- Real minSumDist = INFINITY;
+ float minSumDist = INFINITY;
for (uint32_t i = 0; i < vector_size(clusters[j]); i++)
{
uint32_t index1;
vector_get(clusters[j], i, index1);
// attempt to use current index as center
- Real sumDist = 0.0;
+ float sumDist = 0.0;
for (uint32_t ii = 0; ii < vector_size(clusters[j]); ii++)
{
uint32_t index2;
}
// Core PAM algorithm from a dissimilarity matrix; (e.g. nstart=10, maxiter=100)
-void pam(Real* dissimilarities, uint32_t nbItems, uint32_t nbClusters, int clustOnMedoids,
+void pam(float* dissimilarities, uint32_t nbItems, uint32_t nbClusters, int clustOnMedoids,
uint32_t nbStart, uint32_t maxNbIter, Result_t* result)
{
uint32_t* ctrs = result->medoids_ranks; //shorthand
bestClusts[j] = vector_new(uint32_t);
}
- Real lastDistor, distor, bestDistor = INFINITY;
+ float lastDistor, distor, bestDistor = INFINITY;
for (uint32_t startKount = 0; startKount < nbStart; startKount++)
{
// centers (random) [re]initialization