Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 消息不适合sklearn k-means收敛实现_Python_Scikit Learn_K Means - Fatal编程技术网

Python 消息不适合sklearn k-means收敛实现

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(中心旧-中心) 如果我找到了中心移位总量。转到文件:\

为了重新使用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(中心旧-中心)

如果我找到了中心移位总量。转到文件:
\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是的,我看了一下,但我不确定它到底是如何工作的,我想我不会对它提出拉取请求。我创建了(包括复制示例)