[英]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))
觀察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))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.