private static void ZrobKlasyfikacje() { DaneKlasyfikacja doNauki = new DaneKlasyfikacja(); doNauki.Wczytaj(sciezkaKlasyfikacjaTreningowe); BasicNetwork siec = UtworzSiecDoKlasyfikacji(); 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.klasyWy.Add(wynik[0]); } doNauki.EksportujDoPliku(sciezkaKlasyfikacjaTreningoweWyniki); // testuje siec na danych testowych DaneKlasyfikacja doTestow = new DaneKlasyfikacja(); doTestow.Wczytaj(sciezkaKlasyfikacjaTestowe); IMLDataSet dataTest = new BasicMLDataSet(doTestow.punkty.ToArray(), doTestow.klasyWej.ToArray()); for (int i = 0; i < dataTest.Count; i++) { IMLData wynik = siec.Compute(dataTest[i].Input); doTestow.klasyWy.Add(wynik[0]); } doTestow.EksportujDoPliku(sciezkaKlasyfikacjaTestoweWyniki); }
static IMLDataSet UczSiec(BasicNetwork siec, DaneKlasyfikacja doNauki, double wspolczynnikNauki = 0.003, double bezwladnosc = 0.01) //Wspolczynniki domyslne wybrane tak zeby chociaz dzialalo jakkolwiek { IMLDataSet dataSet = new BasicMLDataSet(doNauki.punkty.ToArray(), doNauki.klasyWej.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.03 && iter < maxIter); EksportujBledyTreningu(sciezkaKlasyfikacjaBledyTreningu, bledyTreningu); train.FinishTraining(); return(dataSet); }