145 MeasurementVectorType;
147 SampleType::Pointer sample = SampleType::New();
148 sample->SetMeasurementVectorSize(1);
180 NormalGeneratorType::Pointer normalGenerator = NormalGeneratorType::New();
182 normalGenerator->Initialize(101);
184 MeasurementVectorType mv;
186 double standardDeviation = 30;
187 for (
unsigned int i = 0; i < 100; ++i)
189 mv[0] = (normalGenerator->GetVariate() * standardDeviation) + mean;
190 sample->PushBack(mv);
193 normalGenerator->Initialize(3024);
195 standardDeviation = 30;
196 for (
unsigned int i = 0; i < 100; ++i)
198 mv[0] = (normalGenerator->GetVariate() * standardDeviation) + mean;
199 sample->PushBack(mv);
213 TreeGeneratorType::Pointer treeGenerator = TreeGeneratorType::New();
215 treeGenerator->SetSample(sample);
216 treeGenerator->SetBucketSize(16);
217 treeGenerator->Update();
248 typedef TreeGeneratorType::KdTreeType TreeType;
250 EstimatorType::Pointer estimator = EstimatorType::New();
252 EstimatorType::ParametersType initialMeans(2);
253 initialMeans[0] = 0.0;
254 initialMeans[1] = 0.0;
256 estimator->SetParameters(initialMeans);
257 estimator->SetKdTree(treeGenerator->GetOutput());
258 estimator->SetMaximumIteration(200);
259 estimator->SetCentroidPositionChangesThreshold(0.0);
260 estimator->StartOptimization();
262 EstimatorType::ParametersType estimatedMeans = estimator->GetParameters();
264 for (
unsigned int i = 0; i < 2; ++i)
266 std::cout <<
"cluster[" << i <<
"] " << std::endl;
267 std::cout <<
" estimated mean : " << estimatedMeans[i] << std::endl;
301 <MeasurementVectorType> MembershipFunctionType;
303 DecisionRuleType::Pointer decisionRule = DecisionRuleType::New();
306 ClassifierType::Pointer classifier = ClassifierType::New();
309 classifier->SetSample(sample);
310 classifier->SetNumberOfClasses(2);
312 std::vector<unsigned int> classLabels;
313 classLabels.resize(2);
314 classLabels[0] = 100;
315 classLabels[1] = 200;
317 classifier->SetMembershipFunctionClassLabels(classLabels);
336 std::vector<MembershipFunctionType::Pointer> membershipFunctions;
338 MembershipFunctionType::OriginType origin(
339 sample->GetMeasurementVectorSize());
341 for (
unsigned int i = 0; i < 2; ++i)
343 membershipFunctions.push_back(MembershipFunctionType::New());
344 for (
unsigned int j = 0; j < sample->GetMeasurementVectorSize(); ++j)
346 origin[j] = estimatedMeans[index++];
348 membershipFunctions[i]->SetOrigin(origin);
349 classifier->AddMembershipFunction(membershipFunctions[i].GetPointer());
352 classifier->Update();
363 ClassifierType::OutputType* membershipSample =
364 classifier->GetOutput();
365 ClassifierType::OutputType::ConstIterator iter = membershipSample->Begin();
367 while (iter != membershipSample->End())
369 std::cout <<
"measurement vector = " << iter.GetMeasurementVector()
370 <<
"class label = " << iter.GetClassLabel()