亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? databin.h

?? 螞蟻聚類算法源代碼(ant based clustering algorithm)
?? H
字號:
/*  Ant-based Clustering    Copyright (C) 2004 Julia Handl    Email: Julia.Handl@gmx.de    This program is free software; you can redistribute it and/or modify    it under the terms of the GNU General Public License as published by    the Free Software Foundation; either version 2 of 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 of    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the    GNU General Public License for more details.    You should have received a copy of the GNU General Public License    along with this program; if not, write to the Free Software    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA*//***************************************************date: 7.4.2003author: Julia Handl (julia.Handl@gmx.de)description: - wrapper class for data- data input- data normalisation- precomputation of dissimilarity matrix***************************************************/#ifndef DATABIN_JH_2003#define DATABIN_JH_2003#include "conf.h"#include "tmatrix.h"#include "databin.h"#include <fstream>#include "testset.h"#include "math.h"#include "random.h"template <class BINTYPE> class databin;template <class DBINTYPE> class docbin;/***************************************************       class data***************************************************/#define NRANSI#define MAXBIT 30#define MAXDIM 6static int iminarg1,iminarg2;#define IMIN(a,b) (iminarg1=(a),iminarg2=(b),(iminarg1) < (iminarg2) ? (iminarg1) : (iminarg2))template <class DATATYPE>class data {     friend class databin<DATATYPE>; private:    DATATYPE * vector;  protected:    conf * par; public:    int color;    int cluster;    public:    ~data();    /* Constructor for a data item that is initialized to the vector <d> and assigned  cluster number <cluster> and color <color> */    data(conf * c, DATATYPE * d, int color, int cluster);    /* Default constructor */    data(conf * c);  /* Constructor for a data item that is initialized to the vector <d> */    data(conf * c, DATATYPE * d);    /* Lenght of the data vector */    const int length();    DATATYPE square(DATATYPE x);    /* Write-Read access to individual components */    DATATYPE &operator[](const int i);    /* Distance computation between two data items */    const DATATYPE distanceto(data<DATATYPE> & d);    /* Addition of two data vectors */    void add(data<DATATYPE> & d);    /* Division of a data vector by <i> */    void div(int i);    /* Data vector is set to <d> */    void set(data<DATATYPE> & d);  /* Data vector is set to <d> */    void set(DATATYPE * d);    friend ostream & operator<< <DATATYPE>(ostream &, data<DATATYPE> &);};/***************************************************       class databin***************************************************/template <class BINTYPE>class databin { protected:    /* pointer to current parameter settings */    conf * par;     /* array of pointer to data objects */     data<BINTYPE> ** bin;    public:    /* precomputed disimilarity matrix */    tmatrix<BINTYPE> * distancematrix;    /* array of maxvalue for each attribute */    BINTYPE * maxvalue;    BINTYPE * minvalue;    BINTYPE * mean;    BINTYPE * std;     public:  /* Constructor, hard-coded data collection as described by <name> */  databin(conf * c, char * name);  /* Destructor */  ~databin();  /* Distance computation between two data items in the collection */  const BINTYPE d(const int index1, const int index2);  /* Direct access to precomputed dissimilarity matrix */  const BINTYPE precomputed_d(const int index1, const int index2);  /* Write-Read access to an individual data item in the collection */  data<BINTYPE> & operator[](const int i);  /* Data output */  void dataoutput(char * filename);  void distanceoutput(char * name, double mu);  /* Check whether this class label already exists */  int find(char * templabel, char ** classlabel, int & labelctr);  /* Generate new samples from the Normal Distribution (for artificial data) */  void regenerate(char * name);  /* Permute order of data items */  void permutate();};/***************************************************       class data - function definitions***************************************************/// access to vector lengthtemplate <class DATATYPE>const int data <DATATYPE>::length() {    return par->bindim;} // default constructortemplate <class DATATYPE>data <DATATYPE>::data(conf * c)  {    par = c;    vector = new DATATYPE[par->bindim];    color = 0;    cluster = 0;        for (int i=0; i<par->bindim; i++) {	vector[i] = 0;    }} // constructor if data vector is providedtemplate <class DATATYPE>data <DATATYPE>:: data(conf * c, DATATYPE * dat) {    par = c;    vector = new DATATYPE[par->bindim];    color = 0;    cluster = 0;          for (int i=0; i<par->bindim; i++) {	vector[i] = dat[i];    }} // constructor if data vector is providedtemplate <class DATATYPE>data <DATATYPE>:: data(conf * c, DATATYPE * dat, int col, int cl ) {    par = c;    vector = new DATATYPE[par->bindim];    color = col;    cluster = cl;          for (int i=0; i<par->bindim; i++) {	vector[i] = dat[i];    }}// destructortemplate <class DATATYPE>data <DATATYPE>::~data() {    delete [] vector;}// square functiontemplate <class DATATYPE> DATATYPE data <DATATYPE>::square(DATATYPE x) {    return x*x;}// write-read access to coordinates of dat vector template <class DATATYPE> DATATYPE &data <DATATYPE>::operator[](const int i) {    return vector[i];}// distance function defined between data vectors   template <class DATATYPE>const DATATYPE data <DATATYPE>::distanceto(data<DATATYPE> & dd) {      data & d = (data &)dd;    DATATYPE result = 0.0;    for (int i=0; i<par->bindim; i++) {	result += square(d.vector[i] - vector[i]);    }        return sqrt(result);}// addition of data vectors   template <class DATATYPE>void data <DATATYPE>::add(data<DATATYPE> & d) {    for (int i=0; i<par->bindim; i++) {	vector[i] += d.vector[i];    } }template <class DATATYPE> void data<DATATYPE>::set(data<DATATYPE> & d) {      for (int i=0; i<par->bindim; i++) {	  vector[i] = d.vector[i];      }}template <class DATATYPE> void data<DATATYPE>::set(DATATYPE * d) {      for (int i=0; i<par->bindim; i++) {	  vector[i] = d[i];      }}// division of a data vector by an integer   template <class DATATYPE>void data <DATATYPE>::div(int divisor) {    for (int i=0; i<par->bindim; i++) {	vector[i] /= double(divisor);    }}/***************************************************       class databin - function definitions***************************************************/// destructortemplate <class BINTYPE>databin <BINTYPE>::~databin() {#ifndef RANDDATA    for (int i=0; i<par->binsize; i++) {	delete bin[i];    }    delete [] bin;    delete [] maxvalue;#endif        delete distancematrix; //    cout << "Databin Destructor" << endl;}template <class BINTYPE> const BINTYPE databin <BINTYPE>::precomputed_d(const int index1, const int index2) {    return (*distancematrix)(index1,index2);}// distance function between the bin's data itemstemplate <class BINTYPE>inline const BINTYPE databin <BINTYPE>::d(const int index1, const int index2) {    return bin[index1]->distanceto(*bin[index2]);}// write-read access to data itemstemplate <class BINTYPE>inline data<BINTYPE> & databin <BINTYPE>::operator[](const int i) {    return *bin[i];} template <class BINTYPE> int databin <BINTYPE>::find(char * templabel, char ** classlabel, int & labelctr) {    for (int i=0; i<labelctr; i++) {	if (strcmp(classlabel[i],templabel) == 0) {	    return i;	}    }    strcpy(classlabel[labelctr], templabel);    labelctr++;    cout << "New Label: " << templabel << endl;    return labelctr-1;}   // constructor for class databin if a hard-coded test set (identified by <name>) is usedtemplate <class BINTYPE>databin <BINTYPE>::databin(conf * c, char * name) {        par = c;    testset t(name, c);    t.generate();        par->bindim = 2;    par->imax = (int)sqrt(double(par->binsize * 10));    par->jmax = par->imax;    par->maxspeed = int(sqrt(2.0*0.5*par->imax*0.5*par->imax));    par->generations = max(25,int(double(par->binsize) /20));    par->kclusters = par->num_cluster;#ifdef CLUSTERING    par->imax_som = 1;    par->jmax_som = par->kclusters;#endif#ifdef TOPMAPPING    par->imax_som = (int)sqrt(par->binsize);    par->jmax_som = (int)sqrt(par->binsize);#endif    maxvalue = new USED_DATA_TYPE[par->bindim];    minvalue = new USED_DATA_TYPE[par->bindim];    mean = new USED_DATA_TYPE[par->bindim];    std = new USED_DATA_TYPE[par->bindim];        for (int j=0; j<par->bindim; j++) {	mean[j] = 0.0;	for (int i=0; i<par->binsize; i++) {	    mean[j] += t.point_coordinates[i][j];	}    }     for (int j=0; j<par->bindim; j++) {	mean[j] /= double(par->binsize);    }    // compute standard deviation    for (int j=0; j<par->bindim; j++) {	std[j] = 0.0;	for (int i=0; i<par->binsize; i++) {	    double diff = t.point_coordinates[i][j]-mean[j];	    std[j] += diff*diff;	}	std[j] /= par->binsize;	std[j] = sqrt(std[j]);    }    for (int j=0; j<par->bindim; j++) {	for (int i=0; i<par->binsize; i++) {	  	  t.point_coordinates[i][j] -= mean[j];	  	  t.point_coordinates[i][j] /= std[j];	}    }        bin = new data<USED_DATA_TYPE>*[par->binsize];    if (bin == NULL) {	cerr << "Databin: Memory allocation failed" << endl;	exit(0);    }    int ctr = 0;    int color = 0;    for (int k=0; k<par->bindim; k++) {	maxvalue[k] = -100000000.0;	minvalue[k] = 100000000.0;    }    for (int i=0; i<par->num_cluster; i++) {	for (int j=0; j<par->size_cluster[i]; j++) { 	    bin[ctr] = new data<USED_DATA_TYPE>(par, t.point_coordinates[ctr],color+1, color);	    if (bin[ctr] == NULL) {		cerr << "Databin: Memory allocation failed" << endl;		exit(0);	    }	    for (int k=0; k<par->bindim; k++) {		maxvalue[k] = max(maxvalue[k], (*(bin[ctr]))[k]);		minvalue[k] = min(minvalue[k], (*(bin[ctr]))[k]);			    }	   	    ctr++;	}	color++;    }        distancematrix = new tmatrix<BINTYPE>(par->binsize);    if (distancematrix == NULL) {	cerr << "Databin: Memory allocation failed" << endl;	exit(0);    }        // print the original document positions to a gnuplot file     dataoutput("initialdata.dat");           // compute distances and mean    par->mu = 0.0;    par->max = 0.0;    for (int i=0; i<par->binsize; i++) {	for (int j=0; j<i; j++) {	    (*distancematrix)(i,j) = bin[i]->distanceto(*(bin[j]));	    par->mu += (*distancematrix)(i,j);	    par->max = max(par->max, (*distancematrix)(i,j));	}    }    par->mu /= 0.5*(par->binsize-1)*par->binsize;    // normalize data    for (int i=0; i<par->binsize; i++) {      for (int j=0; j<i; j++) {	(*distancematrix)(i,j) = (*distancematrix)(i,j) / par->max;      }    }    par->max /= par->max;    par->mu /= par->max;  }template <class BINTYPE> void databin <BINTYPE>::permutate() {        BINTYPE tempval;    long idum = rand();    for (int i=0; i<par->binsize; i++) {	int j = int(ran0(&idum)*(par->binsize));	data<BINTYPE> * temp = bin[i];	bin[i] = bin[j];	bin[j] = temp;	for (int k=0; k<par->binsize; k++) {	    if ((k != i)  && (k != j)) {		tempval = (*distancematrix)(i,k);		(*distancematrix)(i,k) = (*distancematrix)(j,k);		(*distancematrix)(j,k) = tempval;	    }	  	}    }     }template <class BINTYPE> void databin <BINTYPE>::regenerate(char * name) {            testset t(name, par);    t.generate();            for (int j=0; j<par->bindim; j++) {	mean[j] = 0.0;	for (int i=0; i<par->binsize; i++) {	    mean[j] += t.point_coordinates[i][j];	}    }     for (int j=0; j<par->bindim; j++) {	mean[j] /= par->binsize;    }    // compute standard deviation    for (int j=0; j<par->bindim; j++) {	std[j] = 0.0;	for (int i=0; i<par->binsize; i++) {	    double diff = t.point_coordinates[i][j]-mean[j];	    std[j] += diff*diff;	}	std[j] /= par->binsize;	std[j] = sqrt(std[j]);    }	            int ctr = 0;    int color = 0;    for (int k=0; k<par->bindim; k++) {	maxvalue[k] = 0.0;    }    for (int i=0; i<par->num_cluster; i++) {	for (int j=0; j<par->binsize/par->num_cluster; j++) { 	    bin[ctr] = new data<USED_DATA_TYPE>(par, t.point_coordinates[ctr],color+1, color);	  	    for (int k=0; k<par->bindim; k++) {		maxvalue[k] = max(maxvalue[k], abs((*(bin[ctr]))[k]));	    }	    ctr++;	}	color++;    }               // compute distances and mean    par->mu = 0.0;    par->max = 0.0;    for (int i=0; i<par->binsize; i++) {	for (int j=0; j<i; j++) {	    (*distancematrix)(i,j) = bin[i]->distanceto(*(bin[j]));	    par->mu += (*distancematrix)(i,j);	    par->max = max(par->max, (*distancematrix)(i,j));	}    }    par->mu /= 0.5*(par->binsize-1)*par->binsize;    // normalize data    for (int i=0; i<par->binsize; i++) {	for (int j=0; j<i; j++) {	    (*distancematrix)(i,j) = (*distancematrix)(i,j) / par->max;	}    }    par->mu /= par->max;    }template <class BINTYPE> void databin <BINTYPE>::dataoutput(char * name) {    ofstream datastream(name);    for (int i=0; i<par->binsize; i++) {	for (int j=0; j<par->bindim; j++) {	    datastream << (*(bin[i]))[j] << " ";	}	datastream << (*(bin[i])).cluster << endl;    }}template <class BINTYPE> void databin <BINTYPE>::distanceoutput(char * name, double mu) {    int size = 100;    double step = par->max / mu / double(size);    int histo[size];    for (int i=0; i<size; i++) histo[i] = 0;    ofstream datastream(name);    for (int i=0; i<par->binsize; i++) {	for (int j=0; j<i; j++) {	    histo[int((*distancematrix)(i,j) / mu / step) ]++;	}    }    for (int i=0; i<size; i++) {	datastream << double(i)*step  << " " << histo[i] << endl;    }}    template <class DATATYPE>ostream & operator<<(ostream & s, data<DATATYPE> & d) {     for (int i=0; i<d.length(); i++) {	s.precision(3);	s << d.vector[i] << " ";    }    s << endl;    return s;}#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
天天影视涩香欲综合网| 欧美日韩亚洲高清一区二区| 欧美videofree性高清杂交| 亚洲午夜久久久久久久久电影网 | 亚洲一区二区三区四区中文字幕| 色八戒一区二区三区| 亚洲制服丝袜在线| 欧美一区二区三区四区五区| 精品一区二区国语对白| 国产校园另类小说区| 大桥未久av一区二区三区中文| 亚洲国产精品国自产拍av| 成人app下载| 亚洲图片自拍偷拍| 精品久久人人做人人爽| 国产精品乡下勾搭老头1| 亚洲日本青草视频在线怡红院| 在线观看亚洲一区| 免费高清视频精品| 国产欧美精品国产国产专区| 色94色欧美sute亚洲线路一久| 亚洲6080在线| 2019国产精品| 色欲综合视频天天天| 麻豆91精品视频| 国产精品黄色在线观看| 欧美剧在线免费观看网站| 国内精品国产成人国产三级粉色| 日韩美女视频19| 日韩一级大片在线观看| 暴力调教一区二区三区| 日韩av不卡在线观看| 欧美激情一区二区在线| 91麻豆精品国产无毒不卡在线观看| 国产在线视视频有精品| 亚洲国产日韩精品| 国产午夜精品理论片a级大结局 | 欧美日韩亚洲综合一区| 国产精品影视网| 日日夜夜免费精品视频| 国产精品久久久久久一区二区三区| 欧美日本韩国一区二区三区视频| 国产伦精品一区二区三区视频青涩| 亚洲美女精品一区| 久久亚洲精品小早川怜子| 在线观看精品一区| 成人午夜在线免费| 免费成人在线网站| 一区二区三区四区在线| 国产欧美精品国产国产专区| 日韩美女一区二区三区四区| 欧美亚洲国产一区二区三区va| 国产大陆a不卡| 久久精品噜噜噜成人av农村| 亚洲一区二区三区四区不卡| 中文字幕一区二区三区四区不卡| 精品免费日韩av| 4hu四虎永久在线影院成人| 91亚洲精品久久久蜜桃网站| 国产成人免费视频一区| 麻豆freexxxx性91精品| 亚洲成人av一区| 一区二区三区免费| 亚洲丝袜制服诱惑| 日本一区二区综合亚洲| 亚洲精品在线免费观看视频| 欧美一区二区在线播放| 91福利在线看| 色妹子一区二区| 91视视频在线直接观看在线看网页在线看 | 国产自产2019最新不卡| 奇米一区二区三区| 日韩二区在线观看| 日韩国产欧美在线视频| 香蕉乱码成人久久天堂爱免费| 亚洲一级二级三级在线免费观看| 1000部国产精品成人观看| 国产精品麻豆99久久久久久| 国产欧美一区二区在线观看| 久久精品一区四区| 国产喂奶挤奶一区二区三区| 久久先锋影音av| 国产欧美日韩不卡免费| 久久精品一区二区三区不卡牛牛| 久久久久久久性| 国产精品网站导航| 国产精品美女视频| 亚洲欧美另类小说视频| 一卡二卡欧美日韩| 亚洲18色成人| 卡一卡二国产精品| 国产精品12区| 菠萝蜜视频在线观看一区| 91丨porny丨国产| 欧美日韩在线一区二区| 欧美一区二区三区色| 精品99999| 亚洲欧洲日本在线| 亚洲综合在线视频| 男人的天堂亚洲一区| 国产一区亚洲一区| 不卡电影免费在线播放一区| 色av一区二区| 日韩免费看的电影| 国产精品嫩草久久久久| 亚洲人成伊人成综合网小说| 亚洲成在人线免费| 精品亚洲免费视频| 波波电影院一区二区三区| 欧美午夜精品一区二区蜜桃| 91精品国产91综合久久蜜臀| 久久蜜桃av一区二区天堂| 亚洲女同女同女同女同女同69| 一区二区三区四区亚洲| 久草中文综合在线| 成人免费视频网站在线观看| 精品视频1区2区3区| 精品成人免费观看| 1024亚洲合集| 精品一区二区影视| 91老师片黄在线观看| 欧美一级片在线| 国产精品久久久久影视| 视频一区国产视频| 成人av在线播放网址| 欧美人狂配大交3d怪物一区| 久久理论电影网| 亚洲国产精品欧美一二99| 黄色资源网久久资源365| 色综合色综合色综合色综合色综合| 欧美一区二区三区性视频| 国产精品久久久久影视| 久久97超碰国产精品超碰| 一本一道综合狠狠老| 久久午夜老司机| 婷婷一区二区三区| 99久久er热在这里只有精品66| 91精品国产综合久久久蜜臀粉嫩| 国产精品久久久久久一区二区三区| 蜜桃av噜噜一区二区三区小说| 一本一道波多野结衣一区二区 | 91精品国产色综合久久久蜜香臀| 中文字幕一区二区三区视频| 国产在线视频精品一区| 日韩一区二区麻豆国产| 亚洲综合在线观看视频| 国产成人精品免费看| 欧美大度的电影原声| 亚洲电影中文字幕在线观看| 99久久精品99国产精品| 欧美高清在线精品一区| 韩国成人福利片在线播放| 欧美一区日韩一区| 无码av中文一区二区三区桃花岛| 欧美在线一区二区三区| 亚洲视频综合在线| 99精品在线观看视频| 久久九九久久九九| 国产剧情一区二区三区| 精品美女在线观看| 韩国精品久久久| 久久久亚洲精品石原莉奈| 久草精品在线观看| 久久一夜天堂av一区二区三区| 美女视频免费一区| 欧美精品一区二区三区高清aⅴ| 青草av.久久免费一区| 日韩欧美www| 精品亚洲欧美一区| 国产亚洲精品久| 成人免费视频播放| 亚洲免费三区一区二区| 日本高清视频一区二区| 亚洲靠逼com| 91麻豆精品一区二区三区| 中文字幕在线观看不卡| 韩国成人福利片在线播放| 国产欧美日韩精品一区| 国产成人亚洲精品狼色在线| 精品国产人成亚洲区| 国产精品 欧美精品| 久久亚洲私人国产精品va媚药| 久久成人久久鬼色| 国产视频一区在线观看| 国产成人精品在线看| 久久久精品日韩欧美| 五月综合激情网| 欧美精品一级二级三级| 亚洲一区二区三区爽爽爽爽爽| 成人午夜激情视频| 亚洲欧洲综合另类| 色88888久久久久久影院野外| 亚洲视频中文字幕| 欧美一区午夜视频在线观看| 日本不卡的三区四区五区| 日韩视频一区二区三区在线播放| 日韩av午夜在线观看| 91精品久久久久久久91蜜桃| 奇米色777欧美一区二区| 欧美午夜影院一区|