Pandas?計(jì)算相關(guān)性系數(shù)corr()方式
Pandas 計(jì)算相關(guān)性系數(shù)corr()
相關(guān):數(shù)據(jù)之間有關(guān)聯(lián),相互有影響
如:A和B 存在一定的相關(guān)性,A對(duì)B存在一定程度的影響,A變化,B也會(huì)有一定的變化
- 如果A和B相等 或者 B可以由A經(jīng)過(guò)計(jì)算得到---->完全相關(guān)
- 如果B是由 A和C計(jì)算得到 ---->并且 A可以計(jì)算出B的大部分 -----> A和B 強(qiáng)度相關(guān)
- 如果B是由 A和C計(jì)算得到 ---->并且 A可以計(jì)算出B的小部分 -----> A和B 弱度相關(guān)
- 如果 A和B 毫無(wú)關(guān)系 ----> 不相關(guān)
如果B和 A相關(guān):
- A的增大導(dǎo)致B的減小 —> 負(fù)相關(guān)
- A的增大導(dǎo)致B的增大 —> 正相關(guān)
相關(guān)性系數(shù):衡量相關(guān)性強(qiáng)弱的
其范圍是[-1,1],絕對(duì)值越靠近0,表示不相關(guān),絕對(duì)值越靠近1,表示相關(guān)性越強(qiáng)
小于 0 表示負(fù)相關(guān);大于 0 表示正相關(guān)。
構(gòu)造如下數(shù)據(jù)
import pandas as pd data = pd.DataFrame( data={ 'age': [2,7,10,16,20], 'height': [70,90,143,166,178], 'score': [98,37,103,76,53] } )
使用corr()方法計(jì)算相關(guān)性系數(shù):
# 計(jì)算相關(guān)性系數(shù)的列 必須都是數(shù)值型的數(shù)據(jù)! corr = data.loc[:, ["age","height"]].corr()?? ??? ?# 會(huì)計(jì)算兩兩列之間的相關(guān)性系數(shù) print("corr\n", corr) """ corr ? ? ? ? ? ? age ? height age ? ? 1.00000 ?0.96043 height ?0.96043 ?1.00000 """
自身與自身的相關(guān)性系數(shù)為 1
計(jì)算多列相關(guān)性系數(shù):
corr = data.loc[:, ["age","height","score"]].corr() print("corr\n", corr) """ corr ? ? ? ? ? ? ?age ? ?height ? ? score age ? ? 1.000000 ?0.960430 -0.340053 height ?0.960430 ?1.000000 -0.096782 score ?-0.340053 -0.096782 ?1.000000 """
pandas相關(guān)系數(shù)-DataFrame.corr()參數(shù)
DataFrame.corr(method='pearson', min_periods=1)
參數(shù)說(shuō)明
method
:可選值為{‘pearson’, ‘kendall’, ‘spearman’}pearson
:Pearson相關(guān)系數(shù)來(lái)衡量?jī)蓚€(gè)數(shù)據(jù)集合是否在一條線上面,即針對(duì)線性數(shù)據(jù)的相關(guān)系數(shù)計(jì)算,針對(duì)非線性數(shù)據(jù)便會(huì)有誤差。kendall
:用于反映分類變量相關(guān)性的指標(biāo),即針對(duì)無(wú)序序列的相關(guān)系數(shù),非正太分布的數(shù)據(jù)spearman
:非線性的,非正太分布的數(shù)據(jù)的相關(guān)系數(shù)min_periods
:樣本最少的數(shù)據(jù)量- 返回值:各類型之間的相關(guān)系數(shù)DataFrame表格。
為區(qū)分不同參數(shù)之間的區(qū)別,我們實(shí)驗(yàn)如下:
from pandas import DataFrame import pandas as pd x=[a for a in range(100)] #構(gòu)造一元二次方程,非線性關(guān)系 def y_x(x): return 2*x**2+4 y=[y_x(i) for i in x] data=DataFrame({'x':x,'y':y}) #查看下data的數(shù)據(jù)結(jié)構(gòu) data.head() Out[34]: x y 0 0 4 1 1 6 2 2 12 3 3 22 4 4 36 data.corr() Out[35]: x y x 1.000000 0.967736 y 0.967736 1.000000 data.corr(method='spearman') Out[36]: x y x 1.0 1.0 y 1.0 1.0 data.corr(method='kendall') Out[37]: x y x 1.0 1.0 y 1.0 1.0
因?yàn)閥經(jīng)由函數(shù)構(gòu)造出來(lái),x和y的相關(guān)系數(shù)為1,但從實(shí)驗(yàn)結(jié)構(gòu)可知pearson系數(shù),針對(duì)非線性數(shù)據(jù)有一定的誤差。
需要說(shuō)明,數(shù)據(jù)之間的相關(guān)關(guān)系,并不代表其之間的因果關(guān)系,相關(guān)系數(shù)為1,只能說(shuō)明二者之間具備完全相關(guān)性,但不能說(shuō)y是x的果。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
創(chuàng)建SparkSession和sparkSQL的詳細(xì)過(guò)程
SparkSession 是 Spark SQL 的入口,Builder 是 SparkSession 的構(gòu)造器。 通過(guò) Builder, 可以添加各種配置,并通過(guò) stop 函數(shù)來(lái)停止 SparkSession,本文給大家分享創(chuàng)建SparkSession和sparkSQL的詳細(xì)過(guò)程,一起看看吧2021-08-08在django中使用post方法時(shí),需要增加csrftoken的例子
這篇文章主要介紹了在django中使用post方法時(shí),需要增加csrftoken的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03Python實(shí)現(xiàn)的選擇排序算法原理與用法實(shí)例分析
這篇文章主要介紹了Python實(shí)現(xiàn)的選擇排序算法,簡(jiǎn)單描述了選擇排序的原理,并結(jié)合實(shí)例形式分析了Python實(shí)現(xiàn)與應(yīng)用選擇排序的具體操作技巧,需要的朋友可以參考下2017-11-11點(diǎn)云地面點(diǎn)濾波(Cloth Simulation Filter, CSF)
這篇文章主要介紹了點(diǎn)云地面點(diǎn)濾波(Cloth Simulation Filter, CSF)“布料”濾波算法介紹,本文從基本思想到實(shí)現(xiàn)思路一步步給大家講解的非常詳細(xì),需要的朋友可以參考下2021-08-08Python使用uuid庫(kù)生成唯一標(biāo)識(shí)ID
這篇文章主要介紹了Python使用uuid模塊生成唯一標(biāo)識(shí)ID,需要的朋友可以參考下2020-02-02