public void TestSOM2() { // create the training set IMLDataSet training = new BasicMLDataSet( SOMInput2, null); // Create the neural network. var network = new SOMNetwork(4,4); var train = new BasicTrainSOM(network, 0.01, training, new NeighborhoodSingle()) { ForceWinner = true }; int iteration = 0; for (iteration = 0; iteration <= 1000; iteration++) { train.Iteration(); } IMLData data1 = new BasicMLData( SOMInput2[2]); IMLData data2 = new BasicMLData( SOMInput2[0]); IMLData data3 = new BasicMLData( SOMInput2[1]); IMLData data4 = new BasicMLData( SOMInput2[3]); int result1 = network.Classify(data1); int result2 = network.Classify(data2); int result3 = network.Classify(data3); int result4 = network.Classify(data4); Console.WriteLine("Winner in someinput 2 "+network.Winner(new BasicMLData(SOMInput2[0]))); Console.WriteLine("First :" +result1); Console.WriteLine("Second "+result2); Console.WriteLine("Third :" + result3); Console.WriteLine("Fourth " + result4); Assert.IsTrue(result1 != result2); train.TrainPattern(new BasicMLData(SOMInput2[2])); Console.WriteLine("After training pattern: " + network.Winner(new BasicMLData(SOMInput2[1]))); var result = new SupportVectorMachine(4, SVMType.SupportVectorClassification, KernelType.Sigmoid); training = new BasicMLDataSet( SOMInput2, SOMInput2); SVMTrain trainsvm = new SVMTrain(result, training); trainsvm.Iteration(50); result1 = result.Classify(data1); result2 = result.Classify(data2); result3 = result.Classify(data3); result4 = result.Classify(data4); Console.WriteLine("SVM classification : EURUSD 1 :"+result1 + " GBPUSD:"+result2 + " EURCHF :"+result3+ " EURJPY:"+result4 ); }
public void TrainTest1() { const int LearnCount = 100; const int TestCount = 1000; const int Length = 300; const double PositiveRatio = 0.1; // create samples List <(float[] x, bool y, float weight)> samples = SupportVectorMachineTest.GenerateSamples(LearnCount + TestCount, Length, PositiveRatio) .Select(x => (x.x.Select(w => (float)w).ToArray(), x.y, (float)x.weight)) .ToList(); // learn SequentualMinimalOptimization smo = new SequentualMinimalOptimization(new ChiSquare()) { Algorithm = SMOAlgorithm.LibSVM, Tolerance = 0.01f, }; SupportVectorMachine machine = SupportVectorMachine.Learn( smo, samples.Take(LearnCount).Select(x => x.x).ToList(), samples.Take(LearnCount).Select(x => x.y).ToList(), samples.Take(LearnCount).Select(x => x.weight).ToList(), CancellationToken.None); // test List <ClassificationResult <bool?> > results = samples .Skip(LearnCount) .Select(x => new ClassificationResult <bool?>(null, machine.Classify(x.x) > 0.5f, x.y, 1.0f, true)) .ToList(); ClassificationReport <bool?> report = new ClassificationReport <bool?>(results); }