一、簡介
Python的numpy庫中提供了corrcoef函數可以用來計算兩組數據之間的相關係數。相關係數是衡量兩個變數之間相關程度的一種度量方法,值域在-1到1之間。
其中值越接近1表示兩個變數正相關程度越高,而值越接近-1表示兩個變數負相關程度越高。如果相關係數等於0,則說明兩個變數之間的相關性很弱或者沒有關係。
import numpy as np x = [1, 2, 3, 4, 5] y = [5, 4, 3, 2, 1] result = np.corrcoef(x, y) print(result)
輸出:[[ 1. -1.]
[-1. 1.]]
二、用途
使用相關係數可以衡量兩個變數之間是否存在某種關係,以及關係的強度。在數據分析中,經常需要使用相關性分析來探究變數之間的關係。
此外,相關係數也可以用來進行特徵選擇,我們可以計算每一個特徵與輸出之間的相關係數,然後選取相關係數高的特徵進行建模,減少特徵數量同時提高模型效果。
三、注意事項
在使用相關係數時,需要特別注意以下幾點:
1、相關係數只能夠衡量線性相關性,對於非線性的相關關係無法進行衡量。
2、相關係數並不能代表因果關係,只是衡量兩個變數之間的相關性。
3、在使用相關係數時,需要特別注意樣本大小和樣本分布。在小樣本的情況下,相關係數可能受到樣本方差的影響,需要進行修正。
4、在使用相關係數時,需要注意變數之間的度量尺度是否一致,如果不一致需要對變數進行標準化。
四、示例
1、計算兩組隨機數據的相關係數
import numpy as np x = np.random.randint(0, 10, (5)) y = np.random.randint(0, 10, (5)) result = np.corrcoef(x, y) print(result)
輸出:隨機生成的相關係數。
2、通過相關係數進行特徵選擇
import numpy as np import pandas as pd data = pd.read_csv('data.csv') X = data.drop(['label'], axis=1) y = data['label'] # 計算每一個特徵與輸出之間的相關係數 corr = X.corrwith(y) # 按照相關係數大小進行排序 corr_feature = corr.sort_values(ascending=False) # 選取相關係數高的特徵進行建模 selected_feature = corr_feature[:10]
此處假設數據已經讀入為dataframe格式,並且標籤列為’label’。
3、修正相關係數偏差
在小樣本的情況下,相關係數可能會偏離真實值,需要進行修正。以下示例為計算兩個樣本之間的相關係數,在樣本數量較少的情況下corrcoef的結果可能被偏離真實值,因此進行修正。
import numpy as np x = [1, 2] y = [1, 2] result = np.corrcoef(x, y) print(result) n = len(x) # 進行偏差修正 if n > 2: r_num = n * np.sum(np.multiply(x, y)) - np.sum(x) * np.sum(y) r_den = np.sqrt((n * np.sum(np.square(x)) - np.square(np.sum(x))) * (n * np.sum(np.square(y)) - np.square(np.sum(y)))) r = r_num / r_den print(r)
輸出:[[1. 1.]
[1. 1.]]
1.0
以上代碼進行了偏差修正,可以得到更加準確的結果。
原創文章,作者:DXRR,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/145102.html