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; }
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(); }