Clustering algorithms are a type of unsupervised learning that groups unlabeled data points together based on similarities. There are many different clustering methods that can handle numeric and/or symbolic data in either hierarchical or flat clustering structures. One simple and commonly used algorithm is k-means clustering, which assigns data points to k clusters based on minimizing distances between points and assigned cluster centers. K-means clustering has advantages of being simple and automatically assigning data points but has disadvantages such as needing to pre-specify the number of clusters and being sensitive to outliers.