重要參數max_iter & tol:讓迭代停下來
之前描述K-Means的基本流程時我們提到過,當質心不再移動,K-Means算法就會停下來。但在完全收斂之前,我們也可以使用max_iter,最大迭代次數,或者tol,兩次迭代間Inertia下降的量,這兩個參數來讓迭代提前停下來。有時候,當我們的n_clusters選擇不符合數據的自然分佈,或者爲了業務需求,必須要填入與數據的自然分佈不合的n_clusters,提前讓迭代停下來反而能夠提升模型的表現。
max_iter:
整數,默認300
單次運行K-Means允許的最大迭代次數
tol:
浮點數,默認1e-4
兩次迭代間Inertia下降的量,如果兩次迭代之間Inertia下降的值小於tol所設定的值,迭代就會停下
再次使用我們在博文《sklearn機器學習:K-Means》中建立的各向同性高斯團簇的數據點集:
random = KMeans(n_clusters=4,init='random',max_iter=1,
random_state=420).fit(X)
y_pred = random.labels_
silhouette_score(X,y_pred)
0.649675191871833
#max_iter默認值300
random = KMeans(n_clusters=4,init='random',
random_state=420).fit(X)
y_pred = random.labels_
silhouette_score(X,y_pred)
0.6505186632729437
可見,適當的max_iter提前讓迭代停下來反而能夠提升模型的表現。