📄 scalablekmeans.h
字号:
/* Scalable K-means clustering softwareCopyright (C) 2000 Fredrik Farnstrom and James LewisThis program is free software; you can redistribute it and/ormodify it under the terms of the GNU General Public Licenseas published by the Free Software Foundation; either version 2of the License, or (at your option) any later version.This program is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with this program; if not, write to the Free SoftwareFoundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.See the file README.TXT for more information.*//* scalablekmeans.h */class Database;class Subcluster;class MainCluster;class Singleton;class SyntheticData;struct ClusterNode{ float distance; Singleton *point; static int compareDistance(const void *a, const void *b);};class ScalableKMeans{ RAMBuffer buffer; Database *database; int numClusters; float beta; float convergenceThreshold; float secondaryConvergenceThreshold; float discardFraction; float confidenceStdDev; int numNewSecondaryClusters; long numMainIterations; long numSecondaryIterations; long numUpdates; int primary1:1, primary2:1, secondary:1, naive:1; static const float defaultBeta = 1.1; static const float defaultConvergenceThreshold = 0.0001; static const float defaultSecondaryCT = 0.0001; static const float defaultDiscardFraction = 0.2; static const float defaultConfidenceStdDev = 3.4;// static const float defaultConfidenceStdDev = 3.7;// static const float defaultConfidenceStdDev = 3.1; MainCluster *mainClusters; Subcluster *oldClusters; void setup(void); void initModel(void); int fillBuffer(void); void naiveCompression(void); void primaryCompression(void); void secondaryCompression(void); void exportCompressedSet(void); int updateModel(void); Subcluster *closestMainCluster(Singleton *p); Subcluster *closestMainCluster(Subcluster *c); double permutationDistance(int *permut, SyntheticData *db); FILE *logFile;public: ScalableKMeans(long bufferSize, Database *db, int k, int dim); ~ScalableKMeans(); void cluster(void); double logLikelihood(void); double distanceToTrueClusters(SyntheticData *db); void lesion(int p1, int p2, int s, int n) { primary1 = p1; primary2 = p2; secondary = s; naive = n; } float mainIterations(void) { return ((float)numMainIterations)/numUpdates; } float secondaryIterations(void) { return ((float)numSecondaryIterations)/numUpdates; } void setConstants(float newbeta, float newct, float newsct, float newdf, float newcsd) { beta = newbeta; convergenceThreshold = newct; secondaryConvergenceThreshold = newsct; discardFraction = newdf; confidenceStdDev = newcsd; } long getNumPoints(void) { return buffer.getTotalPoints(); } void logUpdates(char *filename);};/* End of file scalablekmeans.h */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -