Ejemplo n.º 1
0
        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();
            }
        }
Ejemplo n.º 2
0
        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
            { }
        }