N個向量間的兩兩皮爾遜係數的矩陣計算方法
阿新 • • 發佈:2018-11-08
目的:有N個行向量
需要計算兩兩之間的皮爾遜係數,最簡單的辦法就是兩個for迴圈,分別計算就搞定了。但是,如果n的值不大這樣還ok,一旦n的值很大一般在10W左右,再迴圈效率損失就不小了,在做科學計算的時候,能用矩陣運算的就儘量別用迴圈太耗時!
PS:程式碼裡連矩陣運算都沒有還怎麼愉快的裝X啊,哈哈
======================我是隻想安安靜靜寫程式碼的分割線===================
兩個向量的皮爾遜係數計算公式:
有個更簡單的計算公式:
根據公式寫出對應的程式碼:
# 計算兩序列的皮爾遜係數,數值越大相關性越大
def get_distance(self, vector1, vector2):
num1 = vector1 - np.average(vector1)
num2 = vector2 - np.average(vector2)
num = np.sum(num1 * num2)
den = np.sqrt(np.sum(np.power(num1,2)) * np.sum(np.power(num2,2)))
if den == 0:
return 0.0
return np.abs(num/den)
現在來利用矩陣重寫上述公式:
則有: