k表示使用numpy - 计算每次迭代的误差

时间:2016-11-20 19:34:44

标签: python numpy scipy k-means

我正在尝试使用numpy / scipy的k-means算法之一来为学校项目执行图像量化(减少图像的颜色数量)。该算法工作正常,但我也想计算算法的每次迭代的误差之和,e.i。样本到最近的聚类中心的距离之和(这是项目任务之一)。 我找不到任何kmeans方法的numpy或其他快速,优雅的方式做这个。 是否有这样的方法或方法,如果没有,执行此任务的最佳方法是什么?我的目标是尽量减少现有kmeans算法的重新实现。

下面我添加了我的代码

import scipy.cluster.vq as vq

def quantize_rgb(im_orig, n_quant, n_iter):
    """
    A function that performs optimal quantization of a given RGB image.
    :param im_orig: the input RGB image to be quantized (float32 image with values in [0, 1])
    :param n_quant: the number of intensities the output image should have
    :param n_iter: the maximum number of iterations of the optimization procedure (may converge earlier.)
    """
    reshaped_im = im_orig.reshape(im_orig.shape[0] * im_orig.shape[1], 3)
    centroids, label = vq.kmeans2(reshaped_im, n_quant, n_iter)
    reshaped_im = centroids[label]
    im_quant = reshaped_im.reshape(im_orig.shape[0], im_orig.shape[1], 3)

    return im_quant

1 个答案:

答案 0 :(得分:1)

只需使用

vq.kmeans2(k=previous_centers, iter=1, minit="matrix")

一次只执行一次迭代