private static void ZrobRegresje() { DaneRegresja doNauki = new DaneRegresja(); doNauki.Wczytaj(sciezkaRegresjaTreningowe); BasicNetwork siec = UtworzSiecDoRegresji(); IMLDataSet dataTrening = UczSiec(siec, doNauki); // testuje siec na danych treningowych for (int i = 0; i < dataTrening.Count; i++) { IMLData wynik = siec.Compute(dataTrening[i].Input); doNauki.otrzymaneY.Add(wynik[0]); } doNauki.EksportujDoPliku(sciezkaRegresjaTreningoweWyniki); // testuje siec na danych testowych DaneRegresja doTestow = new DaneRegresja(); doTestow.Wczytaj(sciezkaRegresjaTestowe); IMLDataSet dataTest = new BasicMLDataSet(doTestow.wejscioweX.ToArray(), doTestow.oczekiwaneY.ToArray()); for (int i = 0; i < dataTest.Count; i++) { IMLData wynik = siec.Compute(dataTest[i].Input); doTestow.otrzymaneY.Add(wynik[0]); } doTestow.EksportujDoPliku(sciezkaRegresjaTestoweWyniki); }
static IMLDataSet UczSiec(BasicNetwork siec, DaneRegresja doNauki, double wspolczynnikNauki = 0.003, double bezwladnosc = 0.01) { IMLDataSet dataSet = new BasicMLDataSet(doNauki.wejscioweX.ToArray(), doNauki.oczekiwaneY.ToArray()); List <double> bledyTreningu = new List <double>(); IMLTrain train = new Backpropagation(siec, dataSet, wspolczynnikNauki, bezwladnosc); int iter = 1; int maxIter = 5000; do { train.Iteration(); Console.WriteLine("Iteracja #{0} Blad {1:0.0000}", iter, train.Error); bledyTreningu.Add(train.Error); iter++; } while (train.Error >= 0.001 && iter < maxIter); EksportujBledyTreningu(sciezkaRegresjaBledyTreningu, bledyTreningu); train.FinishTraining(); return(dataSet); }