sklearn机器学习:K-Means之提前停止迭代

重要参数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提前让迭代停下来反而能够提升模型的表现。

你可能感兴趣的:(机器学习,算法,Python,机器学习,算法,python,KMeans,迭代次数)