코딩걸음마

[클러스터링] K-means, DBSCAN, HDBSCAN 본문

머신러닝 템플릿

[클러스터링] K-means, DBSCAN, HDBSCAN

코딩걸음마 2022. 7. 20. 00:25
728x90

K-means

from sklearn.cluster import KMeans

# kmeans : 모델 객체 생성
model_km = KMeans(n_clusters=6, random_state=0).fit(datas)

# 예측 데이터 생성
pred_km = model_km.fit_predict(datas)

# 데이터 프레임 만들기
df = pd.DataFrame(datas)
df["labels"] = pred_km

df.tail(2)

시각화

# 그래프 그리기
plt.scatter(df[0], df[1], c=df["labels"], cmap="rainbow", alpha=0.3)
plt.show()

 

DBSCAN

from sklearn.cluster import DBSCAN

# 모델 객체 생성
model_ds = DBSCAN(eps=0.02, min_samples=3).fit(datas)

# 예측 데이터 생성
pred_ds = model_ds.fit_predict(datas)

# 데이터 프레임 만들기
df = pd.DataFrame(datas)
df["labels"] = pred_ds

df.tail(2)

시각화

np.unique(df["labels"])

# 그래프 그리기
plt.scatter(df[0], df[1], c=df["labels"], cmap="rainbow", alpha=0.3)
plt.show()

 

HDBSCAN

import sklearn.datasets as data
import hdbscan
clusterer = hdbscan.HDBSCAN(min_cluster_size=5, gen_min_span_tree=True)
clusterer.fit(test_data)

 

# 클러스터를 몇개로 하면 좋을지 알려줌
clusterer.condensed_tree_.plot(select_clusters=True, selection_palette=sns.color_palette())
plt.show()

시각화

palette = sns.color_palette()
cluster_colors = [sns.desaturate(palette[col], sat)
                  if col >= 0 else (0.5, 0.5, 0.5) for col, sat in
                  zip(clusterer.labels_, clusterer.probabilities_)]
plt.scatter(test_data.T[0], test_data.T[1], c=cluster_colors, **plot_kwds)
plt.show()

728x90
Comments