本文目錄一覽:
- 1、如何利用python進行數據的相關性分析
- 2、相關性係數介紹+python代碼實現 correlation analysis
- 3、python計算多個數組的相關性
- 4、python相關性分析如何生成兩個相關性最強的兩門?
- 5、如何用python進行相關性分析
- 6、初學python,怎樣用python做pearson相關係數的檢驗呢,求指導啊
如何利用python進行數據的相關性分析
1. 運算優先級
括號、指數、乘、除、加、減
2
如果你使用了非 ASCII 字符而且碰到了編碼錯誤,記得在最頂端加一行 # — coding: utf-8 —
3. Python格式化字符
使用更多的格式化字符。例如 %r 就是是非常有用的一個,它的含義是“不管什麼都打印出來”。
%s — string
%% 百分號標記 #就是輸出一個%
%c 字符及其ASCII碼
%s 字符串
%d 有符號整數(十進制)
%u 無符號整數(十進制)
%o 無符號整數(八進制)
%x 無符號整數(十六進制)
%X 無符號整數(十六進制大寫字符)
%e 浮點數字(科學計數法)
%E 浮點數字(科學計數法,用E代替e)
%f 浮點數字(用小數點符號)
%g 浮點數字(根據值的大小採用%e或%f)
%G 浮點數字(類似於%g)
%p 指針(用十六進制打印值的內存地址)
%n 存儲輸出字符的數量放進參數列表的下一個變量中
%c 轉換成字符(ASCII 碼值,或者長度為一的字符串)
%r 優先用repr()函數進行字符串轉換(Python2.0新增)
%s 優先用str()函數進行字符串轉換
%d / %i 轉成有符號十進制數
%u 轉成無符號十進制數
%o 轉成無符號八進制數
%x / %X (Unsigned)轉成無符號十六進制數(x / X 代表轉換後的十六進制字符的大小寫)
%e / %E 轉成科學計數法(e / E控制輸出e / E)
%f / %F 轉成浮點數(小數部分自然截斷)
%g / %G : %e和%f / %E和%F 的簡寫
%% 輸出%
輔助符號 說明
* 定義寬度或者小數點精度
– 用做左對齊
+ 在正數前面顯示加號(+)
sp 在正數前面顯示空格
# 在八進制數前面顯示零(0),在十六進制前面顯示“0x”或者“0X”(取決於用的是“x”還是“X”)
0 顯示的數字前面填充“0”而不是默認的空格
m.n m 是顯示的最小總寬度,n 是小數點後的位數(如果可用的話)
相關性係數介紹+python代碼實現 correlation analysis
參考文獻:
1. python 皮爾森相關係數
2. 統計學之三大相關性係數(pearson、spearman、kendall)
皮爾森係數
重點關注第一個等號後面的公式,最後面的是推導計算,暫時不用管它們。看到沒有,兩個變量(X, Y)的皮爾森相關性係數(ρX,Y)等於它們之間的協方差cov(X,Y)除以它們各自標準差的乘積(σX, σY)。
公式的分母是變量的標準差,這就意味着計算皮爾森相關性係數時,變量的標準差不能為0(分母不能為0),也就是說你的兩個變量中任何一個的值不能都是相同的。如果沒有變化,用皮爾森相關係數是沒辦法算出這個變量與另一個變量之間是不是有相關性的。
皮爾森相關係數(Pearson correlation coefficient)也稱皮爾森積矩相關係數(Pearson product-moment correlation coefficient) ,是一種線性相關係數。皮爾森相關係數是用來反映兩個變量線性相關程度的統計量。相關係數用r表示,其中n為樣本量,分別為兩個變量的觀測值和均值。r描述的是兩個變量間線性相關強弱的程度。r的絕對值越大表明相關性越強。
簡單的相關係數的分類
0.8-1.0 極強相關
0.6-0.8 強相關
0.4-0.6 中等程度相關
0.2-0.4 弱相關
0.0-0.2 極弱相關或無相關
r描述的是兩個變量間線性相關強弱的程度。r的取值在-1與+1之間,若r0,表明兩個變量是正相關,即一個變量的值越大,另一個變量的值也會越大;若r0,表明兩個變量是負相關,即一個變量的值越大另一個變量的值反而會越小。r 的絕對值越大表明相關性越強,要注意的是這裡並不存在因果關係。
斯皮爾曼相關性係數,通常也叫斯皮爾曼秩相關係數。“秩”,可以理解成就是一種順序或者排序,那麼它就是根據原始數據的排序位置進行求解,這種表徵形式就沒有了求皮爾森相關性係數時那些限制。下面來看一下它的計算公式:
計算過程就是:首先對兩個變量(X, Y)的數據進行排序,然後記下排序以後的位置(X’, Y’),(X’, Y’)的值就稱為秩次,秩次的差值就是上面公式中的di,n就是變量中數據的個數,最後帶入公式就可求解結果
帶入公式,求得斯皮爾曼相關性係數:ρs= 1-6 (1+1+1+9)/6 35=0.657
而且,即便在變量值沒有變化的情況下,也不會出現像皮爾森係數那樣分母為0而無法計算的情況。另外,即使出現異常值,由於異常值的秩次通常不會有明顯的變化(比如過大或者過小,那要麼排第一,要麼排最後),所以對斯皮爾曼相關性係數的影響也非常小!
由於斯皮爾曼相關性係數沒有那些數據條件要求,適用的範圍就廣多了。
肯德爾相關性係數,又稱肯德爾秩相關係數,它也是一種秩相關係數,不過它所計算的對象是分類變量。
分類變量可以理解成有類別的變量,可以分為
無序的,比如性別(男、女)、血型(A、B、O、AB);
有序的,比如肥胖等級(重度肥胖,中度肥胖、輕度肥胖、不肥胖)。
通常需要求相關性係數的都是有序分類變量。
舉個例子。比如評委對選手的評分(優、中、差等),我們想看兩個(或者多個)評委對幾位選手的評價標準是否一致;或者醫院的尿糖化驗報告,想檢驗各個醫院對尿糖的化驗結果是否一致,這時候就可以使用肯德爾相關性係數進行衡量。
pandas.DataFrame.corr()
DataFrame.corr(method=’pearson’, min_periods=1)[source]
Compute pairwise correlation of columns, excluding NA/null values
Parameters:
method : {‘pearson’, ‘kendall’, ‘spearman’}
pearson : standard correlation coefficient
kendall : Kendall Tau correlation coefficient
spearman : Spearman rank correlation
min_periods : int, optional
Minimum number of observations required per pair of columns to have a valid result. Currently only available for pearson and spearman correlation
Returns:
y : DataFrame
numpy.corrcoef(x,y = None,rowvar = True,bias = class’numpy._globals._NoValue’,ddof = class’numpy._globals._NoValue’ )
返回Pearson乘積矩相關係數。
cov有關更多詳細信息,請參閱文檔。相關係數矩陣R和協方差矩陣C之間的關係為
R的值在-1和1之間(含)。
參數:
x:array_like
包含多個變量和觀察值的1維或2維數組。x的每一行代表一個變量,每一列都是對所有這些變量的單獨觀察。另請參閱下面的rowvar。
y:array_like,可選
一組額外的變量和觀察。y的形狀與x相同。
rowvar:布爾,可選
如果rowvar為True(默認),則每行表示一個變量,並在列中有觀察值。否則,該關係將被轉置:每列表示一個變量,而行包含觀察值。
bias : _NoValue, optional Has no effect, do not use. Deprecated since version 1.10.0.
ddof : _NoValue, optional Has no effect, do not use. Deprecated since version 1.10.0.
返回:
R:ndarray 變量的相關係數矩陣。
python計算多個數組的相關性
線性相關:主要採用皮爾遜相關係數來度量連續變量之間的線性相關強度;
線性相關係數|r| 相關程度
0=|r|0.3 低度相關
0.3=|r|0.8 中度相關
0.8=|r|1 高度相關
1 函數
相關分析函數:
DataFrame.corr()
Series.corr(other)
說明:
如果由數據框調用corr方法,那麼將會計算每個列兩兩之間的相似度
如果由序列調用corr方法,那麼只是計算該序列與傳入序列之間的相關度
返回值:
dataFrame調用:返回DataFrame
Series調用: 返回一個數值型,大小為相關度
2 案例
import pandas
data=pandas.read_csv(‘C:\\Users\\Desktop\\test.csv’)
print(data.corr())
#由數據框調用corr方法,將會計算每個列兩兩之間的相似度,返回的是一個矩形
print(data[‘人口’].corr(data[‘文盲率’]))
#由某一列調用corr方法,只是計算該序列與傳入序列(本例中的’文盲率’)之間的相關度
print(data[‘超市購物率’,’網上購物率’,’文盲率’,’人口’]).corr()
python相關性分析如何生成兩個相關性最強的兩門?
方法/步驟
第一步我們首先需要知道相關性主要有兩個方向,一個是正方向一個是負方向,相關性係數是衡量兩個變量之間影響程度,如下圖所示:
請點擊輸入圖片描述
第二步下面通過公式計算兩個變量之間相關性係數,代碼如下:
import numpy
import pandas
X = [52,19,7,33,2]
Y = [162,61,22,100,6]
#公式計算#均值XMean = numpy.mean(X)
YMean = numpy.mean(Y)
#標準差XSD = numpy.std(X)
YSD = numpy.std(Y)
#z分數ZX = (X-XMean)/XSD
ZY = (Y-YMean)/YSD#相關係數
r = numpy.sum(ZX*ZY)/(len(X))
print(r)
請點擊輸入圖片描述
第三步運行程序,可以得到相關性係數r ,r的值是0.999674032661831,相關性非常高,如下圖所示:
請點擊輸入圖片描述
第四步我們也可以通過numpy的corrcoef方法計算相關性係數,輸入代碼
t=numpy.corrcoef(X,Y)
print(t)
可以看到X與Y和Y與X的相關性係數,如下圖所示:
請點擊輸入圖片描述
請點擊輸入圖片描述
第五步我們也可以通過pandas的corr方法計算相關性係數,代碼
data = pandas.DataFrame({‘X’:X,’Y’:Y})
t2=data.corr()
print(t2)
得到了相同的結果,如下圖所示:
請點擊輸入圖片描述
請點擊輸入圖片描述
如何用python進行相關性分析
用python進行相關性分析應該主要根據數據的內容進行分析,如果是帶標註的數據可以通過模型訓練的方式來獲取進行分析,找出對目標結果有最大影響的因素。如果沒有標註的話,可以用python構建網絡知識圖譜手動分析,或者自己構建數據表格,人為觀察數據分布圖找到其中規律。一般來說相關性分析,主要依靠人為的觀察,並用數據和模型來輔助計算,從而獲得相對準確的結果。
初學python,怎樣用python做pearson相關係數的檢驗呢,求指導啊
scipy.stats.pearsonr(x, y)
x和y為相同長度的兩組數據
返回值 r, p-value
r是相關係數,取值-1~1. 表示線性相關程度
p-value越小,表示相關程度越顯著。按照文檔的說法“The p-values are not entirely reliable but are probably reasonable for datasets larger than 500 or so.”,p-value在500個樣本值以上有較高的可靠性
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/198749.html