コード例 #1
0
ファイル: main.c プロジェクト: JayStevency/KookminUniv
static double Predict(MultiVariateSet *variateSet, float x)
{
	double slope = 0.f, intercept = 0.f;
	double sdx = 0.f, sdy = 0.f, cor;
	double y_ = 0.f, x_ = 0.f, totalx = 0.f, totaly = 0.f;
	EType *bgn1 = variateSet->elem[0], *end1 = variateSet->elem[0]+variateSet->cols, *bgn2 = variateSet->elem[1], *end2 = variateSet->elem[1] + variateSet->cols;

	cor = (double)ComputeCorrelation(variateSet);

	for (; bgn1 != end1; bgn1++) totalx += *bgn1;
	for (; bgn2 != end2; bgn2++) totaly += *bgn2;

	x_ = totalx / (double)variateSet->cols;
	y_ = totaly / (double)variateSet->cols;
	
	totalx = 0.f; totaly = 0.f;
	bgn1 = variateSet->elem[0]; end1 = variateSet->elem[0] + variateSet->cols; 
	bgn2 = variateSet->elem[1]; end2 = variateSet->elem[1] + variateSet->cols;
	
	for (; bgn1 != end1; bgn1++) totalx += Square(*bgn1 - x_);
	for (; bgn2 != end2; bgn2++) totaly += Square(*bgn2 - y_);
	
	sdx = sqrt((totalx / (double)variateSet->cols));
	sdy = sqrt((totaly / (double)variateSet->cols));
	
	slope = cor * sdy / sdx;
	intercept = y_ - (slope*x_);

	return intercept + slope*x;
}
コード例 #2
0
ファイル: main.c プロジェクト: JayStevency/KookminUniv
int main(int argc, char *argv[])
{
	MultiVariateSet *setVariate = NULL;
	int i;
	float* x;
	setVariate = CreateMultiVariateSet("data.dat");
	PrintMultiVariateSet(setVariate);
	printf("\n");

	printf("Covariance = %6.3f\n", ComputeCovariance(setVariate));
	printf("Correlation = %6.3f\n", ComputeCorrelation(setVariate));

	x = setVariate->elem[0];
	for (i = 0; i < setVariate->cols; i++,x++)
	{
		printf("Predict value : %6.3f", Predict(setVariate, *x));
		printf(" ei = %6.3f\n", *(setVariate->elem[1] + i) - Predict(setVariate, *x));
	}
	DestoryMultiVariateSet(setVariate);
	return 0;
}
コード例 #3
0
void NetworkTemporal3BCPNN::TrainLayer(const vector<vector<float> >& trainingData, PopulationColumns* inputLayer, StructureMIMDSVQ* structure, int iterationsCorrs, int iterationsMDS, int iterationsVQ, int iterationsFeatures)
{
	// Training phase

	int nrTrainImages = trainingData.size();
	structure->MDSHypercolumns()->SwitchOnOff(false);
	structure->MDS()->SwitchOnOff(false);
	structure->VQ()->SwitchOnOff(false);
	structure->CSLLearn()->SwitchOnOff(false);
	structure->GetLayer(1)->SwitchOnOff(false);
	structure->SetRecording(false);

	// Semi-sequential version

	// 1. Training phase
	// 1A. Patches creation
	structure->CSLLearn()->SetMaxPatterns(nrTrainImages);
	structure->CSLLearn()->SetEta(0.001);
	
	// turn of response in 2nd layer during initial training phase for speed
	structure->GetLayer(1)->SwitchOnOff(false);
	
	int j=0;

	while(j<iterationsCorrs) {
		//if(j==(int)iterationsPatches*0.8)
		//	break;
		//for(int i=0;i<trainingData.size();i++) {
		ComputeCorrelation(trainingData,inputLayer,structure,j);
		j++;
	}
	
	j=0;
	while(j<iterationsMDS) {
		//if(j==(int)iterationsPatches*0.9)
		//	break;
		//for(int i=0;i<trainingData.size();i++) {
		if(!ComputeMDS(trainingData,inputLayer,structure,j))
			break;
		j++;
	}
	structure->GetLayer(1)->SwitchOnOff(true);
	j=0;
	while(j<iterationsVQ) {
		//for(int i=0;i<trainingData.size();i++) {
			if(m_verbose && this->MPIGetNodeId() == 0)
				cout << "DataPoint (patches): " << j <<endl;
		ComputeVQ(trainingData,inputLayer,structure,j);
		j++;
	}

	structure->CSLLearn()->SetMaxPatterns(nrTrainImages);
	j=0;
	while(j<iterationsFeatures) {
		//for(int i=0;i<trainingData.size();i++) {
			if(m_verbose && this->MPIGetNodeId() == 0)
				cout << "DataPoint (features): " << j <<endl;
			if(!ExtractFeatures(trainingData,inputLayer,structure))
				break;
		//}
			j++;
	}
	this->RecordAll();
}