Characterize a point cloud Background: I have multiple point clouds (sets of objects) $\{S_i\}_{i\in\mathbb{N}}$ of variable size and "purity" (meaning that some sets contain very similar objects, some show a high diversity; some sets are large, some are small). Each object is characterized by a $n$-dimensional continuous feature vector $v_j \in \mathbb{R}^n$, each set can therefore be seen as a matrix $M_i \in \mathbb{R}^{|S_i| \times n}$.

I want to classify these point clouds using a binary classifier into "pure" and "diverse".

Idea: I was thinking about covariance. This way every point cloud is represented by its $n \times n$ covariance matrix.

Question: What other features can I use to characterize the individual point clouds? How else can I transform these matrices of different shape to representations of fixed length representations that can be passed on to a classifier?
You can use essentially any centroid-based clustering algorithm to define a notion of "coherence" or "purity" of a cluster. Let's say you've chosen some particular metric $||\cdot||$ on $\mathbb{R}^n$ (I'm using norm notation but any metric will do). Using your notation, $S_i$ is the $i$th "cluster". For each $S_i$, find the* point $c_i\in\mathbb{R}^n$ that minimizes
$$ F(c):=\sum_{x\in S_i}||x-c||\qquad(*)$$
over all $c\in\mathbb{R}^n$. Let $F(c_i)$ be the purity score of $S_i$; it might actually be better to consider the normalized version $F(c_i)/|S_i|$. Smaller values means more homogeneity or "purity".

*How to do this computationally? Try (sub)gradient descent. If the minimum is not unique then break ties arbitrarily.