簡體   English   中英

復數數學公式 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))

數學方程簇內距離Mth方程簇間距離

我在 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))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM