def plotDBSCAN(DBSValues, DBSClasses): X = DBSValues y = DBSClasses.values.flatten() #Play with the parameters here #default settings: eps=0.5, min_samples=5 DBSModel = DBSCAN(eps=0.2, min_samples=5).fit(X) DBSexpected = y DBSpredicted = DBSModel.labels_ #print(DBSexpected) #print(DBSpredicted) f_performance_measures = open("Clustering/DBS_performance_measures.txt", 'w') f_performance_measures.write("-----------------Model----------------") f_performance_measures.write("\n") f_performance_measures.write(DBSModel.__str__()) f_performance_measures.write("\n") f_performance_measures.write("--------------------------------------") f_performance_measures.write("\n") f_performance_measures.write("Homogeneity: %0.3f" % metrics.homogeneity_score(DBSexpected, DBSpredicted)) f_performance_measures.write("\n") f_performance_measures.write("Completeness: %0.3f" % metrics.completeness_score(DBSexpected, DBSpredicted)) f_performance_measures.write("\n") f_performance_measures.write("V-measure: %0.3f" % metrics.v_measure_score(DBSexpected, DBSpredicted)) f_performance_measures.write("\n") f_performance_measures.write("Adjusted Rand Index: %0.3f" % metrics.adjusted_rand_score(DBSexpected, DBSpredicted)) f_performance_measures.write("\n") f_performance_measures.write("Adjusted Mutual Information: %0.3f" % metrics.adjusted_mutual_info_score(DBSexpected, DBSpredicted)) f_performance_measures.write("\n") f_performance_measures.write("Silhouette Coefficient: %0.3f" % metrics.silhouette_score(X, DBSpredicted)) f_performance_measures.close() core_samples_mask = np.zeros_like(DBSModel.labels_, dtype=bool) core_samples_mask[DBSModel.core_sample_indices_] = True unique_labels = set(y) colors = [plt.cm.Spectral(each) for each in np.linspace(0, 1, len(unique_labels))] for k, col in zip(unique_labels, colors): if k == -1: # Black used for noise. col = [0, 0, 0, 1] class_member_mask = (y == k) xy = X[class_member_mask & core_samples_mask] plt.plot(xy[:, 0], xy[:, 1], 'o', markerfacecolor=tuple(col), markeredgecolor='k', markersize=14) xy = X[class_member_mask & ~core_samples_mask] plt.plot(xy[:, 0], xy[:, 1], 'o', markerfacecolor=tuple(col), markeredgecolor='k', markersize=6) plt.savefig("Clustering/cluster_DBScan.png")