Beispiel #1
0
        public void KNearestNeighborsTest()
        {
            Tuple <double[], double>         tuple1 = new Tuple <double[], double>(new double[] { 3, 104, 2 }, 0);
            Tuple <double[], double>         tuple2 = new Tuple <double[], double>(new double[] { 2, 100, 1 }, 0);
            Tuple <double[], double>         tuple3 = new Tuple <double[], double>(new double[] { 1, 81, 0 }, 0);
            Tuple <double[], double>         tuple4 = new Tuple <double[], double>(new double[] { 101, 10, 0 }, 1);
            Tuple <double[], double>         tuple5 = new Tuple <double[], double>(new double[] { 99, 5, 0 }, 1);
            Tuple <double[], double>         tuple6 = new Tuple <double[], double>(new double[] { 98, 2, 0 }, 1);
            Tuple <double[], double>         tuple7 = new Tuple <double[], double>(new double[] { 3, 2, 20 }, 2);
            Tuple <double[], double>         tuple8 = new Tuple <double[], double>(new double[] { 4, 2, 21 }, 2);
            Tuple <double[], double>         tuple9 = new Tuple <double[], double>(new double[] { 2, 2, 23 }, 2);
            List <Tuple <double[], double> > movies =
                new List <Tuple <double[], double> >()
            {
                tuple1, tuple2, tuple3, tuple4, tuple5, tuple6, tuple7, tuple8, tuple9
            };
            KNearestNeighborsClassifier kNearestNeighborsClassifier =
                new KNearestNeighborsClassifier(movies, 3, new EuclideMetric());
            var result = kNearestNeighborsClassifier.Classify(new double[] { 3, 104, 2 });

            result = kNearestNeighborsClassifier.Classify(new double[] { 101, 10, 0 });
            result = kNearestNeighborsClassifier.Classify(new double[] { 80, 10, 0 });
            result = kNearestNeighborsClassifier.Classify(new double[] { 5, 90, 1 });
            result = kNearestNeighborsClassifier.Classify(new double[] { 4, 2, 21 });
            result = kNearestNeighborsClassifier.Classify(new double[] { 3, 3, 25 });
        }
        private SmartphonePositions AnalyzeAccelerometerData(IEnumerable <ICoorinateContainer> coordinates)
        {
            if (coordinates == null || coordinates.Count() == 0)
            {
                return(SmartphonePositions.Not_Found);
            }

            return(KNearestNeighborsClassifier.GetInstance().DefineMove(coordinates));
        }
        public static string RunTest()
        {
            string res;

            //var fn = @"train.csv";
            //var f = File.ReadLines(fn);

            //var data = from z in f.Skip(1)
            //           let zz = z.Split(',').Select(int.Parse)
            //           select new
            //           {
            //               Label = zz.First(),
            //               Image = zz.Skip(1).ToArray()
            //           };


            //var classefier = new MuliclassSupportVectorLearning<Linear>();
            //classefier.Learn(,)

            //var testData = new TestDataFileReader().GetTestData()
            //    .OrderBy(a => Guid.NewGuid()).ToList(); // shuffle

            //SensorsDataModel model = new SensorsDataModel();
            //StringBuilder res = new StringBuilder();

            //foreach (var test in testData)
            //{
            //    SmartphonePositions position = model.AnalyzeAccelerometerData(test.AccelerometerDataRecords
            //        .Select(d => new AccelerometerDataRecord { X = d.X, Y = d.Y, Z = d.Z }).ToList());

            //    res.Append($"{test.SmartphonePosition} -> {position} </br>");
            //}

            var testDataReader = new TestDataFileReader();
            var testDataPath   = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "learning_data", "test", "sample.out");

            var coordinates = testDataReader.ParseCoordinatesFromString(File.ReadAllText(testDataPath));

            var move = KNearestNeighborsClassifier.GetInstance().DefineMove(coordinates);

            res = move.ToString();

            return(res);
        }