复杂的数学公式 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))
## 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))