Python中的相关图

在开始清理数据之前检查相关图非常重要。虽然功能似乎没有彼此的关系,但丢弃它们需要基于一个坚实的理由,而不是我们的直觉。通过检查相关矩阵,我们可以处理多重共线性并找出哪些自变量与因变量有更强的关系。

在这篇文章中,我想演示如何在Python中创建关联图,以及为什么我们只需要检查图的下三角区域以及它背后的数学。

可以使用协方差矩阵计算相关性,该矩阵显示变量如何彼此相关。它的范围从-1到1.有-1表示变量具有强负线性关系,1表示变量具有强正线性关系。那么,协方差矩阵是怎样的呢?

Python中的相关图

如上所示,对角元素表示其自身的协方差,其与变量的方差相同。当我们检查相关矩阵时,这就是对角元素都是1的原因。如果我们认为矩阵为A,那么A [0,1]和A [1,0]具有相同的公式。这是因为元素的分母是相同的,分子中的元素可以在任何地方,因为它们是标量。因此,由于A [0,1]和A [1,0]是相同的数,我们只需要在绘制相关矩阵时检查下三角矩阵或上三角矩阵。

我将使用机器学习库sklearn中的iris数据集来展示如何绘制相关矩阵。导入Python必须的库:

from sklearn.datasets import load_iris
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline

此代码将加载机器学习库sklearn中的iris数据集,Python代码如下:

data= load_iris()

加载iris数据集并将其指定为dataframe。

df= pd.DataFrame(data= data['data'], columns= data['feature_names'])
df.corr()

以dataframe格式检查数据会更容易,因此,我只将independent values转换为dataframe。

Python中的相关图

可以看出,对角线元素是1.上三角区域和下三角区域都具有相同的元素。因此,我们只需要显示其中一个以检查相关性。

plt.figure(figsize= (6, 6))
sns.heatmap(features.corr())

Python中的相关图

上图显示了自变量之间的关系。不同的颜色代表变量之间的关系。颜色越深,变量之间存在越负的线性关系。Python代码如下:

fig, ax = plt.subplots(figsize=(6, 6)) 
mask = np.zeros_like(features.corr())
mask[np.triu_indices_from(mask)] = 1
sns.heatmap(features.corr(), mask= mask, ax= ax, annot= True)

Python中的相关图

如果您希望显示实际数字,我们可以指定annot = True,这样我们就可以在热图上显示数值相关性。我们可以使用mask 函数来仅选择下三角形部分。

相关推荐