python数据挖掘笔记——相关分析

相关性分析:

对两个或多个具备相关性的元素变量进行分析,从而衡量两个变量之间的密切相关程度,相关性的元素之间要存在一定的联系或概率才可以进行相关性分析。

相关性分析的几个方法:

  • 图示初判(散点图,基本呈一条直线分布)
  • Pearson相关系数(皮尔逊相关系数)
  • Sperman秩相关系数(斯皮尔曼相关系数)

相关系数:
相关系数是变量间关联程度的最基本的测度之一。
基本特征:

方向:

  • 正相关,两个变量变化方向相同。

  • 负相关,两个变量变化方向相反。
    量级:

  • 低度相关:0<=|r|<0.3

  • 中度相关:0.3<=|r|<0.8

  • 高度相关:0.8<=|r|<=1

下面是代码演示:

#构建样本数据
data1=pd.Series(np.random.rand(100)*100).sort_values()#标准正态分布100个样本
data2=pd.Series(np.random.rand(100)*50).sort_values()
data=pd.DataFrame({'values1':data1.values,'values2':data2.values})
print(data.head())
#计算皮尔逊相关系数
#均值
data1MEAN=np.mean(data1)
data2MEAN=np.mean(data2)
#标准差
data1SD=np.std(data1)
data2SD=np.std(data2)
#Z分数
Zdata1=(data['values1']-data1MEAN)/data1SD
Zdata2=(data['values2']-data2MEAN)/data2SD
#相关系数
r=np.sum(Zdata1*Zdata2)/(len(data1))
r
    values1   values2
0  0.638332  2.292015
1  1.709476  2.300971
2  1.938157  4.131932
3  3.200516  4.922981
4  3.212151  5.056043
Out[91]: 0.9941237467740188

也可以直接调用pandas的内置函数计算:

data.corr()
Out[92]: 
          values1   values2
values1  1.000000  0.994124
values2  0.994124  1.000000

或者Numpy的内置函数:

np.corrcoef(data['values1'], data['values2'])
Out[4]: 
array([[1.        , 0.98719845],
       [0.98719845, 1.        ]])

猜你喜欢

转载自blog.csdn.net/weixin_42695959/article/details/84887291