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; } }
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; }); }
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); }