17 #ifndef __itkSampleClassifier_txx
18 #define __itkSampleClassifier_txx
23 namespace Statistics {
25 template<
class TSample >
30 m_Output = OutputType::New();
33 template<
class TSample >
38 Superclass::PrintSelf(os,indent);
40 os << indent <<
"Sample: ";
43 os << m_Sample << std::endl;
47 os <<
"not set." << std::endl;
50 os << indent <<
"Output: " << m_Output << std::endl;
53 template<
class TSample >
58 if ( m_Sample != sample )
61 m_Output->SetSample(sample);
65 template<
class TSample >
73 template<
class TSample >
78 m_ClassLabels = labels;
81 template<
class TSample >
87 typename TSample::ConstIterator iter = this->GetSample()->Begin();
88 typename TSample::ConstIterator end = this->GetSample()->End();
89 typename TSample::MeasurementVectorType measurements;
91 m_Output->Resize( this->GetSample()->
Size() );
92 std::vector< double > discriminantScores;
93 unsigned int numberOfClasses = this->GetNumberOfClasses();
94 discriminantScores.resize(numberOfClasses);
95 unsigned int classLabel;
96 m_Output->SetNumberOfClasses(numberOfClasses);
98 this->GetDecisionRule();
100 if ( m_ClassLabels.size() != this->GetNumberOfMembershipFunctions() )
104 measurements = iter.GetMeasurementVector();
105 for (i = 0; i < numberOfClasses; i++)
107 discriminantScores[i] =
108 (this->GetMembershipFunction(i))->Evaluate(measurements);
110 classLabel = rule->Evaluate(discriminantScores);
111 m_Output->AddInstance(classLabel, iter.GetInstanceIdentifier());
119 measurements = iter.GetMeasurementVector();
120 for (i = 0; i < numberOfClasses; i++)
122 discriminantScores[i] =
123 (this->GetMembershipFunction(i))->Evaluate(measurements);
125 classLabel = rule->Evaluate(discriminantScores);
126 m_Output->AddInstance(m_ClassLabels[classLabel],
127 iter.GetInstanceIdentifier());
133 template<
class TSample >