⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main2.cpp

📁 Scalable k-means software and test datasets This package (a Unix tar file, gzipped) contains the sou
💻 CPP
字号:
/* 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.*//* main2.cpp */#include <math.h>#include <stdio.h>#include <stdlib.h>#include <time.h>#include <sys/times.h>#include "rambuffer.h"#include "subcluster.h"#include "database.h"#include "syntheticdata.h"#include "kmeans.h"#include "scalablekmeans.h"#include "kddcup98data.h"#include "singleton.h"#define USESYNTHETIC 1 #if USESYNTHETIC == 1static const int NumDimensions = 100;#elsestatic const int NumDimensions = 56;#endifstatic const int NumPoints = 1000000;//static const int NumPoints = 10000;static const int NumClusters = 5;#define BETA 1.5 //1.1#define CT 0.0001#define SCT 0.0001#define DF 0.2#define CSD 3.5int main(int argc, char *argv[]){	long s, t1a, t1b, t2a, t2b, t3a, t3b, t4a, t4b, t5a, t5b, t6a, t6b;	int k, i;	FILE *f1, *f2, *f3, *f4, *f5, *f6;	static char buff[256];	Singleton p(NumDimensions);	printf("Mem: %d\n", p.getMemUsed());	SyntheticData db(NumClusters, NumDimensions, NumPoints);	for(i = 0; i < 6; i++)	{	sprintf(buff, "cluster%dl.dat\0", i + 1);		f1 = fopen(buff, "w");		fclose(f1);	}	f1 = fopen("cluster1.dat", "w");        f2 = fopen("cluster2.dat", "w");        f3 = fopen("cluster3.dat", "w");        f4 = fopen("cluster4.dat", "w");        f5 = fopen("cluster5.dat", "w");        f6 = fopen("cluster6.dat", "w");/*	for(k = 0; k < 2; k++)	{        fprintf(stderr, "Creating synthetic data.\n");		db.initData();		db.reset();		db.getPoint();		db.getPoint();	}*/	for(k = 0; k < 50; k++)	{        fprintf(stderr, "Creating synthetic data.\n");	db.initData();	fprintf(f1, "\nRun %d\n", k);        fprintf(f2, "\nRun %d\n", k);        fprintf(f3, "\nRun %d\n", k);        fprintf(f4, "\nRun %d\n", k);        fprintf(f5, "\nRun %d\n", k);        fprintf(f6, "\nRun %d\n", k);	for(i = 0; i < 5; i++)	{	s = time(0);	ScalableKMeans *cluster1 = new ScalableKMeans(4280000, &db, NumClusters,			NumDimensions);	cluster1->setConstants(BETA, CT, SCT, DF, CSD);	cluster1->lesion(0, 0, 0, 0);	cluster1->logUpdates("cluster1l.dat");        ScalableKMeans *cluster2 = new ScalableKMeans(4280000, &db, NumClusters,                        NumDimensions);	cluster2->setConstants(BETA, CT, SCT, DF, CSD);        cluster2->lesion(1, 0, 0, 0);	cluster2->logUpdates("cluster2l.dat");        ScalableKMeans *cluster3 = new ScalableKMeans(4280000, &db, NumClusters,                        NumDimensions);	cluster3->setConstants(BETA, CT, SCT, DF, CSD);        cluster3->lesion(1, 1, 0, 0);	cluster3->logUpdates("cluster3l.dat");        ScalableKMeans *cluster4 = new ScalableKMeans(4280000, &db, NumClusters,                        NumDimensions);	cluster4->setConstants(BETA, CT, SCT, DF, CSD);	cluster4->lesion(1, 1, 1, 0);	cluster4->logUpdates("cluster4l.dat");        ScalableKMeans *cluster5 = new ScalableKMeans(4280000, &db, NumClusters,                        NumDimensions);	cluster5->setConstants(BETA, CT, SCT, DF, CSD);        cluster5->lesion(0, 0, 0, 1);	cluster5->logUpdates("cluster5l.dat");	KMeans *cluster6 = new KMeans(&db, NumClusters, NumDimensions);	db.reset();	srand(s);	printf("Scalable K-means (No Compression) %d.\n", i);	t1a = clock();	cluster1->cluster();	t1b = clock();//        printf("%f\t%f\t%f\n", cluster1->distanceToTrueClusters(&db),//                        (t1b - t1a)/(float)CLOCKS_PER_SEC, cluster1->logLikelihood());	printf("\n");	fprintf(f1, "%f\t%f\t%f\t%f\t%f\t%d\n", cluster1->distanceToTrueClusters(&db),                        (t1b - t1a)/(float)CLOCKS_PER_SEC, cluster1->logLikelihood(), cluster1->mainIterations(), cluster1->secondaryIterations(),		cluster1->getNumPoints());	db.reset();	srand(s);	printf("Scalable K-means (Primary1) %d.\n", i);	t2a = clock();	cluster2->cluster();	t2b = clock();//        printf("%f\t%f\t%f\n", cluster2->distanceToTrueClusters(&db),//                        (t2b - t2a)/(float)CLOCKS_PER_SEC, cluster2->logLikelihood());        printf("\n");        fprintf(f2, "%f\t%f\t%f\t%f\t%f\t%d\n", cluster2->distanceToTrueClusters(&db),                        (t2b - t2a)/(float)CLOCKS_PER_SEC, cluster2->logLikelihood(), cluster2->mainIterations(), cluster2->secondaryIterations(),		cluster2->getNumPoints());        db.reset();        srand(s);        printf("Scalable K-means (Primary1, Primary2) %d.\n", i);        t3a = clock();        cluster3->cluster();        t3b = clock();//        printf("%f\t%f\t%f\n", cluster3->distanceToTrueClusters(&db),//                        (t3b - t3a)/(float)CLOCKS_PER_SEC, cluster3->logLikelihood());        printf("\n");        fprintf(f3, "%f\t%f\t%f\t%f\t%f\t%d\n", cluster3->distanceToTrueClusters(&db),                        (t3b - t3a)/(float)CLOCKS_PER_SEC, cluster3->logLikelihood(), cluster3->mainIterations(), cluster3->secondaryIterations(),		cluster3->getNumPoints());        db.reset();        srand(s);        printf("Scalable K-means (Primary1, Primary2, Secondary) %d.\n", i);        t4a = clock();        cluster4->cluster();        t4b = clock();//        printf("%f\t%f\t%f\n", cluster4->distanceToTrueClusters(&db),//                        (t4b - t4a)/(float)CLOCKS_PER_SEC, cluster4->logLikelihood());	printf("\n");        fprintf(f4, "%f\t%f\t%f\t%f\t%f\t%d\n", cluster4->distanceToTrueClusters(&db),                        (t4b - t4a)/(float)CLOCKS_PER_SEC, cluster4->logLikelihood(), cluster4->mainIterations(), cluster4->secondaryIterations(),		cluster4->getNumPoints());        db.reset();        srand(s);        printf("Scalable K-means (Naive) %d.\n", i);        t5a = clock();        cluster5->cluster();        t5b = clock();//        printf("%f\t%f\t%f\n", cluster5->distanceToTrueClusters(&db),//                        (t5b - t5a)/(float)CLOCKS_PER_SEC, cluster5->logLikelihood());        printf("\n");        fprintf(f5, "%f\t%f\t%f\t%f\t%f\t%d\n", cluster5->distanceToTrueClusters(&db),                        (t5b - t5a)/(float)CLOCKS_PER_SEC, cluster5->logLikelihood(), cluster5->mainIterations(), cluster5->secondaryIterations(),		cluster5->getNumPoints());        db.reset();        srand(s);        printf("Normal K-means %d.\n", i);        t6a = clock();        cluster6->cluster();        t6b = clock();//        printf("%f\t%f\t%f\n", cluster6->distanceToTrueClusters(&db),//                        (t6b - t6a)/(float)CLOCKS_PER_SEC, cluster6->logLikelihood());        printf("\n\n");        fprintf(f6, "%f\t%f\t%f\t%d\n", cluster6->distanceToTrueClusters(&db),                        (t6b - t6a)/(float)CLOCKS_PER_SEC, cluster6->logLikelihood(), cluster6->getNumIterations());	fflush(stdout);	fflush(f1);	fflush(f2);	fflush(f3);	fflush(f4);	fflush(f5);	fflush(f6);	delete cluster1;	delete cluster2;	delete cluster3;	delete cluster4;	delete cluster5;	delete cluster6;	}	}	fprintf(stderr, "Allocated subclusters: %d\n", Subcluster::getAllocated());	fclose(f1);        fclose(f2);        fclose(f3);        fclose(f4);        fclose(f5);        fclose(f6);//	printf("];\n");	return 0;}/* End of file main2.cpp */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -