def upload_all_groups(self, ): """ upload AffinityPropagation model for to define a users' group and updating all users :return None: """ dataset = [] users = [] count = Users.select().count() for i in range(0, count, 100): usrs = Users.select().offset(i).limit(100).execute() for u in usrs: users.append(model_to_dict(u)) for u in users: dataset.append(self.user_preparation(u)) from sklearn.cluster import AffinityPropagation clustering = AffinityPropagation(affinity='euclidean', convergence_iter=15, copy=True, damping=0.5, max_iter=200, preference=None, verbose=False).fit(dataset) all_users = Users.select().execute() for u in all_users: u.group = self.get_group(u) with db.atomic() as txn: try: Users.bulk_update(all_users, fields=[Users.group]) except peewee.Error as e: logger.error(str(e)) db.rollback() @test def unsave(): txn.rollback() @not_test def save(): import pickle pickle.dump(clustering, open(PATH_TO_DIR + "clustering", "wb"))