Exemple #1
0
 private void btnMuatModelBetaHatt_Click(object sender, EventArgs e)
 {
     switch (cbMachineLearning.SelectedIndex)
     {
     case 0:
         var openfile          = Tmp.OpenFileDialog("Muat Model", "betahatt", "MODEL Files (*.betaHatt)|*.betaHatt");
         var dialogResult      = openfile.ShowDialog();
         var listModelbetaHatt = new List <double[]>();
         updateAktivitas("Open File BetaHatt " + openfile.FileNames);
         if (dialogResult == DialogResult.OK)
         {
             foreach (String file in openfile.FileNames)
             {
                 var filecsv = File.ReadAllLines(file);
                 foreach (var row in filecsv)
                 {
                     listModelbetaHatt.Add(Array.ConvertAll(row.Split(';'), double.Parse));
                 }
             }
             _modelbetaHatt = new double[listModelbetaHatt.Count()];
             Parallel.For(0, listModelbetaHatt.Count(), i => {
                 Parallel.For(0, listModelbetaHatt[0].Length, j =>
                 {
                     _modelbetaHatt[i] = listModelbetaHatt[i][j];
                 });
             });
             groupPemakaian.Enabled = true;
             btnUji.Enabled         = true;
             btnUjiDatasets.Enabled = true;
             groupOpsiLatih.Enabled = true;
             enn = new ExtremeNeuralNetwork();
         }
         break;
     }
 }
Exemple #2
0
        private void ELM()
        {
            this.Invoke((MethodInvoker) delegate {
                groupLatih.Enabled     = false;
                groupOpsiLatih.Enabled = false;
                groupPemakaian.Enabled = false;
            });
            Console.WriteLine(_neuronHidden);
            Console.WriteLine(_minRand);
            Console.WriteLine(_maxRand);
            Network net = new Network(_neuronHidden, _minRand, _maxRand);

            enn    = new ExtremeNeuralNetwork(net, Activation.SigmoidBiner);
            _error = enn.teach(_arrayFitur, _arrayKelas);
            tbMape.Invoke((MethodInvoker) delegate { tbMape.Text = _error + ""; });
            DialogResult dialogres;
            string       _filename = "";

            do
            {
                dialogres = Tmp.InputBox("Form Nama", "Masukkan nama model Training: ", ref _filename);
                if (dialogres == DialogResult.Cancel)
                {
                    break;
                }
            } while ((_filename == "" && dialogres == DialogResult.OK));
            if (dialogres.ToString() == "Cancel")
            {
            }
            else
            {
                saveFile(enn.Weight, "weight", _filename);
                saveFile(enn.BetaHatt, "betaHatt", _filename);
                updateAktivitas("Save File Model");
            }

            this.Invoke((MethodInvoker) delegate {
                groupLatih.Enabled     = true;
                groupOpsiLatih.Enabled = true;
                groupPemakaian.Enabled = true;
            });
        }
Exemple #3
0
        static void MainProsesAuto(int iterasi, int i, int j, int k, int l, int m, int n,
                                   int[] PersenData, int[][] KombinasiChannels, Activation[] FungsiAktivasi, int[] JumlahNeuron, double[] NilaiRandomAlpha, double[,] trainingFeature, double[] trainingKelas,
                                   double[,] testingFeature, double[] testingKelas, int total, string date, int[] kelasNonDupe)
        {
            string name = iterasi + "_" + "ke-" + n + ", percentTraining " + PersenData[i] + ", KombinasiChannels " + string.Join(", ", KombinasiChannels[j]) + ", Neuron-" + JumlahNeuron[l] + ", Alpha-" + NilaiRandomAlpha[m] + ", " + DateTime.Now.ToString("hh_mm_ss");

            Console.WriteLine(name);
            Network net = new Network(JumlahNeuron[l], -NilaiRandomAlpha[m], NilaiRandomAlpha[m]);

            enn = new ExtremeNeuralNetwork(net, FungsiAktivasi[k]);
            var kelas2DTraining = enn.ConvertTo2DArrayKelas(kelasNonDupe, trainingKelas);
            var kelas2DTesting  = enn.ConvertTo2DArrayKelas(kelasNonDupe, testingKelas);
            var accTrainingData = enn.teach(trainingFeature, kelas2DTraining);
            var YHattTraining   = enn.YHattTraining2D;
            var forecast        = enn.testing(testingFeature, enn.Weight, enn.BetaHatt2D, FungsiAktivasi[k]);
            var accTesting      = enn.Accuration(forecast, kelas2DTesting);

            //var errorTrainingData = enn.teach(trainingFeature, trainingKelas);
            //var accurationTrainingData = enn.Acc;
            //var YHattTraining = enn.YHattTraining;

            saveFile(enn.Weight, "weight", name);
            saveFile(enn.BetaHatt2D, "betaHatt", name);

            saveFile(YHattTraining, kelas2DTraining, "comparasionTraining", name);

            saveFile(forecast, kelas2DTesting, "comparasionTesting", name);
            //var forecast = enn.testing(testingFeature, FungsiAktivasi[k]);
            //var errorTestingData = enn.MAPEEval(forecast, testingKelas);
            //var accurationTestingData = enn.Accuration(forecast, testingKelas);
            //saveFile(YHattTraining, trainingKelas, "comparasionTraining", name);
            //saveFile(forecast, testingKelas, "comparasionTesting", name);

            var rows = new string[] { iterasi + ";" + n + ";" + PersenData[i] + ";" + string.Join(", ", KombinasiChannels[j]) + ";" + JumlahNeuron[l] + ";" + NilaiRandomAlpha[m] + ";" + accTrainingData + ";" + accTesting + "\n" };

            Console.WriteLine("Iterasi Ke-" + iterasi + "; Percobaan Ke-" + n + "; PersenDataTraining : " + PersenData[i] + "; Kombinasi Channels" + string.Join(", ", KombinasiChannels[j]) + "; Jumlah Neuron " + JumlahNeuron[l] + ";" + NilaiRandomAlpha[m] + "; Akurasi Kepada Training Data " + accTrainingData + "; Akurasi Kepada Testing Data " + accTesting);
            File.AppendAllText(date + ".csv", rows[0]);
        }
        static void Main(string[] args)
        {
            double[,] input = new double[, ] {
                { 5.1, 3.5, 1.4, 0.2 }, {
                    4.9, 3.0, 1.4, 0.2
                }, {
                    4.7, 3.2, 1.3, 0.2
                }, {
                    4.6, 3.1, 1.5, 0.2
                }, {
                    5.0, 3.6, 1.4, 0.2
                }, {
                    5.4, 3.9, 1.7, 0.4
                }, {
                    4.6, 3.4, 1.4, 0.3
                }, {
                    5.0, 3.4, 1.5, 0.2
                }, {
                    4.4, 2.9, 1.4, 0.2
                }, {
                    4.9, 3.1, 1.5, 0.1
                }, {
                    5.4, 3.7, 1.5, 0.2
                }, {
                    4.8, 3.4, 1.6, 0.2
                }, {
                    4.8, 3.0, 1.4, 0.1
                }, {
                    4.3, 3.0, 1.1, 0.1
                }, {
                    5.8, 4.0, 1.2, 0.2
                }, {
                    5.7, 4.4, 1.5, 0.4
                }, {
                    5.4, 3.9, 1.3, 0.4
                }, {
                    5.1, 3.5, 1.4, 0.3
                }, {
                    5.7, 3.8, 1.7, 0.3
                }, {
                    5.1, 3.8, 1.5, 0.3
                }, {
                    5.4, 3.4, 1.7, 0.2
                }, {
                    5.1, 3.7, 1.5, 0.4
                }, {
                    4.6, 3.6, 1.0, 0.2
                }, {
                    5.1, 3.3, 1.7, 0.5
                }, {
                    4.8, 3.4, 1.9, 0.2
                }, {
                    5.0, 3.0, 1.6, 0.2
                }, {
                    5.0, 3.4, 1.6, 0.4
                }, {
                    5.2, 3.5, 1.5, 0.2
                }, {
                    5.2, 3.4, 1.4, 0.2
                }, {
                    4.7, 3.2, 1.6, 0.2
                }, {
                    4.8, 3.1, 1.6, 0.2
                }, {
                    5.4, 3.4, 1.5, 0.4
                }, {
                    5.2, 4.1, 1.5, 0.1
                }, {
                    5.5, 4.2, 1.4, 0.2
                }, {
                    4.9, 3.1, 1.5, 0.1
                }, {
                    5.0, 3.2, 1.2, 0.2
                }, {
                    5.5, 3.5, 1.3, 0.2
                }, {
                    4.9, 3.1, 1.5, 0.1
                }, {
                    4.4, 3.0, 1.3, 0.2
                }, {
                    5.1, 3.4, 1.5, 0.2
                }, {
                    5.0, 3.5, 1.3, 0.3
                }, {
                    4.5, 2.3, 1.3, 0.3
                }, {
                    4.4, 3.2, 1.3, 0.2
                }, {
                    5.0, 3.5, 1.6, 0.6
                }, {
                    5.1, 3.8, 1.9, 0.4
                }, {
                    4.8, 3.0, 1.4, 0.3
                }, {
                    5.1, 3.8, 1.6, 0.2
                }, {
                    4.6, 3.2, 1.4, 0.2
                }, {
                    5.3, 3.7, 1.5, 0.2
                }, {
                    5.0, 3.3, 1.4, 0.2
                }, {
                    7.0, 3.2, 4.7, 1.4
                }, {
                    6.4, 3.2, 4.5, 1.5
                }, {
                    6.9, 3.1, 4.9, 1.5
                }, {
                    5.5, 2.3, 4.0, 1.3
                }, {
                    6.5, 2.8, 4.6, 1.5
                }, {
                    5.7, 2.8, 4.5, 1.3
                }, {
                    6.3, 3.3, 4.7, 1.6
                }, {
                    4.9, 2.4, 3.3, 1.0
                }, {
                    6.6, 2.9, 4.6, 1.3
                }, {
                    5.2, 2.7, 3.9, 1.4
                }, {
                    5.0, 2.0, 3.5, 1.0
                }, {
                    5.9, 3.0, 4.2, 1.5
                }, {
                    6.0, 2.2, 4.0, 1.0
                }, {
                    6.1, 2.9, 4.7, 1.4
                }, {
                    5.6, 2.9, 3.6, 1.3
                }, {
                    6.7, 3.1, 4.4, 1.4
                }, {
                    5.6, 3.0, 4.5, 1.5
                }, {
                    5.8, 2.7, 4.1, 1.0
                }, {
                    6.2, 2.2, 4.5, 1.5
                }, {
                    5.6, 2.5, 3.9, 1.1
                }, {
                    5.9, 3.2, 4.8, 1.8
                }, {
                    6.1, 2.8, 4.0, 1.3
                }, {
                    6.3, 2.5, 4.9, 1.5
                }, {
                    6.1, 2.8, 4.7, 1.2
                }, {
                    6.4, 2.9, 4.3, 1.3
                }, {
                    6.6, 3.0, 4.4, 1.4
                }, {
                    6.8, 2.8, 4.8, 1.4
                }, {
                    6.7, 3.0, 5.0, 1.7
                }, {
                    6.0, 2.9, 4.5, 1.5
                }, {
                    5.7, 2.6, 3.5, 1.0
                }, {
                    5.5, 2.4, 3.8, 1.1
                }, {
                    5.5, 2.4, 3.7, 1.0
                }, {
                    5.8, 2.7, 3.9, 1.2
                }, {
                    6.0, 2.7, 5.1, 1.6
                }, {
                    5.4, 3.0, 4.5, 1.5
                }, {
                    6.0, 3.4, 4.5, 1.6
                }, {
                    6.7, 3.1, 4.7, 1.5
                }, {
                    6.3, 2.3, 4.4, 1.3
                }, {
                    5.6, 3.0, 4.1, 1.3
                }, {
                    5.5, 2.5, 4.0, 1.3
                }, {
                    5.5, 2.6, 4.4, 1.2
                }, {
                    6.1, 3.0, 4.6, 1.4
                }, {
                    5.8, 2.6, 4.0, 1.2
                }, {
                    5.0, 2.3, 3.3, 1.0
                }, {
                    5.6, 2.7, 4.2, 1.3
                }, {
                    5.7, 3.0, 4.2, 1.2
                }, {
                    5.7, 2.9, 4.2, 1.3
                }, {
                    6.2, 2.9, 4.3, 1.3
                }, {
                    5.1, 2.5, 3.0, 1.1
                }, {
                    5.7, 2.8, 4.1, 1.3
                }, {
                    6.3, 3.3, 6.0, 2.5
                }, {
                    5.8, 2.7, 5.1, 1.9
                }, {
                    7.1, 3.0, 5.9, 2.1
                }, {
                    6.3, 2.9, 5.6, 1.8
                }, {
                    6.5, 3.0, 5.8, 2.2
                }, {
                    7.6, 3.0, 6.6, 2.1
                }, {
                    4.9, 2.5, 4.5, 1.7
                }, {
                    7.3, 2.9, 6.3, 1.8
                }, {
                    6.7, 2.5, 5.8, 1.8
                }, {
                    7.2, 3.6, 6.1, 2.5
                }, {
                    6.5, 3.2, 5.1, 2.0
                }, {
                    6.4, 2.7, 5.3, 1.9
                }, {
                    6.8, 3.0, 5.5, 2.1
                }, {
                    5.7, 2.5, 5.0, 2.0
                }, {
                    5.8, 2.8, 5.1, 2.4
                }, {
                    6.4, 3.2, 5.3, 2.3
                }, {
                    6.5, 3.0, 5.5, 1.8
                }, {
                    7.7, 3.8, 6.7, 2.2
                }, {
                    7.7, 2.6, 6.9, 2.3
                }, {
                    6.0, 2.2, 5.0, 1.5
                }, {
                    6.9, 3.2, 5.7, 2.3
                }, {
                    5.6, 2.8, 4.9, 2.0
                }, {
                    7.7, 2.8, 6.7, 2.0
                }, {
                    6.3, 2.7, 4.9, 1.8
                }, {
                    6.7, 3.3, 5.7, 2.1
                }, {
                    7.2, 3.2, 6.0, 1.8
                }, {
                    6.2, 2.8, 4.8, 1.8
                }, {
                    6.1, 3.0, 4.9, 1.8
                }, {
                    6.4, 2.8, 5.6, 2.1
                }, {
                    7.2, 3.0, 5.8, 1.6
                }, {
                    7.4, 2.8, 6.1, 1.9
                }, {
                    7.9, 3.8, 6.4, 2.0
                }, {
                    6.4, 2.8, 5.6, 2.2
                }, {
                    6.3, 2.8, 5.1, 1.5
                }, {
                    6.1, 2.6, 5.6, 1.4
                }, {
                    7.7, 3.0, 6.1, 2.3
                }, {
                    6.3, 3.4, 5.6, 2.4
                }, {
                    6.4, 3.1, 5.5, 1.8
                }, {
                    6.0, 3.0, 4.8, 1.8
                }, {
                    6.9, 3.1, 5.4, 2.1
                }, {
                    6.7, 3.1, 5.6, 2.4
                }, {
                    6.9, 3.1, 5.1, 2.3
                }, {
                    5.8, 2.7, 5.1, 1.9
                }, {
                    6.8, 3.2, 5.9, 2.3
                }, {
                    6.7, 3.3, 5.7, 2.5
                }, {
                    6.7, 3.0, 5.2, 2.3
                }, {
                    6.3, 2.5, 5.0, 1.9
                }, {
                    6.5, 3.0, 5.2, 2.0
                }, {
                    6.2, 3.4, 5.4, 2.3
                }, {
                    5.9, 3.0, 5.1, 1.8
                }
            };
            double[] output = new double[] { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
                                             2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
                                             3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 };
            Network net = new Network(10, -1.0, 1.0);
            ExtremeNeuralNetwork enn = new ExtremeNeuralNetwork(net, Activation.SigmoidBiner);
            var error = enn.teach(input, output);

            Console.WriteLine(error);
            Console.WriteLine(enn.Accuration(enn.YHattTraining, output) + "\n");
            //Console.WriteLine(string.Join("\n", enn.YHattTraining));
            Console.ReadKey();
        }
        static void Main(string[] args)
        {
            var Min        = Array.ConvertAll(File.ReadAllLines("Min.csv")[0].Split(';'), double.Parse);
            var Max        = Array.ConvertAll(File.ReadAllLines("Max.csv")[0].Split(';'), double.Parse);
            var fileWeight = File.ReadAllLines("model.weight");
            var betaHatt   = Array.ConvertAll(File.ReadAllLines("model.betaHatt"), double.Parse);
            var weight     = new double[fileWeight.Length, fileWeight[0].Split(';').Count()];

            for (int i = 0; i < fileWeight.Length; i++)
            {
                var temp = Array.ConvertAll(fileWeight[i].Split(';'), double.Parse);
                for (int j = 0; j < temp.Length; j++)
                {
                    weight[i, j] = temp[j];
                }
            }
            do
            {
                results = liblsl.resolve_stream("type", "EEG", 0, 5);
                if (results.Length != 0)
                {
                    Console.WriteLine("Menghubungkan Oke");
                    inlet = new liblsl.StreamInlet(results[0]);
                    Console.WriteLine("Nama Perangkat\t\t: " + inlet.info().name() + "\n" +
                                      "Nomor UID Perangkat\t: " + inlet.info().uid() + "\n" +
                                      "Versi Perangkat\t\t: " + inlet.info().version() + "\n" +
                                      "Sumber Arus EEG\t\t: " + inlet.info().source_id() + "\n" +
                                      "Jumlah Kanal\t\t: " + inlet.info().channel_count() + " Kanal\n" +
                                      "Sampling rate\t\t: " + inlet.info().nominal_srate() + "\n" +
                                      "Bentuk nilai Kanal\t\t: " + inlet.info().channel_format() + "\n");
                    _kanal = inlet.info().channel_count();
                }
                else
                {
                    Console.WriteLine("Tidak ditemukan arus EEG dari aplikasi BlueMuse atau perangkat EEG tidak terhubung ke komputer! Check kembali");
                }
            } while (results.Length == 0);
            Console.WriteLine("==============================================================");
            Console.WriteLine("=========================Mulai Stream=========================");
            do
            {
                enn = new ExtremeNeuralNetwork();
                var epoching = new List <float[]>();
                float[,] buffer = new float[_chunks, _kanal];
                double[] timestamps = new double[_chunks];
                inlet = new liblsl.StreamInlet(results[0]);
                Stopwatch watch = new Stopwatch();
                watch.Start();
                do
                {
                    int num = inlet.pull_chunk(buffer, timestamps);
                    for (int s = 0; s < num; s++)
                    {
                        var d = new float[_kanal];
                        for (int i = 0; i < _kanal; i++)
                        {
                            d[i] = buffer[s, i];
                        }
                        epoching.Add(d);
                        if (epoching.Count == _epocSizeTesting)
                        {
                            break;
                        }
                    }
                } while (epoching.Count < _epocSizeTesting);
                Console.WriteLine(watch.ElapsedMilliseconds + "ms");
                watch.Stop();
                var pecah      = pecahSinyal(epoching);
                var preprocess = preprocessSignal(pecah);
                var dft        = featureExtraction(preprocess).ToArray();
                var feature    = dftToOneRowFeature(dft);
                var norm       = new double[1, feature.Length];
                for (int s = 0; s < feature.Length; s++)
                {
                    norm[0, s] = Normalisasi(feature[s], Min[s], Max[s]);
                }
                var kelas    = enn.testing(norm, weight, betaHatt, Activation.SigmoidBiner);
                var keyboard = new Keyboard();
                switch (Convert.ToInt16(Math.Round(kelas[0])))
                {
                case 1:
                    Console.WriteLine("Kiri");
                    for (int loop = 0; loop < 2; loop++)
                    {
                        keyboard.Send(Keyboard.ScanCodeShort.KEY_A);
                        Thread.Sleep(500);
                    }
                    break;

                case 2:
                    Console.WriteLine("Kanan");
                    for (int loop = 0; loop < 2; loop++)
                    {
                        keyboard.Send(Keyboard.ScanCodeShort.KEY_D);
                        Thread.Sleep(500);
                    }
                    break;

                default:
                    Console.WriteLine("Bukan Keduanya");
                    keyboard.Send(Keyboard.ScanCodeShort.KEY_W); break;
                }
            } while (true);
        }