public void LoadTrainingFile(string path) { try { string line; // First File Lists line = ""; bool isFirst = true; string[] strCn = new string[5]; using (StreamReader reader = new StreamReader(path)) { while ((line = reader.ReadLine()) != null) { if (!String.IsNullOrWhiteSpace(line) && !String.IsNullOrEmpty(line)) { string s = line.Replace(" =", "=").Replace("'", "\""); line = s; if (line.IndexOf("<Rule ") != -1) { string RuleClass = StringOperations.GetAttrVal("Category", line); if (!DistinctClasses.ContainsKey(RuleClass)) { PredictedClassLabelAnalysis p = new PredictedClassLabelAnalysis(); p.className = RuleClass; p.Rules_ClassCount++; DistinctClasses.Add(RuleClass, p); } else { PredictedClassLabelAnalysis p = (PredictedClassLabelAnalysis)DistinctClasses[RuleClass]; //p.className = RuleClass; p.Rules_ClassCount++; DistinctClasses[RuleClass] = p; } FirstFileAsSubsetsClasses.Add(line); } if (line.IndexOf("</Rule>") > -1) { FirstFileAsSubsets.Add((ArrayList)SubSet.Clone()); SubSet.Clear(); } if (line.IndexOf("<Tuple") > -1) { if (!SubSet.Contains(line)) { SubSet.Add(line); } } if (line.IndexOf("<Root") > -1) { NrOfInstances = Int32.Parse(StringOperations.GetAttrVal("M", line)); string z = StringOperations.GetAttrVal("CategoriesN", line);// In this section Get each category with nr of cases in training set strCn = z.Split(','); if (strCn.Length > 0) { for (int ii = 0; ii < strCn.Length - 1; ii += 2) { CategoriesN.Add(strCn[ii], strCn[ii + 1]); } } } } } } for (int g = 0; g < strCn.Length - 1; g += 2) { PredictedClassLabelAnalysis p = (PredictedClassLabelAnalysis)DistinctClasses[strCn[g]]; p.ds_ClassCount = Int32.Parse(strCn[g + 1]); DistinctClasses[strCn[g]] = p; } int NumberOfRules = FirstFileAsSubsetsClasses.Count; for (int i = 0; i < NumberOfRules; i++) { //if (!FirstFileDs.Contains(FirstFileAsSubsetsClasses[i].ToString())) //{ // FirstFileDs.Add(FirstFileAsSubsetsClasses[i].ToString()); //} for (int j = 0; j < ((ArrayList)FirstFileAsSubsets[i]).Count; j++) { if (!FirstFileFs.Contains(((ArrayList)FirstFileAsSubsets[i])[j].ToString())) { FirstFileFs.Add(((ArrayList)FirstFileAsSubsets[i])[j].ToString()); } } } ArrayList tmpFs = new ArrayList(); foreach (string x in FirstFileFs) // need to extract all features { string y = StringOperations.GetAttrVal("Prop", x); // x.Substring(x.IndexOf("<Rule ") + ("<Rule ").Length + 2, x.IndexOf("=")-(x.IndexOf("<Rule ") + ("<Rule ").Length)-2); string v = StringOperations.GetAttrVal("Val", x); if (!tmpFs.Contains(y)) { tmpFs.Add(y); FeaturesCharacteristics fc = new FeaturesCharacteristics(); fc.FeatureName = y; fc.FeatureValues.Add(v); TrainingSetMetaData.Add(y, fc); } else { ((FeaturesCharacteristics)TrainingSetMetaData[y]).FeatureValues.Add(v); } if (((FeaturesCharacteristics)TrainingSetMetaData[y]).isContinuous != false) { if (IsNumber(v)) { ((FeaturesCharacteristics)TrainingSetMetaData[y]).isContinuous = true; } } } foreach (DictionaryEntry de in TrainingSetMetaData) { TrainingSetMetaDataList.Add((FeaturesCharacteristics)de.Value); } for (int i = 0; i < FirstFileAsSubsets.Count; i++) { ArrayList tmp = new ArrayList(); ArrayList itemset = new ArrayList(); tmp = (ArrayList)(FirstFileAsSubsets[i]); foreach (string tuple in tmp) { int featureIndex = 0; foreach (FeaturesCharacteristics fc in TrainingSetMetaDataList) { if (StringOperations.GetAttrVal("Prop", tuple) == fc.FeatureName) // recoginze feature value { int ValueIndex = 0; foreach (string val in fc.FeatureValues) { if (StringOperations.GetAttrVal("Val", tuple) == val) { itemset.Add(featureIndex.ToString() + "," + ValueIndex.ToString()); break; } ValueIndex++; } } featureIndex++; } } TrainingSubsets.Add((ArrayList)itemset.Clone()); } } catch { } }
private void Results_Analysis() { this.Invoke((MethodInvoker) delegate() { ChoosenCriteria = ddlCriteris.Text; }); for (int i = 0; i < TestResults.Count; i++) { Hashtable htclass = new Hashtable(); foreach (DictionaryEntry de in DistinctClasses) { PredictedClassLabelAnalysis p = new PredictedClassLabelAnalysis(); htclass.Add(de.Key, p); } FoundItemsetsProperties t = (FoundItemsetsProperties)TestResults[i]; foreach (string rule in t.itemsetIndexInTrainingSetClassLabel) { string Category = StringOperations.GetAttrVal("Category", rule); string Oc = StringOperations.GetAttrVal("Oc", rule); string Fc = StringOperations.GetAttrVal("Fc", rule); string Rids = StringOperations.GetAttrVal("Rid", rule); //1- Get DistinctClasses and iterate over them //2- Get All mutual Rows for each class //3- Get Max(Oc/M) //4- Get Max(Oc/c) where c = number of rows for this class foreach (DictionaryEntry str in DistinctClasses) { if (Category == str.Key.ToString()) { PredictedClassLabelAnalysis p = (PredictedClassLabelAnalysis)htclass[Category]; p.rowIDs += Rids; p.Ocs.Add(Oc); p.className = Category; p.Supp_c_to_i.Add(double.Parse(CategoriesN[Category].ToString()) / double.Parse(NrOfInstances.ToString())); p.Supp_i_to_c.Add(double.Parse(Oc.ToString()) / double.Parse(NrOfInstances.ToString())); p.Conf_c_to_i.Add(double.Parse(Oc.ToString()) / double.Parse(CategoriesN[Category].ToString())); htclass[Category] = p; break; } } } if (ChoosenCriteria == "MaxFcXOc" || true) { StringBuilder sb2 = new StringBuilder(); PredictedClassLabelAnalysis f = new PredictedClassLabelAnalysis(); foreach (DictionaryEntry de in htclass) { //if (f.GetMutualRowsIds().Count < ((PredictedClassLabelAnalysis)de.Value).GetMutualRowsIds().Count) // swap to get max //{ f.rowIDs = ((PredictedClassLabelAnalysis)de.Value).rowIDs; f.className = ((PredictedClassLabelAnalysis)de.Value).className; f.Ocs = ((PredictedClassLabelAnalysis)de.Value).Ocs; f.Conf_c_to_i = ((PredictedClassLabelAnalysis)de.Value).Conf_c_to_i; f.Supp_c_to_i = ((PredictedClassLabelAnalysis)de.Value).Supp_c_to_i; f.Supp_i_to_c = ((PredictedClassLabelAnalysis)de.Value).Supp_i_to_c; f.DistinctRowsIDs = ((PredictedClassLabelAnalysis)de.Value).GetMutualRowsIds(); f.rowIDsCount = f.DistinctRowsIDs.Count; // } sb2.Append(f.className + "," + f.rowIDsCount.ToString() + "," + f.GetMax_Conf_c_to_i().ToString() + "," + f.GetMax_Supp_c_to_i().ToString() + "," + f.GetMax_Supp_i_to_c().ToString() + " | "); } SetTxtText(Environment.NewLine + i.ToString() + "," + sb2.ToString()); } // SetTxtText(Environment.NewLine + i.ToString()+"," + f.className); //f = new PredictedClassLabelAnalysis(); // FinalObjectsClassLabels = new ArrayList(); } }
private void LoadDataSetFromXML(string Path) { // int NumberOfRules = 0; string line; int CategoryIndex = 0; ArrayList tmpFeaturesList = new ArrayList(); using (StreamReader reader = new StreamReader(Path)) { while ((line = reader.ReadLine()) != null) { if (line != null) { if (line.ToLower().IndexOf("<rule") != -1) { string s = line; s = s.Replace("'", ""); if (!Ds.Contains(s)) { Ds.Add(s); } CategoryIndex = Ds.IndexOf(s); // NumberOfRules++; } if (line.ToLower().IndexOf("</rule") != -1) { Dataset.Rules.Add((ArrayList)tmpFeaturesList.Clone()); Dataset.Categories.Add(CategoryIndex); tmpFeaturesList.Clear(); } if (line.ToLower().Contains("<tuple")) { string DecodedVal = StringOperations.GetAttrVal("Val", line); string NewLine = line.Replace(DecodedVal, System.Web.HttpUtility.HtmlEncode(DecodedVal)); if (line.ToLower().Contains("tuple") && !FS.Contains(line)) { FS.Add(NewLine); } int fIndex = FS.IndexOf(NewLine); if (!tmpFeaturesList.Contains(fIndex)) { tmpFeaturesList.Add(fIndex); } } } } } for (int v = 0; v < FS.Count; v++) { FeatureValues fv = new FeatureValues(); for (int i = 0; i < Dataset.Rules.Count; i++) { ArrayList tuple = (ArrayList)Dataset.Rules[i]; if (tuple.Contains(v)) { fv.count++; fv.RowsIndices.Add(i); } } DsMeta.Add(fv); } }