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

📄 main.cpp.~88~

📁 神经网络用于X荧光分析的源码。输入元素峰的强度
💻 ~88~
📖 第 1 页 / 共 2 页
字号:
		 dbgSamples->Columns->Items[i]->Visible  =true;
			// dbgSamples->Columns->Items[i]->Color = clRed;
		 dbgSamples->Columns->Items[i]->Font->Color = clRed;
		  }
		}
   //	dbgSamples->Columns->Items[i]->FieldName =  Config.UseFieldName;
   */
}
//---------------------------------------------------------------------------

void __fastcall TformOXEA::MenuExitsClick(TObject *Sender)
{
 this->Close();	
}
//---------------------------------------------------------------------------

void __fastcall TformOXEA::cbSubstanceChange(TObject *Sender)
{
  int i;
	AnsiString felname1,felname2,felname3,felname4;
   Config.SubstNo = cbSubstance->ItemIndex;
	felname1 = AnsiString(prefLabField) + Config.SubstName[Config.SubstNo];
	felname2 = AnsiString(prefRegrField) + Config.SubstName[Config.SubstNo];
	felname3 = AnsiString(prefUseField) + Config.SubstName[Config.SubstNo];
	felname4 = AnsiString(prefLOOCVfield) + Config.SubstName[Config.SubstNo];


	 for (i = 5  ; i < dbgSamples->Columns->Count; i++)
	 {
		dbgSamples->Columns->Items[i]->Visible  =false;
	 }

		 for (i =5 ; i < dbgSamples->Columns->Count; i++)
	{

		 if (dbgSamples->Columns->Items[i]->FieldName == felname3)
		 {
			 dbgSamples->Columns->Items[i]->Visible  =true;
			// dbgSamples->Columns->Items[i]->Color = clRed;
		  dbgSamples->Columns->Items[i]->Font->Color = clRed;
		  }

		 if (dbgSamples->Columns->Items[i]->FieldName == felname1)
		 {
			 dbgSamples->Columns->Items[i]->Visible  =true;
			// dbgSamples->Columns->Items[i]->Color = clRed;
		  dbgSamples->Columns->Items[i]->Font->Color = clGreen;
		  }

		   if (dbgSamples->Columns->Items[i]->FieldName == felname2)
		 {
			 dbgSamples->Columns->Items[i]->Visible  =true;
			// dbgSamples->Columns->Items[i]->Color = clRed;
		  dbgSamples->Columns->Items[i]->Font->Color = clBlue;
		  }

			if (dbgSamples->Columns->Items[i]->FieldName == felname4)
		 {
			 dbgSamples->Columns->Items[i]->Visible  =true;
			// dbgSamples->Columns->Items[i]->Color = clRed;
		  dbgSamples->Columns->Items[i]->Font->Color = clTeal;
		  }

	}
 
}
//---------------------------------------------------------------------------

void __fastcall TformOXEA::Button1Click(TObject *Sender)
{
ListBox1->Clear();


 
}
//---------------------------------------------------------------------------


void __fastcall TformOXEA::SpeedButton2Click(TObject *Sender)
{
   for (int i = ListBoxpeaks1->Items->Count-1;i >-1; i--)
   {
	  ListBoxpeaks2->Items->Insert(0,ListBoxpeaks1->Items->Strings[i]);
	  ListBoxpeaks1->Items->Delete(i);
   }

}
//---------------------------------------------------------------------------

void __fastcall TformOXEA::SpeedButton1Click(TObject *Sender)
{
   for (int i = ListBoxpeaks1->Items->Count-1;i >=0; i--)
   {
	if(ListBoxpeaks1->Selected[i])
	{
	  ListBoxpeaks2->Items->Insert(0,ListBoxpeaks1->Items->Strings[i]);
	  ListBoxpeaks1->Items->Delete(i);
	}
   }
}
//---------------------------------------------------------------------------


void __fastcall TformOXEA::SpeedButton4Click(TObject *Sender)
{
 for (int i = ListBoxpeaks2->Items->Count-1;i >-1; i--)
   {
   //	if(ListBoxpeaks1->Selected[i])

	  ListBoxpeaks1->Items->Insert(0,ListBoxpeaks2->Items->Strings[i]);
	  ListBoxpeaks2->Items->Delete(i);


   }

}
//---------------------------------------------------------------------------

void __fastcall TformOXEA::SpeedButton3Click(TObject *Sender)
{
 for (int i = ListBoxpeaks2->Items->Count-1;i >=0; i--)
   {
	if(ListBoxpeaks2->Selected[i])
	{
	  ListBoxpeaks1->Items->Insert(0,ListBoxpeaks2->Items->Strings[i]);
	  ListBoxpeaks2->Items->Delete(i);
	}
   }
}
//---------------------------------------------------------------------------

void __fastcall TformOXEA::BitBtn1Click(TObject *Sender)
{
   /*	  Tablesample->CancelRange();
	  Tablesample->SetRangeStart();
	  Tablesample->FieldByName("PointNr")->AsInteger = Editfirst->Text.ToInt();
	  Tablesample->SetRangeEnd();
	  Tablesample->FieldByName("PointNr")->AsInteger = Editlast->Text.ToInt();
	  Tablesample->ApplyRange();
   */

   RecordFrom = Editfirst->Text.ToInt();
   RecordTo   = Editlast->Text.ToInt();
   dbgSamples->Refresh();



}
//---------------------------------------------------------------------------

void __fastcall TformOXEA::SpeedButton5Click(TObject *Sender)
{
	  Tablesample->CancelRange();
	  Tablesample->SetRangeStart();
	  Tablesample->FieldByName("PointNr")->AsInteger = 0;
	  Tablesample->SetRangeEnd();
	  Tablesample->FieldByName("PointNr")->AsInteger = Editlast->Text.ToInt();
	  Tablesample->ApplyRange();
}
//---------------------------------------------------------------------------

void __fastcall TformOXEA::SpeedButton6Click(TObject *Sender)
{
       Tablesample->CancelRange();
	  Tablesample->SetRangeStart();
	  Tablesample->FieldByName("PointNr")->AsInteger = Editfirst->Text.ToInt();
	  Tablesample->SetRangeEnd();
	  Tablesample->FieldByName("PointNr")->AsInteger = Tablesample->RecordCount;
	  Tablesample->ApplyRange();
}
//---------------------------------------------------------------------------

void __fastcall TformOXEA::Button2Click(TObject *Sender)
{
	 /*
	   if (ListBoxpeaks2->Items->Count == 0)
		return ;
     
	   int hengwei;
		 rownum = 0;

		 AnsiString  yuming, fieldele;
		  Tablesample->First();
			while (! Tablesample->Eof)
			 {
				  
				   colnum = 0;
				if ((Tablesample->FieldByName("PointNr")->AsInteger >= RecordFrom)&&
				   (Tablesample->FieldByName("PointNr")->AsInteger <= RecordTo))
					{
					 yuming = AnsiString(prefUseField) + Config.SubstName[Config.SubstNo];

					 if((Tablesample->FieldByName(yuming)->AsString=="c")||(Tablesample->FieldByName(yuming)->AsString=="C"))
					 {

						for (int i = 0; i< ListBoxpeaks2->Items->Count; i++)
						 {
						 fieldele = ListBoxpeaks2->Items->Strings[i];

						  hengwei = fieldele.Pos("-");  // change Ka-1 to Ka_1;
						   if (hengwei!=0)
						   {
						   fieldele.Delete(hengwei,1);
						   fieldele.Insert("_",hengwei);

						   }
						  

						 data[rownum][i] = Tablesample->FieldByName(fieldele)->AsFloat;
							colnum ++;
						}
					   yuming = AnsiString(prefLabField) + Config.SubstName[Config.SubstNo];
					   data[rownum][colnum] = Tablesample->FieldByName(yuming)->AsFloat;
					  rownum ++;

					 }
					
					}

		   colnum = ListBoxpeaks2->Items->Count;
		   inputNVNum = colnum;
		   Tablesample->Next();
			}
			for (int i = 0; i<= colnum; i++)
			{
			  for (int j = 0; j< rownum; j++)
			  {
				StringGridstatic->Cells[i][j] = AnsiString( data[j][i]);
			  }
			}
		 StringGridstatic->Refresh();



			for (int i = 0; i< rownum; i++)
			{
			  for (int j = 0; j< colnum; j++)
			  {
				testdata[i][j] =  data[i][j];
			  }
			}
		 */

	// defining a net with 4 layers having 3,3,3, and 1 neuron respectively,
	// the first layer is input layer i.e. simply holder for the input parameters
	// and has to be the same size as the no of input parameters, in out example 3
   //  int numLayers = 4, lSz[4] = {3,3,2,1};



					double data[][6]={
0.119371718,	0.297931416,    9.035357298,	1.268460226,	12.61824644,	62.67,
0.185797456,	0.368635899,	11.44986608,	1.605912703,	16.23042634,	63.07,
0.069043598,	0.171071955,	5.300997181,	0.761496323,	8.194970811,	63.14,
0.095603806,	0.234866273,	7.578996753,	1.061416609,	10.87856038,	62.95,
0.120905264,	0.294447257,	9.155083734,	1.289108776,	12.62410848,	62.93,
0.073238718,	0.183949027,	5.641759295,	0.79974028,	   8.642361027,  	61,
0.42344231,	  0.671186483,	  19.97493273,   	2.80735019,	 27.09465429,	58,
0.115226539,	0.233120304,	8.0049518,	1.115503004,	11.39990387,	60,
0.145759192,	0.324778296,	10.31971666,	1.437185049,	14.06406297,    	62.86,
0.076319026,	0.208866373,	6.572237443,	0.918226418,	9.400992546,   	63.14,
0.040710074,	0.0994579,	3.250108668,	0.451815286,	5.603260199,   	62.88,
0.050679508,	0.13849969,	4.712211724,	0.66822158,	7.092004827,	 62.93,
0.179188166,	0.348982229,	10.53744384,	1.504478509,	14.59858753,	56.16,
0.045852689,	0.086637028,	2.79328643,	0.392453526,	5.080387793,	56,
0.140095517,	0.281948618,	8.471700738,	1.186813418,	11.75561251,	55.99,
0.166141911,	0.317453662,	9.924077748,	1.40282835,	13.86988695,	55.88,
0.033597776,	0.067790029,	2.297198523,	0.32152899,	4.458174865,	56.91,
0.080993941,	0.157967585,	5.274628203,	0.739571975,	7.883997996,	57.07,
0.117286592,	0.20726331,	6.698438094,	0.941289729,	9.988561279,	57,
0.041574322,	0.073833233,	2.275637721,	0.329627501,	4.384071808,	56.74,
0.076776581,	0.190721368,	6.172606948,	0.883164295,	8.785990153,	62.61,
0.095438238,	0.226024891,	7.015687035,	0.98112894,	9.83510352,	63.1,
0.063168004,	0.163810245,	4.999574322,	0.70637718,	7.855679688,	62.88,
0.078459485,	0.18929381,	6.09092476,	0.861196877,	9.02957856,	62.75,
0.10943388,	0.227959347,	7.40101179,	1.038675329,	10.50612765,	62.48,
0.082048231,	0.186632279,	6.326824929,	0.894398365,	9.047896908,	63.26,
0.071153477,	0.15304034,	5.237521572,	0.748365751,	7.611946198,	64.11,
0.103014792,	0.198867771,	7.051374976,	0.994574332,	9.997865804,	64.23,
0.089249456,	0.233805,	7.500053042,	1.05129553,	10.42657281,	63.03,
0.070917134,	0.178620739,	5.66204199,	0.793328942,	8.660057743,	63.1,
0.128861897,	0.295285313,	9.24161036,	1.306492552,	13.02624183,	63.1
 };

	// prepare test data
	double testdata[][5]={
0.119371718,	0.297931416,    9.035357298,	1.268460226,	12.61824644,
0.185797456,	0.368635899,	11.44986608,	1.605912703,	16.23042634,	
0.069043598,	0.171071955,	5.300997181,	0.761496323,	8.194970811,	
0.095603806,	0.234866273,	7.578996753,	1.061416609,	10.87856038,	
0.120905264,	0.294447257,	9.155083734,	1.289108776,	12.62410848,	
0.073238718,	0.183949027,	5.641759295,	0.79974028,	8.642361027,	
0.42344231,	0.671186483,	19.97493273,	2.80735019,	27.09465429,	
0.115226539,	0.233120304,	8.0049518,	1.115503004,	11.39990387,	
0.145759192,	0.324778296,	10.31971666,	1.437185049,	14.06406297,	
0.076319026,	0.208866373,	6.572237443,	0.918226418,	9.400992546,	
0.040710074,	0.0994579,	3.250108668,	0.451815286,	5.603260199,	
0.050679508,	0.13849969,	4.712211724,	0.66822158,	7.092004827,	
0.179188166,	0.348982229,	10.53744384,	1.504478509,	14.59858753,	
0.045852689,	0.086637028,	2.79328643,	0.392453526,	5.080387793,	
0.140095517,	0.281948618,	8.471700738,	1.186813418,	11.75561251,
0.166141911,	0.317453662,	9.924077748,	1.40282835,	13.86988695,	
0.033597776,	0.067790029,	2.297198523,	0.32152899,	4.458174865,	
0.080993941,	0.157967585,	5.274628203,	0.739571975,	7.883997996,	
0.117286592,	0.20726331,	6.698438094,	0.941289729,	9.988561279,	
0.041574322,	0.073833233,	2.275637721,	0.329627501,	4.384071808,	
0.076776581,	0.190721368,	6.172606948,	0.883164295,	8.785990153,	
0.095438238,	0.226024891,	7.015687035,	0.98112894,	9.83510352,	
0.063168004,	0.163810245,	4.999574322,	0.70637718,	7.855679688,	
0.078459485,	0.18929381,	6.09092476,	0.861196877,	9.02957856,	
0.10943388,	0.227959347,	7.40101179,	1.038675329,	10.50612765,	
0.082048231,	0.186632279,	6.326824929,	0.894398365,	9.047896908,	
0.071153477,	0.15304034,	5.237521572,	0.748365751,	7.611946198,	
0.103014792,	0.198867771,	7.051374976,	0.994574332,	9.997865804,	
0.089249456,	0.233805,	7.500053042,	1.05129553,	10.42657281,	
0.070917134,	0.178620739,	5.66204199,	0.793328942,	8.660057743,	
0.128861897,	0.295285313,	9.24161036,	1.306492552,	13.02624183	

};
      rownum = 31;  colnum = 5;


		int numLayers = 4, lSz[4] = {colnum,3,3,1};


	// Learing rate - beta
	// momentum - alpha
	// Threshhold - thresh (value of target mse, training stops once it is achieved)
	double beta = 0.8, alpha = 0.1, Thresh =  0.02;


	// maximum no of iterations during training
	long num_iter = 8000000;


	// Creating the net
	CBackProp *bp = new CBackProp(numLayers, lSz, beta, alpha);
	
	cout<< endl <<  "Now training the network...." << endl;
	long i ;
	for ( i=0; i<num_iter ; i++)
	{
		//	bp->bpgt(data[i%8], &data[i%8][3]);
		bp->bpgt(data[i%rownum], &data[i%rownum][colnum]);

		if( bp->mse(&data[i%rownum][colnum]) < Thresh) {
			cout << endl << "Network Trained. Threshold value achieved in " << i << " iterations." << endl;
			cout << "MSE:  " << bp->mse(&data[i%rownum][colnum])
				 <<  endl <<  endl;
			break;
		}
		if ( i%(num_iter/20000) == 0 )
			{
			ListBox1->Items->Add("MSE:  " + AnsiString(bp->mse(&data[i%rownum][colnum])));
			 ListBox1->Refresh();
		   //	cout<<  endl <<  "MSE:  " << bp->mse(&data[i%rownum][colnum])
		   //		<< "... Training..." << endl;
			}

	}
		ListBox1->Items->Add( AnsiString(i));
		ListBox1->Items->Add( AnsiString(bp->mse(&data[i%rownum][colnum])));
	   ListBox1->Refresh();
	
	if (  i == num_iter )
	{
		ListBox1->Items->Add(" iterations completed...");
		ListBox1->Items->Add("MSE:  " + AnsiString(bp->mse(&data[(i-1)%rownum][colnum])));
	}
	 ShowMessage("MSE:  " + AnsiString(bp->mse(&data[(i-2)%rownum][colnum])));

	  //	cout << endl << i << " iterations completed..."
	   //	<< "MSE: " << bp->mse(&data[(i-1)%rownum][colnum]) << endl;



		for ( i = 0 ; i <rownum ; i++ )
		{
			bp->ffwd(testdata[i]);
			ListBox1->Items->Add(FloatToStr(bp->Out(0)));

		}


   //	cout<< "Now using the trained network to make predctions on test data...." << endl << endl;
   /*	for ( i = 0 ; i < 8 ; i++ )
	{
		bp->ffwd(testData[i]);
		cout << testData[i][0]<< "  " << testData[i][1]<< "  "  << testData[i][2]<< "  "  << testData[i][3]<< "  " << bp->Out(0) << endl;
	}

	return 0;
	*/
}
//---------------------------------------------------------------------------


void __fastcall TformOXEA::dbgSamplesDrawColumnCell(TObject *Sender,
	  const TRect &Rect, int DataCol, TColumn *Column, TGridDrawState State)
{

  if ((Tablesample->FieldByName("PointNr")->AsInteger== RecordFrom)
	 ||(Tablesample->FieldByName("PointNr")->AsInteger== RecordTo))
	{
	 dbgSamples->Canvas->Font->Color = clRed;
	 dbgSamples->Canvas->FillRect(Rect);
     dbgSamples->Canvas->TextOutA(Rect.Left,Rect.Top,Column->Field->Text);
	}

	if ((Tablesample->FieldByName("PointNr")->AsInteger < RecordFrom)
	  ||(Tablesample->FieldByName("PointNr")->AsInteger > RecordTo))

	// ||(Tablesample->FieldByName(Config.UseFieldName)->AsString==""))
	{
	 dbgSamples->Canvas->Font->Color = clGray;
	 dbgSamples->Canvas->FillRect(Rect);
	 dbgSamples->Canvas->TextOutA(Rect.Left,Rect.Top,Column->Field->Text);
	}







}
//---------------------------------------------------------------------------


⌨️ 快捷键说明

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