クラスタリング : DBSCAN の実装
クラスタリングアルゴリズムの中で、クラスタが球状という前提を持たずに、
クラスタラベルを割り当てる。
from sklearn.datasets import make_moons X, y = make_moons( n_samples=200, noise=0.05, random_state=0 ) plt.scatter(X[:, 0 ], X[:, 1]) plt.tight_layout() plt.show()
from sklearn.cluster import DBSCAN """ コア点、ボーダー点、ノイズ点 にラベル付を行う。 eps : 隣接点とみなす 2 点間の最大距離 min_samples : ボーダー点の最大個数 metric : 距離の計算方法 """ db = DBSCAN(eps=0.2, min_samples=5, metric='euclidean') y_db = db.fit_predict(X) plt.scatter(X[y_db == 0, 0], X[y_db == 0, 1], c='lightblue', marker='o', s=40, edgecolor='black', label='cluster 1') plt.scatter(X[y_db == 1, 0], X[y_db == 1, 1], c='red', marker='s', s=40, edgecolor='black', label='cluster 2') plt.legend() plt.tight_layout() #plt.savefig('images/11_16.png', dpi=300) plt.show()