gpt4 book ai didi

python - 在 python 中使用 scipy 的 kmeans2 函数

转载 作者:太空狗 更新时间:2023-10-30 00:45:15 25 4
gpt4 key购买 nike

我找到了 this在 python 中使用 kmeans2 算法的示例。我无法获取以下部分

# make some z vlues
z = numpy.sin(xy[:,1]-0.2*xy[:,1])

# whiten them
z = whiten(z)

# let scipy do its magic (k==3 groups)
res, idx = kmeans2(numpy.array(zip(xy[:,0],xy[:,1],z)),3)

点是zip(xy[:,0],xy[:,1]),那么第三个值z在这里做什么呢?

还有什么是美白?

任何解释表示赞赏。谢谢。

最佳答案

首先:

# make some z vlues
z = numpy.sin(xy[:,1]-0.2*xy[:,1])

最奇怪的是它等同于:

z = numpy.sin(0.8*xy[:, 1])

所以不知道为什么要这样写。可能有错字?

接下来,

# whiten them
z = whiten(z)

白化只是将总体的方差归一化。请在此处查看演示:

>>> z = np.sin(.8*xy[:, 1])      # the original z
>>> zw = vq.whiten(z) # save it under a different name
>>> zn = z / z.std() # make another 'normalized' array
>>> map(np.std, [z, zw, zn]) # standard deviations of the three arrays
[0.42645, 1.0, 1.0]
>>> np.allclose(zw, zn) # whitened is the same as normalized
True

我不太明白为什么它是白的。无论如何,继续前进:

# let scipy do its magic (k==3 groups)
res, idx = kmeans2(numpy.array(zip(xy[:,0],xy[:,1],z)),3)

让我们把它分成两部分:

data = np.array(zip(xy[:, 0], xy[:, 1], z))

这是一种奇怪(且缓慢)的写作方式

data = np.column_stack([xy, z])

无论如何,您从两个数组开始并将它们合并为一个:

>>> xy.shape
(30, 2)
>>> z.shape
(30,)
>>> data.shape
(30, 3)

然后是传递给kmeans算法的数据:

res, idx = vq.kmeans2(data, 3)

现在您可以看到传递给算法的是 3d 空间中的 30 个点,令人困惑的部分是如何创建这些点集。

关于python - 在 python 中使用 scipy 的 kmeans2 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20271520/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com