private void Accept_Classificator_Click(object sender, RoutedEventArgs e) { if (settings.instanceOrType == 0) { MessageBox.Show("Выберите тип заполнения классификатора - по типу или по экземпляру.", "Некорректные данные!"); return; } storage.instanceOrType = settings.instanceOrType; storage.classificator.Clear(); foreach (var item in ruleItems) { Classificator classificator = new Classificator(); classificator.BuiltInName = item.builtInCategoryName; classificator.FamilyName = item.familyNameValue; classificator.TypeName = item.typeNameValue; classificator.paramsValues = item.valuesOfParams.Select(x => x.paramValue).ToList(); storage.classificator.Add(classificator); } storage.instanseParams.Clear(); storage.instanseParams.AddRange(settings.paramNameItems.Select(x => x.paramName).ToList()); checkedExit = false; this.Close(); classificatorForm.Show(); }
public void DeleteClassificator(int id, string host) { using (IUnitOfWork work = UnitOfWork.Begin()) { IEnumerable <ClassificatorValue> cv1 = _classificatorValueRepository.FindByClassificatorId(id); foreach (var obj in cv1) { _classificatorValueRepository.Delete(obj); } work.Commit(); Classificator c = _classificatorRepository.FindById(id); var logClassificatorEntity = new ClassificatorEventEntity(c); _classificatorRepository.Delete(c); work.Commit(); _logService.CreateLog(CurrentUser.Get().Id, "web", flag, host, CurrentUser.Get().CompanyId, logClassificatorEntity.GetDeleteMessage()); } }
public void Tests() { testedClassificator = new RadialNetwork(12, 2); Console.WriteLine("Instance crated"); Assert.IsNotNull(testedClassificator); dictionary = new DictionaryFake(100); dictionary.Init(null); Console.WriteLine("Instance crated"); Assert.IsNotNull(testedClassificator); DocumentClass.AddClass("zero"); DocumentClass.AddClass("jeden"); //testedClassificator.Learn(dictionary); int counter = 0; int total = 100; for (int i = 0; i < total; i++) { double[] test = GenTestVector(); Console.WriteLine(test[0] + " " + test[1]); int desired = desiredOutput(test); int get = testedClassificator.Classificate(test); Console.WriteLine("Spodzienawy wynik: " + desired); Console.WriteLine("Otrzymany wynik: " + get); if (get == desired) { Console.WriteLine("---------------------------------------OK!"); counter++; } Console.WriteLine(); } Console.WriteLine("Skutecznosc rzedu: " + (double)counter / total * 100); }
public void CalculateResultForRules(FuzzyTable testData, List <Rule> rules, ConfusionMatrix confusionMatrix, double tolerance = .5) { Classificator classificator = new Classificator(); for (int i = 0; i < testData.GetTable().Rows.Count; i++) { var predictedResult = classificator.Classify(testData, i, rules); var predicterPositiveResult = predictedResult[testData.PositiveColumn.Id]; var predicterNegativeResult = predictedResult[testData.NegativeColumn.Id]; var actualPositiveResult = testData.GetPositiveColumn(i); var actualNegativeResult = testData.GetNegativeColumn(i); if (Math.Abs(predicterPositiveResult - actualPositiveResult) < tolerance) { confusionMatrix.TruePositiveCount++; } else { confusionMatrix.FalseNegativeCount++; } if (Math.Abs(predicterNegativeResult - actualNegativeResult) < tolerance) { confusionMatrix.TrueNegativeCount++; } else { confusionMatrix.FalsePositiveCount++; } } }
internal T Do <T>(params object[] f) where T : FBCompositor { this.children = new BNode[f.Length]; for (int i = 0; i < f.Length; i++) { switch (Classificator.Classificate(f[i])) { case Classificator.NodeValue.BNode: children[i] = (BNode)f[i]; break; case Classificator.NodeValue.FuncStatus: children[i] = new FBNode().SetAction <FBNode>((Func <FBStatus>)f[i]).Final(name + "_fnstatus"); break; case Classificator.NodeValue.FuncBool: children[i] = new Encapsulator().Final <Encapsulator>(name + "_fn", (Func <bool>)f[i]); break; default: Debug.Log("undefined classification"); break; } } return((T)this); }
public void EditClassificator(int id, string name, string comment, string host) { using (IUnitOfWork work = UnitOfWork.Begin()) { Classificator c = _classificatorRepository.FindById(id); var logClassificatorEntity = new ClassificatorEventEntity(c); c.Description = name; c.Comments = comment; work.Commit(); logClassificatorEntity.SetNewClassificator(c); _logService.CreateLog(CurrentUser.Get().Id, "web", flag, host, CurrentUser.Get().CompanyId, logClassificatorEntity.GetEditMessage()); } }
internal T Do <T>(object f) where T : FBDecorator { switch (Classificator.Classificate(f)) { case Classificator.NodeValue.BNode: child = (BNode)f; break; case Classificator.NodeValue.FuncStatus: child = new FBNode().SetAction <FBNode>((Func <FBStatus>)f); break; default: Debug.Log("undefined classification"); break; } return((T)this); }
public void CreateClassificator(string name, string comment, string host) { using (IUnitOfWork work = UnitOfWork.Begin()) { Classificator c = DomainObjectFactory.CreateClassificator(); c.Description = name; c.Comments = comment; _classificatorRepository.Add(c); work.Commit(); var classificatorLogEntity = new ClassificatorEventEntity(c); _logService.CreateLog(CurrentUser.Get().Id, "web", flag, host, CurrentUser.Get().CompanyId, classificatorLogEntity.GetCreateMessage()); } }
private void Open(object sender, RoutedEventArgs e) { for_listbox3.Clear(); ListBox2.SelectedIndex = -1; lst.Clear(); imgs.Clear(); Imgs.Clear(); Names_of_files.Clear(); ListBox3.ItemsSource = for_listbox3; lst_for_class = new List <int>(); for_listbox2 = new ObservableCollection <string>(); foreach (var elem in Classificator.classLabels) { lst_for_class.Add(0); for_listbox2.Add(elem + " "); } ListBox2.ItemsSource = for_listbox2; FolderBrowserDialog dialog = new FolderBrowserDialog(); var res = dialog.ShowDialog(); if (res == System.Windows.Forms.DialogResult.OK) { folderName = dialog.SelectedPath; Rec.IsEnabled = true; } cl = new Classificator(folderName); int k = 0; IEnumerable <string> dir = Directory.EnumerateFiles(folderName, "*.png").Concat(Directory.EnumerateFiles(folderName, "*.jpg")).ToList(); foreach (var item in dir) { Imgs.Add(new Img(item, "")); map_to_class[item] = k; k++; } foreach (var elem in Classificator.classLabels) { map_to_image[elem] = new List <string>(); } }
/// <summary> /// !!! Перед использование не забудь вызвать первый раз FCService.Init() /// </summary> private static IClassificator GetClassificator(Entity ent, IClassTypeService classService) { IClassificator res = null; FCEntProps fcEntProps; if (FCService.GetEntityProperties(ent.Id, out fcEntProps)) { ClassType clType; if (classService == null) { clType = new ClassType(fcEntProps.Class, fcEntProps.Class, null, 0); } else { clType = classService?.GetClassType(fcEntProps.Class); } // Если класс проектируемого здания или есть параметр высоты, то это здание ???!!! Сомнительно. Нужна более строгая идентификайция зданий var height = fcEntProps.GetPropertyValue <double>(Building.PropHeight, 0); if (height != 0 || Building.IsBuildingClass(clType.ClassName)) { var building = new Building(ent, height, fcEntProps.GetProperties(), clType); res = building; } else { double area = GetArea(ent, clType.UnitFactor, clType.ClassName); if (area != 0) { var classificator = new Classificator(ent, clType, area); res = classificator; } } } return(res); }
public void StartRec(object sender, RoutedEventArgs e) { Rec.IsEnabled = false; Stop.IsEnabled = !Rec.IsEnabled; Names_of_files = new List <string>(); IEnumerable <string> dir = Directory.EnumerateFiles(folderName, "*.png").Concat(Directory.EnumerateFiles(folderName, "*.jpg")).ToList(); foreach (var elem in dir) { var byte_rep = ImageToByteArray(elem); bool flag = false; foreach (var item in db.Images.Include(i => i.Det)) { var tre = item.Det; flag = GetHashSHA1(item.Det.ByteRepresent) == GetHashSHA1(byte_rep); if (flag) { if (item.Det.ByteRepresent.SequenceEqual <byte>(byte_rep)) { break; } flag = false; } } if (!flag) { Names_of_files.Add(elem); } /* flag = GetHashSHA1(item.ByteRepresent) == GetHashSHA1(byte_rep); * if (flag) * { * if (item.ByteRepresent.SequenceEqual<byte>(byte_rep)) * { * break; * } * flag = false; * } * } * if (!flag) * { * Names_of_files.Add(elem); * }*/ } if (Names_of_files.Count != 0) { // cl = new Classificator(new List<string>()); cl = new Classificator(Names_of_files); Thread thread1 = new Thread(() => cl.recognize()); thread1.IsBackground = true; thread1.Start(); Thread thread = new Thread(() => { func(); } ); thread.IsBackground = true; thread.Start(); } Thread thread2 = new Thread(() => { func_1(); } ); thread2.IsBackground = true; thread2.Start(); }
private static void DoResearch(Classificator classificator) { var data = GetDataLines(); var curveInfos = GetCurvesInfos(data); var classifiedCurveInfos = curveInfos.Select(curveInfo => new { curveInfo, curveClass = classificator.Classify(curveInfo) }) .ToArray(); var classesOfCurves = classifiedCurveInfos.GroupBy(info => info.curveInfo.DigitsCountOfFiledOrder) .OrderBy(g => g.Key) .Select(g => { var classesInfo = g .AsEnumerable() .GroupBy(cci => cci.curveClass.ClassNumber) .OrderBy(gr => gr.Key) .Select(gr => new { ClassNumber = gr.Key, Count = gr.Count() }).ToDictionary(x => x.ClassNumber, x => x.Count); return(new { Dimension = g.Key, ClassesInfo = classesInfo }); }) .ToArray(); var classesNumber = classesOfCurves.Max(x => x.ClassesInfo.Count); var paddingLeft = 8; Console.Write("Dim".PadLeft(paddingLeft, ' ')); for (var i = 0; i < classesNumber; i++) { Console.Write($"#{i + 1}".PadLeft(paddingLeft, ' ')); } Console.WriteLine(); foreach (var classesOfCurve in classesOfCurves) { Console.Write($"{classesOfCurve.Dimension}".PadLeft(paddingLeft, ' ')); for (var i = 0; i < classesNumber; i++) { if (classesOfCurve.ClassesInfo.ContainsKey(i + 1)) { Console.Write($"{classesOfCurve.ClassesInfo[i + 1]}".PadLeft(paddingLeft, ' ')); } else { Console.Write("0".PadLeft(paddingLeft, ' ')); } } Console.WriteLine(); } }
private void ClassifierCategoriesForm_Load(object sender, EventArgs e) { // инициализация сомманды для считывания SQLiteCommand command = new SQLiteCommand(); // определение подключения к БД command.Connection = new SQLiteConnection(_conection); // инициализация адаптера для считывания SQLiteDataAdapter adapter = new SQLiteDataAdapter(); adapter.SelectCommand = command; #region Определение и заполнение таблиц, при необходимости // если таблице не присвоенно значение, то создать новую таблицу if (_classgroupTable == null) { _classgroupTable = Classgroup.CreateTable(); } // если таблица новая (не имеет записей), то заполнить эту таблицу if (_classgroupTable.Rows.Count <= 0) { // назначить текст комманды считывания command.CommandText = Classgroup.GetSelectText(); // заполнить таблицу adapter.Fill(_classgroupTable); } // если таблице не присвоенно значение, то создать новую таблицу if (_classificatorTable == null) { _classificatorTable = Classificator.CreateTable(); } // если таблица новая (не имеет записей), то заполнить эту таблицу if (_classificatorTable.Rows.Count <= 0) { // назначить текст комманды считывания command.CommandText = Classificator.GetSelectText(); // заполнить таблицу adapter.Fill(_classificatorTable); } // если таблице не присвоенно значение, то создать новую таблицу if (_classpercentTable == null) { _classpercentTable = Classpercent.CreateTable(); } // если таблица новая (не имеет записей), то заполнить эту таблицу if (_classpercentTable.Rows.Count <= 0) { // назначить текст комманды считывания command.CommandText = Classpercent.GetSelectText(); // заполнить таблицу adapter.Fill(_classpercentTable); } #endregion // создание объектов BindingSource _classgroupBS = new BindingSource(); _classificatorBS = new BindingSource(); _classpercentBS = new BindingSource(); // Привязываем BindingSource-ы к таблицам _classgroupBS.DataSource = _classgroupTable; _classificatorBS.DataSource = _classificatorTable; _classpercentBS.DataSource = _classpercentTable; //_privilegeBS.DataSource = _privilegeTable; // отключаем автогенерацию столбцов в GridView-ерах this.classgroupView.AutoGenerateColumns = false; this.classificatorView.AutoGenerateColumns = false; this.classpercentView.AutoGenerateColumns = false; // Привязываем BindingSource-ы к отображателями this.classgroupView.DataSource = _classgroupBS; this.classificatorView.DataSource = _classificatorBS; this.classpercentView.DataSource = _classpercentBS; // назначение обработчиков событий при смене активных (выделенных) записей _classgroupBS.CurrentChanged += new EventHandler(_classgroupBS_CurrentChanged); _classificatorBS.CurrentChanged += new EventHandler(_classificatorBS_CurrentChanged); // сделать активной первую запись _classificatorBS.MoveFirst(); }
public void SetNewClassificator(Classificator classificator) { Mapper.Map(classificator, NewValue); }
public ClassificatorEventEntity(Classificator classificator) { OldValue = new ClassificatorEntity(); NewValue = new ClassificatorEntity(); Mapper.Map(classificator, OldValue); }