static void trainSeverityModel() { MLService service = new MLService(); var chain = service.GetAllSegments_SegmentChain7_AnomalySpreaded_OnlyANomaly(); double[][] inputs = chain.Select(sc => new double[] { sc.MaxSpeedChange.Value, sc.MinSpeedChange.Value }).ToArray(); // KMeans kmeans = new KMeans(k: 3); //kmeans.Centroids = new double [2][]; //kmeans.Centroids[0] = new double[] {-2.76384235537843, 0.608515794829327 }; //kmeans.Centroids[1] = new double[] {-0.579246221664498,0.121793585323178}; // Compute and retrieve the data centroids var clusters = kmeans.Learn(inputs); Serializer.Save(clusters, AnomalyClassifierBySeverityModelFileName); // Use the centroids to parition all the data int[] labels = clusters.Decide(inputs); var zeros = labels.Where(l => l == 0).ToList(); var ones = labels.Where(l => l == 1).ToList(); var twos = labels.Where(l => l == 2).ToList(); ScatterplotBox.Show("Severity Clusters", inputs, labels); }
static void trainAnomalyDetecorDTModel() { MLService service = new MLService(); var chain = service.GetAllSegments_SegmentChain7_AnomalySpreaded_OnlyANomaly().ToList(); double[][] inputs = chain.Select(sc => new double[] { sc.MaxSpeed.Value, sc.MinSpeed.Value, sc.SpeedRange.Value, sc.TotalTime.Value, sc.MinTime.Value, sc.MaxTime.Value, sc.TimeRange.Value, sc.MaxSpeedVar.Value, sc.MinSpeedVar.Value, sc.SpeedVarRange.Value, sc.MaxTimeVar.Value, sc.MinTimeVar.Value, sc.TimeVarRange.Value }).ToArray(); // int[] outputs = chain.Select(sc => sc.AnomalyType).ToArray(); DecisionTree_crossValidation(inputs, outputs); Console.ReadKey(); }