机器学习把我整的有点蒙了,今天写点简单的。

什么是相关系数矩阵?

其实这个东西在数据分析中经常用到,相关系数矩阵可以一次性同时显示多个变量之间的相关关系。当我们做相关系数矩阵时,我们会得到一个包含每个变量与其他变量之间的相关系数的表。表中的系数显示了关系的强度及其方向(正或负相关)。在Python中,我们可以使用Pandas和numpy创建相关系数矩阵。

相关矩阵的应用

在写代码之前呢,再给大家明确一下什么时候我们需要创建相关系数矩阵:

  1. 如果我们有一个大数据集,并且打算探索数据模式。
  2. 将相关系数矩阵用于其他统计方法。例如,在进行探索性因子分析,验证性因子分析,结构方程模型时都要以相关矩阵作数据。
  3. 其他的统计方法,比如回归分析的诊断也可能用到相关矩阵。
相关的种类

相关的种类也有很多,常用的就是Pearson的乘积矩相关。根据变量的数据类型,还有数据遵循相关假设的不同,还有其他常用的方法,例如Spearman相关和Kendall相关。在这儿给出3位大佬的图片,具体什么时候用哪种相关,请自行搜索。

python通过numpy计算行列平均值(使用NumPy和Pandas在Python中创建相关系数矩阵)(1)

Pearson, Spearman, 和 Kendall

创建相关系数矩阵

在NumPy中创建相关矩阵

要使用NumPy创建相关系数矩阵,常规语法如下:

np.corrcoef(x)

其中,x是一维或二维数组。

使用Pandas创建相关矩阵

要使用Pandas创建相关系数矩阵,常规语法如下:

df.corr()

在这里,df是DataFrame,而cor()是获取相关系数的方法。

好,光说不行,直接给例子,首先是在Numpy中的例子。

首先,我们将使用numpy.loadtxt方法加载数据。然后,我们将使用corrcoeff方法创建相关系数矩阵。

import numpy as np data = './SimData/correlationMatrixPython.csv' x = np.loadtxt(data, skiprows=1, delimiter=',', unpack=True) np.corrcoef(x)

运行代码,我们可以得到

python通过numpy计算行列平均值(使用NumPy和Pandas在Python中创建相关系数矩阵)(2)

Correlation Matrix (NumPy Array)

注意,我使用skiprows参数跳过了包含变量名称的第一行,并使用了delimiter参数,因为这些列由逗号分隔。最后,我使用了unpack参数,以便我们的数据将遵循corrcoef的要求。最后一点;使用NumPy,我们无法计算Spearman相关和Kendall相关。


Pandas创建相关矩阵

import pandas as pd

2.使用Pandas导入数据

data = './SimData/correlationMatrixPython.csv' df = pd.read_csv(data) df.head()

在下图中,我们可以看到数据集中四个变量的部分值:

python通过numpy计算行列平均值(使用NumPy和Pandas在Python中创建相关系数矩阵)(3)

3.计算相关矩阵:

df.corr()

得到以下输出:

python通过numpy计算行列平均值(使用NumPy和Pandas在Python中创建相关系数矩阵)(4)

最后,如果我们想使用其他相关方法(例如Spearman相关),我们只需将method ='Spearman'参数添加到corr方法中。参见下图。

python通过numpy计算行列平均值(使用NumPy和Pandas在Python中创建相关系数矩阵)(5)


感谢您耐心看完,发表这些东西的主要目的就是督促自己,希望大家关注评论指出不足,一起进步。内容我都会写的很细,并且按照文章中的代码自己也可以做出一样的结果,一个目的就是零基础也能懂,因为自己就是什么基础没有从零学Python的。文章中原始数据链接https://raw.githubusercontent.com/marsja/jupyter/master/SimData/correlationMatrixPython.csv

哈哈关注有福利,骗波关注么么哒。

,