1、协方差(Covariance)
反映两个样本/变量之间的相互关系以及之间的相关程度。
期望值分别为E[X]与E[Y]的两个实随机变量X与Y之间的协方差Cov(X,Y)定义为:
如果有 X,Y 两个变量,每个时刻的 "X值与其均值之差" 乘以 "Y值与其均值之差" 得到一个乘积,再对这每时刻的乘积求和并求出均值。
如果协方差为正,说明 X,Y 是同向变化,协方差越大说明同向程度越高;如果协方差为负,说明 X ,Y 反向运动,协方差越小说明反向程度越高。
import pandas as pd
# 协方差
df = pd.DataFrame({
"GDP": [900, 1000, 1100, 1200, 1300],
"foreign_Trade": [300, 400, 500, 550, 600],
"year": ["2012", "2013", "2014", "2015", "2016"]
})
print(df.cov())
print("=====================================")
print(df["GDP"].cov(df["foreign_Trade"]))
print("=====================================")
info_man = pd.read_csv("F:/人工智能/科学计算库/files/user_info_man.csv", sep="::", engine="python", encoding="utf-8", header=None)
info_woman = pd.read_csv("F:/人工智能/科学计算库/files/user_info_woman.csv", sep="::", engine="python", encoding="utf-8", header=None)
print(info_man[10].cov(info_man[11]))
print(info_woman[10].cov(info_woman[11]))
# 运行结果:
GDP foreign_Trade
GDP 25000.0 18750.0
foreign_Trade 18750.0 14500.0
=====================================
18750.0
=====================================
1089.9397736694957
978.1412345726742
2、相关系数(Correlation coefficient)
反映两个样本/样本之间的相互关系以及之间的相关程度。在COV 的基础上进行了无量纲化操作,也就是进行了标准化操作。
其中,Cov(X,Y)为X与Y的协方差,Var[X]为X的方差,Var[Y]为Y的方差
用 X,Y 的协方差除以 X 的标准差和 Y 的标准差。所以,相关系数也可以看成协方差:一种踢除了两个变量量纲影响、标准化后的特殊协方差。
(1) 也可以反映两个变量变化时是同向还是反向,如果同向变化为正,反向变化为负;
(2) 由于它是标准化后的协方差,因此更重的特性是,它消除了两个变量变化幅度的影响,而只是单纯反映两个变量单位变化的相似程度。
注意:
相关系数不像协方差一样可以在 +\infty 到 -\infty 间变化,它只能在 +1 到 -1 之间变化;
当相关系数为 1 的时候两者相似度最大,同向正相关;
当相关系数为 0 的时候两者没有相似度,两个变量无关;
当相关系数为 -1 的时候两者变化的反向相似度最大,完全反向负相关。
import pandas as pd
# 相关系数
df = pd.DataFrame({
"GDP": [900, 1000, 1100, 1200, 1300],
"foreign_Trade": [300, 400, 500, 550, 600],
"year": ["2012", "2013", "2014", "2015", "2016"]
})
print(df.corr())
print("======================================")
print(df["GDP"].corr(df["foreign_Trade"]))
print("=====================================")
info_man = pd.read_csv("F:/人工智能/科学计算库/files/user_info_man.csv", sep="::", engine="python", encoding="utf-8", header=None)
info_woman = pd.read_csv("F:/人工智能/科学计算库/files/user_info_woman.csv", sep="::", engine="python", encoding="utf-8", header=None)
print(info_man[10].corr(info_man[11]))
print(info_woman[10].corr(info_woman[11]))
# 运行结果:
GDP foreign_Trade
GDP 1.000000 0.984798
foreign_Trade 0.984798 1.000000
======================================
0.9847982464479191
=====================================
0.6205527345581338
0.6045776098486645