1. A method comprising: accessing, at a processor, observations which are unlabeled in that each observation belongs to one of a plurality of unknown classes; training a plurality of random decision trees to form a density forest using the unlabeled observations such that each random decision tree partitions the unlabeled observations into a plurality of clusters each represented by a probability distribution; aggregating the partitions from each of the trees to obtain a forest density which is a probability density function that describes the accessed observations.