Cool. Those projects look interesting.
The most similar interface we have for doing multi-class classification is
Categorizer that provides the evaluate (predictMostLikely in your case), though we do separate the learning algorithm from the learned object. We don't have a specific interface for predicting a distribution versus the maximum likelihood, though some of them do provide that capability, as you've found. There is the
DiscriminantCategorizer, though that is mostly currently used for being able to produce rankings or confidence of outputs.
I don't think the CategorizationTree currently stores the category distribution per leaf node, though it is probably something we could add. I have been thinking that some applications want to store different data in the nodes of a tree besides just the label, so another approach might be to make it so that a mechanism for creating the tree nodes can be provided. That may be a little overkill in your case though.
It may be good to add an interface for this as well for a more standard way to get out the category distribution. The output could maybe either be a Vector or some kind of ScalarMap. I'd say a DataDistribution, though with something like a neural network you may get negative values for category estimates, which are more scores than probabilities.
Thanks, : )
Justin