public void Test3() { var data = new List <float[]>(); data.Add(new float[] { 1.0f, 0.7f, 1.0f, }); data.Add(new float[] { -0.3f, -0.5f, -1.0f }); data.Add(new float[] { 3.0f, 0.1f, 1.0f }); data.Add(new float[] { -0.1f, -1.0f, -1.0f }); data.Add(new float[] { -1.0f, 1.1f, -1.0f }); data.Add(new float[] { 2.0f, -3.0f, 1.0f }); // ref probs, not working var svm = new SVM(); for (int i = 0; i < 400; ++i) { var index = Random.Range(0, data.Count); var x = new Unit(data[index][0], 0.0f); var y = new Unit(data[index][1], 0.0f); var label = data[index][2]; svm.LearnFrom(x, y, label); if (i % 25 == 0) { Debug.LogFormat("training: {0}: accuracy: {1}", i, Evaluate(data, svm)); } } }
static void TraintSVM() { List <double[]> data = new List <double[]>(); List <int> labels = new List <int>(); data.Add(new[] { 1.2, 0.7 }); labels.Add(1); data.Add(new[] { -0.3, -0.5 }); labels.Add(-1); data.Add(new[] { 3.0, 0.1 }); labels.Add(1); data.Add(new[] { -0.1, -1.0 }); labels.Add(-1); data.Add(new[] { -1.0, 1.1 }); labels.Add(-1); data.Add(new[] { 2.1, -3 }); labels.Add(1); var svm = new SVM(); double initAcc = EvalTrainingAccuracy(data, labels, svm); // the learning loop for (var iter = 0; iter < 400; iter++) { // pick a random data point int i = _rnd.Next(data.Count); var x = new Unit(data[i][0], 0.0); var y = new Unit(data[i][1], 0.0); var label = labels[i]; svm.LearnFrom(x, y, label); if (iter % 25 == 0) { double acc = EvalTrainingAccuracy(data, labels, svm); Console.WriteLine("Training accuracy at iter " + iter + ": " + acc); } } }