[vtkusers] K-means values

Sara Rolfe smrolfe at u.washington.edu
Fri Mar 18 19:30:16 EDT 2011


I agree.  I also think that the example on the  wiki might be more  
helpful if it showed this method of accessing the means.

However, I'm still having some trouble accessing the first block of  
the k-means output, when I use:

	vtkTable* tab = vtkTable::SafeDownCast( kMeansStatistics- 
 >GetOutputDataObject( 1 ).GetBlock( 0 ) );

or just
	kMeansStatistics->GetOutputDataObject( 1 ).GetBlock( 0 )

I'm getting the following error:

error: request for member ‘GetBlock’ in ‘kMeansStatistics.  
vtkSmartPointer<T>::operator-> [with T = vtkKMeansStatistics]()- 
 > 
vtkKMeansStatistics 
::< 
anonymous 
 > 
.vtkStatisticsAlgorithm 
::< 
anonymous 
 > 
.vtkTableAlgorithm::<anonymous>.vtkAlgorithm::GetOutputDataObject(1)’,  
which is of non-class type ‘vtkDataObject*’

Does anyone know what might cause this?

Thanks,
Sara

On Mar 16, 2011, at 5:32 PM, David Doria wrote:

> On Wed, Mar 16, 2011 at 4:07 PM, Sara Rolfe  
> <smrolfe at u.washington.edu> wrote:
>>
>> Hi David,
>>
>> It's not a difficult fix, I mainly found it awkward since I thought  
>> I was missing something simple.  I understand how it works better  
>> now and can certainly implement it this way.  I appreciate your  
>> clarification.
>>
>> Sara
>
> If you recall, I had the same sort of "it feels awkward" issues a
> while back. I think the problem is that the suite is very very capable
> and able to hand very large and serious problems, but many users just
> want the "very basic" functionality ("which points belong to which
> cluster?", and "what are the cluster means?"), which is hard to get
> at. There are many layers of complexity above that that a user must
> understand (i.e. this "Learn" and "Derive" that you mentioned) that
> are not concepts in a standard textbook explanation of kmeans
> clustering. Providing a "simple" interface to do this "one pass" type
> of thing would definitely be a nice addition.
>
> That is, replace:
>
>  kMeansStatistics->SetLearnOption( 1 ); // This is on by default.
>  kMeansStatistics->SetMaxNumIterations( 1 );
>  vtkTable* tab = vtkTable::SafeDownCast(
> kMeansStatistics->GetOutputDataObject( 1 ).GetBlock( 0 ) );
>  double xc = tab->GetValueByName( label, "x" ).ToDouble();
>
> with
>
> double mean0[3];
> kMeans->GetMean(0,mean0);
>
> See the difference :) ?
>
> David D.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20110318/a122df80/attachment.htm>


More information about the vtkusers mailing list