예제 #1
0
        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);
        }
예제 #2
0
        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);
        }