This document discusses clustering and factorization techniques in SystemML. It begins by describing k-means clustering, including how it takes as input a matrix of records and clusters them to minimize within-cluster sum of squares. It also discusses k-means++ initialization and the standard k-means algorithm. The document then describes weighted non-negative matrix factorization, which approximates a data matrix as the product of two non-negative matrices to find latent topics. It discusses optimizations for WNMF like operator fusion to reduce computation.