Example #1
0
        } /* ExploreMatrixCell */

        public void  MakePrediction(PicesClass knownClass,
                                    PicesClass predictedClass,
                                    double predProb,
                                    PicesFeatureVector fv,
                                    TrainingModel2 trainModel
                                    )
        {
            bool partOfOriginalClassifier = ClassInClassifierClasses(knownClass);

            if (!partOfOriginalClassifier)
            {
                String notPartClassName = "(V)" + knownClass.Name;
                knownClass = PicesClassList.GetUniqueClass(notPartClassName, "");
            }

            int x = classes.LookUpIndex(knownClass);

            if (x < 0)
            {
                classes.Add(knownClass);
            }

            x = classes.LookUpIndex(predictedClass);
            if (x < 0)
            {
                classes.Add(predictedClass);
            }

            Prediction p = new Prediction(knownClass, predictedClass, predProb, fv, trainModel, partOfOriginalClassifier);

            predictions.Add(p);
        } /* featureVector */
Example #2
0
            } /* SetSelectTreeNode */

            private void  AddSubTreeToClassChoser(PicesClass pc,
                                                  TreeNodeCollection nodes,
                                                  ref bool activeClass
                                                  )
            {
                bool iAmActive = false;

                if (activeClasses != null)
                {
                    iAmActive = (activeClasses.LookUpIndex(pc) >= 0);
                }
                bool oneOfMyChildrenAreActive = false;

                TreeNode tn = new TreeNode(pc.Name);

                nodes.Add(tn);
                if (pc == selectedClass)
                {
                    selectedNode = tn;
                }

                if (pc.Children != null)
                {
                    foreach (PicesClass child  in  pc.Children)
                    {
                        bool childActive = false;
                        AddSubTreeToClassChoser(child, tn.Nodes, ref childActive);
                        if (childActive)
                        {
                            oneOfMyChildrenAreActive = true;
                        }
                    }
                }

                if (iAmActive || oneOfMyChildrenAreActive)
                {
                    activeClass = true;
                    if (iAmActive)
                    {
                        tn.ForeColor = Color.DarkGreen;
                        tn.NodeFont  = activeClassFont;
                    }
                    else if (oneOfMyChildrenAreActive)
                    {
                        tn.ForeColor = Color.Green;
                    }
                }
                else
                {
                    tn.ForeColor = Color.Gray;
                }
            }
Example #3
0
        } /* PredictClasses */

        PicesClass  AssignVallidatedClassAsPredictedClass(PicesFeatureVector fv)
        {
            PicesClass validatedClass = fv.MLClass;

            if ((validatedClass == null) || (classesInClassifier == null))
            {
                return(validatedClass);
            }

            if (classesInClassifier.LookUpIndex(validatedClass) >= 0)
            {
                return(validatedClass);
            }

            // Lets see if the Validated Class is a decedent of one of the classes in the Classifier.
            PicesClass candidate      = null;
            int        numGenerations = 99999;

            foreach (PicesClass pc in classesInClassifier)
            {
                int zed = pc.NumGenerations(validatedClass);
                if (zed >= 0)
                {
                    if (zed < numGenerations)
                    {
                        candidate      = pc;
                        numGenerations = zed;
                    }
                }
            }

            if (candidate != null)
            {
                return(candidate);
            }

            return(validatedClass);
        } /* AssignVallidatedClassAsPredictedClass */
Example #4
0
        private void  MakePrediction(Prediction p)
        {
            String rootName = OSservices.GetRootName(p.FileName);

            PicesClass knownClassPredLevel = p.knowClass.MLClassForGivenHierarchialLevel(predLevel);
            PicesClass predClassPredLevel  = p.predClass.MLClassForGivenHierarchialLevel(predLevel);

            int knowClassIdx = classesPredLevel.LookUpIndex(knownClassPredLevel);
            int predClassIdx = classesPredLevel.LookUpIndex(predClassPredLevel);

            int   exactMatch    = 0;
            float partialCredit = 0.0f;

            if (knowClassIdx == predClassIdx)
            {
                partialCredit = 1.0f;
                exactMatch    = 1;
            }
            else
            {
                partialCredit = FractionThatIsAMatch2(knownClassPredLevel, predClassPredLevel);
            }

            PartialCreditIdx pcIdx = DerivePartialCreditIdx(partialCredit);

            totalByCorectLevel[(int)pcIdx]++;
            totalCount++;
            totalCorrect    += partialCredit;
            totalCorrectNPC += exactMatch;

            if (!p.partOfClassifier)
            {
                totalNotPartOfClassifier++;
            }
            else
            {
                totalPartOfClassifier++;
                totalPartOfClassifierByCorectLevel[(int)pcIdx]++;
                totalPartOfClassifierCorrect    += partialCredit;
                totalPartOfClassifierCorrectNPC += exactMatch;

                if (p.knowClass.UnDefined)
                {
                    totalNoise++;
                    totalNoiseCorrect    += partialCredit;
                    totalNoiseCorrectNPC += exactMatch;
                }
                else
                {
                    totalNonNoise++;
                    totalNonNoiseCorrect    += partialCredit;
                    totalNonNoiseCorrectNPC += exactMatch;
                }
            }

            if (knowClassIdx < 0)
            {
                MessageBox.Show("Invalid Class Specified[" + p.knowClass.Name + "]");
                return;
            }

            if (predClassIdx < 0)
            {
                MessageBox.Show("Invalid Class Specified[" + p.predClass.Name + "]");
                return;
            }

            knownClassCounts[knowClassIdx]++;
            predClassCounts [predClassIdx]++;
            predictionCounts[knowClassIdx][predClassIdx]++;

            try { imagesByPred[knowClassIdx][predClassIdx].Add(rootName, p); }
            catch (Exception e)
            {
                MessageBox.Show(this, "Exception occurred adding example[" + rootName + "]" + "\n" +
                                "Known Class[" + p.knowClass.Name + "] Pred Class[" + p.predClass.Name + "]" + "\n" +
                                "Exception [" + e.ToString() + "]" + "\n" +
                                e.StackTrace,
                                "Confusion Matrix",
                                MessageBoxButtons.OK
                                );
            }
        } /* MakePrediction */