我想使用Scikit Learn 的这个 DBSCAN 聚类算法示例进行一些数据探索。我想迭代eps. 因此,我对以下代码进行了不同的修改,该代码从第二个 for 循环中取出最后一个图,格式为右下角。:print(__doc__)import matplotlib.pyplot as pltimport numpy as npfrom sklearn.cluster import DBSCANfrom sklearn import metricsfrom sklearn.datasets.samples_generator import make_blobsfrom sklearn.preprocessing import StandardScalereps = [0.1, 0.2, 0.3, 0.4]plt.figure(figsize=(15,8))for i in eps: # ############################################################################# # Generate sample data centers = [[1, 1], [-1, -1], [1, -1]] X, labels_true = make_blobs(n_samples=750, centers=centers, cluster_std=0.4, random_state=0) X = StandardScaler().fit_transform(X) # ############################################################################# # Compute DBSCAN db = DBSCAN(eps=i, min_samples=10).fit(X) core_samples_mask = np.zeros_like(db.labels_, dtype=bool) core_samples_mask[db.core_sample_indices_] = True labels = db.labels_ # Number of clusters in labels, ignoring noise if present. n_clusters_ = len(set(labels)) - (1 if -1 in labels else 0) n_noise_ = list(labels).count(-1) print('Estimated number of clusters: %d' % n_clusters_) print('Estimated number of noise points: %d' % n_noise_) print("Homogeneity: %0.3f" % metrics.homogeneity_score(labels_true, labels)) print("Completeness: %0.3f" % metrics.completeness_score(labels_true, labels)) print("V-measure: %0.3f" % metrics.v_measure_score(labels_true, labels)) print("Adjusted Rand Index: %0.3f" % metrics.adjusted_rand_score(labels_true, labels)) print("Adjusted Mutual Information: %0.3f" % metrics.adjusted_mutual_info_score(labels_true, labels)) print("Silhouette Coefficient: %0.3f" % metrics.silhouette_score(X, labels))但是,我想看到eps彼此相邻的子图的不同结果。这种格式的种类:[ ] [ ] [ ] [ ]附加问题:最后,我还想min_samples对 10、12 和 15进行迭代。如果我是对的,这将需要另一个 for 循环?
1 回答
宝慕林4294392
TA贡献2021条经验 获得超8个赞
我解决了我的问题,将定义更改plt.subplot(120 + i*1000 , title=i)为
iterator = 0
plt.subplot(220 + iterator, title=i)
iterator += 1
解释一定是因为i正在迭代一个浮点数数组。乘以 1000 可能不会产生完美的 1、2、3、4,但会产生一些接近的结果,仍然保留除零以外的小数。这破坏了子图迭代的逻辑。基本上很简单的编辑,但我昨晚很努力。
添加回答
举报
0/150
提交
取消