} /* 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 */
} /* 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; } }
} /* 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 */
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 */