コード例 #1
0
ファイル: MyDClassifier.cs プロジェクト: adam-norman/PNU
        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();
            }
        }