projects
/
clueless-kmeans.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Typo.
[clueless-kmeans.git]
/
clusterer.h
diff --git
a/clusterer.h
b/clusterer.h
index
b45f8c3
..
584828e
100644
(file)
--- a/
clusterer.h
+++ b/
clusterer.h
@@
-1,17
+1,17
@@
/*
/*
- * clueless-kmean
is a variant of k-mean
which enforces balanced
+ * clueless-kmean
s is a variant of k-means
which enforces balanced
* distribution of classes in every cluster
*
* Copyright (c) 2013 Idiap Research Institute, http://www.idiap.ch/
* Written by Francois Fleuret <francois.fleuret@idiap.ch>
*
* distribution of classes in every cluster
*
* Copyright (c) 2013 Idiap Research Institute, http://www.idiap.ch/
* Written by Francois Fleuret <francois.fleuret@idiap.ch>
*
- * This file is part of clueless-kmean.
+ * This file is part of clueless-kmean
s
.
*
*
- * clueless-kmean is free software: you can redistribute it and/or
+ * clueless-kmean
s
is free software: you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* version 3 as published by the Free Software Foundation.
*
* modify it under the terms of the GNU General Public License
* version 3 as published by the Free Software Foundation.
*
- * clueless-kmean is distributed in the hope that it will be useful,
+ * clueless-kmean
s
is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
@@
-30,32
+30,39
@@
class Clusterer {
public:
class Clusterer {
public:
- enum { STANDARD_ASSOCIATION, STANDARD_LP_ASSOCIATION, UNINFORMATIVE_LP_ASSOCIATION };
+ enum {
+ STANDARD_ASSOCIATION,
+ STANDARD_LP_ASSOCIATION,
+ UNINFORMATIVE_LP_ASSOCIATION
+ };
const static int max_nb_iterations = 10;
const static scalar_t min_iteration_improvement = 0.999;
const static int max_nb_iterations = 10;
const static scalar_t min_iteration_improvement = 0.999;
+ const static scalar_t min_cluster_variance = 0.01f;
int _nb_clusters;
int _dim;
int _nb_clusters;
int _dim;
+
scalar_t **_cluster_means, **_cluster_var;
scalar_t **_cluster_means, **_cluster_var;
+ scalar_t distance_to_centroid(scalar_t *x, int k);
+
void initialize_clusters(int nb_points, scalar_t **points);
void initialize_clusters(int nb_points, scalar_t **points);
- //
Does the standard hard k-mean
association
+ //
Standard hard k-means
association
scalar_t baseline_cluster_association(int nb_points, scalar_t **points,
int nb_classes, int *labels,
scalar_t **gamma);
scalar_t baseline_cluster_association(int nb_points, scalar_t **points,
int nb_classes, int *labels,
scalar_t **gamma);
- //
Does the same with an LP formulation, as a sanity check
+ //
Standard k-means association implemented as an LP optimization
scalar_t baseline_lp_cluster_association(int nb_points, scalar_t **points,
int nb_classes, int *labels,
scalar_t **gamma);
scalar_t baseline_lp_cluster_association(int nb_points, scalar_t **points,
int nb_classes, int *labels,
scalar_t **gamma);
- // Does the association under constraints that each cluster gets
- // associated clusters with the same class proportion as the overall
- // training set
+ // Association under the constraint that each cluster gets the same
+ // class proportions as the overall training set
scalar_t uninformative_lp_cluster_association(int nb_points, scalar_t **points,
int nb_classes, int *labels,
scalar_t uninformative_lp_cluster_association(int nb_points, scalar_t **points,
int nb_classes, int *labels,