similar to clustering methods we can add a fit_predict to do fit and predict in a single function call