Joint spatial clustering: How to force clusters to minimally contain datapoints from all datasets I want to jointly cluster datapoints coming from different datasets (50 datasets with around 2000 points each). I would like to then extract information associated to the datapoints belonging to the different clusters to compare aspects of the datasets.

Now my problem is that if I just place the datapoints originating from the different datasets into the same feature space, too few clusters comprise datapoints coming from all datasets simultaneously, so that after filtering I'm left with too few clusters (I tried with kmeans and similar methods).

My question is: Which is the best way to jointly cluster my points while imposing the condition that a given cluster should contain points from all datasets? The ideal solution would also allow some outliers to not fulfill this condition. The first thing I could think about is to define distances between points and clusters which are updated depending on whether a point belonging to the same dataset is already present in the cluster? Seems too far fetched though.

I would appreciate any ideas, thanks a lot in advance!

Edit: Three of my six features are spatial coordinates and ideally I would also want the clusters to be connected within a given dataset.
I don't understand the purpose of imposing a condition that requires any cluster to contain at least some (let's say even 1) point from every dataset but at the same time find a solution that also allows that condition to be broken by outliers (I assume these are specific cluster outliers or data set outliers?).  

Have you considered implementing an overlapping cluster algorithm?  You don't get the full distinctness of a traditional single membership but your might better fit your data to an algorithm that achieves the desired condition.  It will probably require some exploration of the data and testing for cluster membership after the fact.