Пример #1
0
        private void SetupKmeans()
        {
            Kmeans.OnClassify += Kmeans_OnClassify;

            //Initial view if null
            if (KmeansTrainedDataViews == null)
            {
                KmeansTrainedDataViews = new List <KmeansTrainedDataView>();
                for (int i = 0; i < Kmeans.GetTrainResult().Count; i++)
                {
                    var view = new KmeansTrainedDataView();
                    KmeansTrainedDataViews.Add(view);
                    KmeansTrainedData_flowPanel.Controls.Add(view);
                }
            }

            //Refresh view
            var DataViewsEnum = KmeansTrainedDataViews.GetEnumerator();

            foreach (RawImage28x28 TrainResult in Kmeans.GetTrainResult())
            {
                if (DataViewsEnum.MoveNext())
                {
                    var CurrentView = DataViewsEnum.Current;
                    CurrentView.SetValue(TrainResult.ToBitmap(), TrainResult.Tag, 0);
                }
            }
        }
Пример #2
0
        //Refresh results
        private void Kmeans_OnClassify(RawImage28x28 NewNode, IEnumerable <RawImage28x28> OrderedCenter, string MostTag)
        {
            Image OldBitmap = KmeansResultPictureBox.Image;

            KmeansResultPictureBox.Image = OrderedCenter.First().ToBitmap();
            KmeansResultNum_Label.Text   = MostTag;

            var TrainResultsEnumerator = OrderedCenter.GetEnumerator();

            foreach (var KmeansTrainedDataView in KmeansTrainedDataViews)
            {
                if (TrainResultsEnumerator.MoveNext())
                {
                    var TrainResult = TrainResultsEnumerator.Current;
                    KmeansTrainedDataView.SetValue(TrainResult.ToBitmap(), TrainResult.Tag, TrainResult.GetEuclideanDistance(NewNode));
                }
            }

            OldBitmap?.Dispose();
        }