Python 消息不适合sklearn k-means收敛实现
为了重新使用scikit learn KMeans中实现的k-means收敛标准,我需要理解基于tensorflow的k-means实现,但我希望解释以下观察结果: KMeans与以下消息会合: 迭代45,惯性6.993125中心偏移2.610457e-03 公差8.374284e-06 (第442ff行,功能_kmeans_single_lloyd)中的实现如下:Python 消息不适合sklearn k-means收敛实现,python,scikit-learn,k-means,Python,Scikit Learn,K Means,为了重新使用scikit learn KMeans中实现的k-means收敛标准,我需要理解基于tensorflow的k-means实现,但我希望解释以下观察结果: KMeans与以下消息会合: 迭代45,惯性6.993125中心偏移2.610457e-03 公差8.374284e-06 (第442ff行,功能_kmeans_single_lloyd)中的实现如下: center\u shift\u total=squared\u norm(中心旧-中心) 如果我找到了中心移位总量。转到文件:\
center\u shift\u total=squared\u norm(中心旧-中心)
如果我找到了中心移位总量。转到文件:\u k\u表示_elkan.pyx
第243行(在0.23.1中)。在主分支中,它将是第245行
if verbose:
print('Iteration %i, inertia %s'
% (iteration, np.sum((X_ - centers_[labels]) ** 2 *
sample_weight[:,np.newaxis])))
center_shift_total = np.sum(center_shift)
if center_shift_total ** 2 < tol:
if verbose:
print("center shift %e within tolerance %e"
% (center_shift_total, tol))
break
如果冗长:
打印('迭代%i,惯性%s'
%(迭代,np.sum((X_uu-中心u[labels])**2*
样本(重量[:,np.newaxis]))
中心移位总=np.和(中心移位)
如果中心移位总数**2
它似乎在检查中心偏移量\u总数的平方。而在k_内部,则表示uu.py
正在检查中心移位u总计
。您可以使用以下命令告诉我们sklearn的版本:打印(sklearn.\uu version uu)
。当然,在Ubuntu18.04 LTSExcellent上可以找到sklearn 0.21.3和python 3.7.4!通过指定algorithm=“full”我现在确实得到了预期的结果。elkan方法中的平方是一个错误,因为elkan应该提供与“完全”相同的结果,只是由于使用了三角形不等式而减少了一些计算。我发现了这个相关的(封闭的)问题:您是否能够制定PR(删除“**2”)?不幸的是,它似乎更复杂:我在scikit learn的一个分支中删除了“**2”,但仍然为algorithm=“full”和algorithm=“elkan”获得了不同的惯性值和n_iter_uuu值分别。@Barden是的,我看了一下,但我不确定它到底是如何工作的,我想我不会对它提出拉取请求。我创建了(包括复制示例)