# Is there an algorithm for categorizing unlabeled samples into K classes? [closed]

I am not sure if this would be considered unsupervised, or semi-supervised learning. I am looking for an algorithm that will take N input arrays of features, and then cluster samples(not features) into a user-specified amount of classes.

For example, let's say we had data that we knew were images of circles, squares, and triangles. In this case, I would be able to specify 3 classes, and the desired outcome would be that it would separate out the circles, squares, and triangles.

Also, if there is such algorithms, are they any good? Thanks.