Example #1
0
        public ClassifierViewModel(MainWindowViewModel mainWindowViewModel)
        {
            _mainWindowViewModel = mainWindowViewModel;

            ScreenToWorld = Matrix <double> .Build.DiagonalIdentity(3);

            WorldToScreen = ScreenToWorld;

            Messenger.Default.Register <Matrix <double> >(this, (m) =>
            {
                ScreenToWorld = m;
                WorldToScreen = ScreenToWorld.Inverse();
            });

            mainWindowViewModel.Layers.CollectionChanged += BandsOnCollectionChanged;

            ClassifierNamesEnumerable = Enum.GetNames(typeof(Classifier));

            ClassifierViewModels = Enum.GetValues(typeof(Classifier))
                                   .Cast <Classifier>()
                                   .ToDictionary(c => c, c => c.CreateClassifierViewModel());

            FeaturesViewModel = new FeaturesViewModel(mainWindowViewModel);

            RemoveAllFeaturesCommand = new RelayCommand(() => FeaturesViewModel.RemoveAllFeatures(), () => FeaturesViewModel.HasFeatures());

            RemoveSelectedFeatureVectorCommand = new RelayCommand(RemoveSelectedFeature, CanRemoveSelectedFeature);

            PropertyChanged += (sender, args) =>
            {
                if (args.PropertyName == nameof(SelectededClassifier))
                {
                    if (CurrentClassifierViewModel != null)
                    {
                        CurrentClassifierViewModel.PropertyChanged -= CurrentClassifierViewModelOnPropertyChanged;
                    }
                    CurrentClassifierViewModel = ClassifierViewModels[SelectededClassifier];
                    if (CurrentClassifierViewModel != null)
                    {
                        CurrentClassifierViewModel.PropertyChanged += CurrentClassifierViewModelOnPropertyChanged;
                    }
                    MarkClassifierNotTrained();
                }
            };

            ExportFeaturesCommand = new RelayCommand(ExportTrainingSet, CanExportTrainingSet);
            ImportFeatureCommand  = new RelayCommand(ImportTrainingSet, CanImportTrainingSet);

            TrainCommand = new RelayCommand(Train, CanTrain);

            GridSearchCommand             = new RelayCommand(GridSearchAsync, () => FeaturesViewModel.HasFeatures());
            ComputeConfusionMatrixCommand = new RelayCommand(ComputeConfusionMatrixAsync, () => FeaturesViewModel.HasFeatures());

            SelectededClassifier = Classifier.SVM;
        }
Example #2
0
        public void UpdateClassifierOptionsProperties(ClassifierViewModelBase classifierViewModel)
        {
            if (_currentClassifierViewModel != null)
            {
                _currentClassifierViewModel.PropertyChanged -= UpdateViewPropertyChangeHandler;
            }

            _currentClassifierViewModel = classifierViewModel;

            if (classifierViewModel == null)
            {
                DataGrid.Children.Clear();
                return;
            }

            _currentClassifierViewModel = classifierViewModel;
            _currentClassifierViewModel.PropertyChanged += UpdateViewPropertyChangeHandler;

            UpdateView();
        }