复杂的数学公式 Python

Complex math formula Python

我一直在尝试在 python 中编写数学公式。代码是 运行 但我坚信代码没有反映实际的数学公式,但我迷路了,我不知道我哪里出错了。下面是我的代码,我附上了实际的数学公式。请检查 python 代码是否与数学公式匹配 - 如果不匹配,请协助我出错的地方。老实说,我很迷茫。

## Inter cluster distance
inter = 0 
for i in range(centr.shape[1]-1):
  for j in range(i+1,centr.shape[1]):
    for l in range(centr.shape[0]):
      inter = inter + (centr[l][i]-centr[l][j])**2    
print('Intercluster distance: '+ str(inter))
## Intra cluster cluster
intra = 0
for i in range(data.shape[0]):
  for j in range(centr.shape[0]):[enter image description here][2]
    intra = intra + (data[i][j] - centr[j][Cc[i]-1])**2
print('Intracluster distance: '+ str(intra))

Math equation intra-cluster distance Mth equation inter-cluster distance

My code in python

观察 range 构造函数的工作原理:

>>> list(range(3))
[0, 1, 2]

>>> list(range(1, 3))
[1, 2]

因此默认起始值​​为0,并且从不包括终止值。因此,您需要稍微不同的开始值和停止值。

此外,与您给出的公式相比,您代码中矩阵元素 z 的索引可能都相差 1 个单位,因为 Python 索引的工作方式与 range 类似,从 0 开始,而在公式中,它们显然从 1 开始。

例如对于簇间距离,我们应该有这样的代码:

## Inter cluster distance
inter = 0 
for i in range(1, centr.shape[1]):
    for j in range(i+1, centr.shape[1] + 1):
        for l in range(1, 3 + 1):
            inter = inter + (centr[l - 1][i - 1] - centr[l - 1][j - 1])**2    
print('Intercluster distance: '+ str(inter))

或者您可以将索引 i, j, l 缩小一个单位并相应地索引 z 值,这应该会产生相同的结果:

## Inter cluster distance
inter = 0 
for i in range(centr.shape[1] - 1):
    for j in range(i, centr.shape[1]):
        for l in range(3):
            inter = inter + (centr[l][i] - centr[l][j])**2    
print('Intercluster distance: '+ str(inter))