def run(centroids,data_pnts,k,outfile_1,outfile_2 = None): old_centroids = np.empty(centroids.shape) count = 0 # plt.figure() # Iterate until convergence # print centroids total_cost = [] while (not is_stop(old_centroids,centroids,count)): old_centroids = centroids # dic maps centroids with data points temp = assign_centroids(data_pnts,centroids,k) dic = temp[0] cost = temp[1] centroids = gen_new_centroids(dic) total_cost.append([cost,count]) count +=1 # outputs iteration graph # plt.savefig(outfile_1) # outputs final graph, with all scatter points if outfile_2: utils.plot_final(dic,outfile_2) return total_cost
def run(data_pnts,k): '''Runs the whole program''' package = initialize(data_pnts,k) count = 0 old_package = None while not converges(package,count,data_pnts,k,old_package): old_package = package dic = e_step(data_pnts,k,package) package = m_step(data_pnts,k,dic) count += 1 final_dic = form_clusters(dic,data_pnts) utils.plot_final(final_dic,"gmm.png") return (final_dic,dic)