자료를 공개한 저자 오렐리앙 제롱에게 깊은 감사를 드립니다. 이와 더불어 한빛미디어로부터 강의준비에 필요한 자료를 지원받았음을 밝히며, 이에 대해 진심어린 감사를 전합니다.
n_clusters
) 지정해야 함.from sklearn.cluster import KMeans
k = 5
kmeans = KMeans(n_clusters=k, random_state=42)
y_pred = kmeans.fit_predict(X)
score()
메서드가 측정. (음수 기준)n_init = 10
이 기본값으로 사용됨. 즉, 10번 학습 후 가장 낮은 관성을 갖는 모델 선택.KMeans
모델의 기본값으로 사용됨.algorithm=elkan
: 학습 속도 향상됨. algorithm=full
: 희소데이터에 대한 기본값.MiniBatchMeans
from sklearn.cluster import MiniBatchKMeans
minibatch_kmeans = MiniBatchKMeans(n_clusters=5, random_state=42)
minibatch_kmeans.fit(X)
memmap
활용¶MiniBatchKMeans
의 partial_fit()
메서드 활용k=4
선택 가능.k=5
도 좋은 선택이 될 수 있음.k=5
가 보다 좋은 모델임.segmented_imgs = []
n_colors = (10, 8, 6, 4, 2)
for n_clusters in n_colors:
kmeans = KMeans(n_clusters=n_clusters, random_state=42).fit(X)
segmented_img = kmeans.cluster_centers_[kmeans.labels_]
segmented_imgs.append(segmented_img.reshape(image.shape))
pipeline = Pipeline([
("kmeans", KMeans(n_clusters=50, random_state=42)),
("log_reg", LogisticRegression(multi_class="ovr", solver="lbfgs", max_iter=5000, random_state=42)),
])
pipeline.fit(X_train, y_train)
param_grid = dict(kmeans__n_clusters=range(2, 100))
grid_clf = GridSearchCV(pipeline, param_grid, cv=3, verbose=2)
grid_clf.fit(X_train, y_train)
eps
: $\varepsilon$-이웃 범위min_samples
: $\varepsilon$ 반경 내에 위치하는 이웃의 수min-samples
개의 이웃을 갖는 샘플from sklearn.cluster import DBSCAN
dbscan = DBSCAN(eps=0.05, min_samples=5)
dbscan.fit(X)
predict()
메서드 지원하지 않음.KNeighborsClassifier
등 보다 좋은 성능의 분류 알고리즘 활용 가능.from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=50)
knn.fit(dbscan.components_, dbscan.labels_[dbscan.core_sample_indices_])
eps
가 커질 경우.GaussianMixture
모델 적용n_components
: 군집수 지정n_init
: 모델 학습 반복 횟수. from sklearn.mixture import GaussianMixture
gm = GaussianMixture(n_components=3, n_init=10, random_state=42)
gm.fit(X)
covariance_type
설정.BIC: Bayesian information criterion
$$ \log(m)\, p - 2 \log (\hat L)$$
AIC: Akaike information criterion
$$ 2\, p - 2 \log (\hat L)$$
n_components
에 전달해야 함.from sklearn.mixture import BayesianGaussianMixture
bgm = BayesianGaussianMixture(n_components=10, n_init=10, random_state=42)
bgm.fit(X)
>>> np.round(bgm.weights_, 2)
array([0.4 , 0.21, 0.4 , 0. , 0. , 0. , 0. , 0. , 0. , 0. ])
weight_concentration_prior
하이퍼파라미터n_components
에 설정된 군집수에 대한 규제로 사용됨.n_components
에 설정된 군집수가 유지되도록 함.감사의 글: 슬라이드에 사용할 이미지를 제공한 한빛아카데미에 감사드립니다.