在 Python 中绘制相关矩阵

2025年3月17日 | 阅读 7 分钟

给定两个变量,如果一个变量的值依赖于其他变量的值,我们就说这两个变量是相关的。变量之间统计关系的度量称为“相关性”。这里相互依赖的两个变量是产品的价格和需求。例如,每当一种产品开始失去需求时,公司就会降低产品价格,因为价格下降,需求就会上升。

给定大量的观测数据,很难确定两个变量之间的相关程度。这是数据科学和数据分析的一个重要需求。统计技术被用来组织所有数据以获得相关性视图,为此,会创建图表和其他表示。

本教程将介绍如何在 Python 中绘制数据并创建相关矩阵。

在任何两个变量之间,可以存在三种相关性:

  1. 正相关
  2. 负相关
  3. 零相关
  • 假设一个变量的值的增加或减少同时导致另一个变量的值的增加或减少。在这种情况下,两个变量之间的关系称为“正相关”。
  • 正相关的例子是需求和利润,因为需求的增加会增加公司产品的利润。
  • 根据给定的两个变量的相关观测值,如果数值大于 0 或接近 1,则表示变量之间存在“正相关”。
    Plot Correlation Matrix in Python
  • 假设一个变量的值的增加或减少同时导致另一个变量的值的减少或增加。在这种情况下,两个变量之间的关系称为“负相关”。
  • 负相关的例子是需求和价格,因为产品价格的下降会增加其需求。
  • 如果相关系数小于 0 或接近负 1,则称这两个变量处于“负相关”。
    Plot Correlation Matrix in Python
  • 如果两个变量似乎没有任何联系——独立变量,那么它们之间就没有相关性可衡量,这称为“零相关”。
  • 零相关的一个例子可以是你吃的巧克力和你喜欢的科目。
  • 如果两个变量之间的相关系数等于 0,则这两个变量之间没有任何关系,因此是“零相关”。
    Plot Correlation Matrix in Python
  • 所需的库
    1. Sklearn
    2. Numpy
    3. Matplotlib
    4. Pandas

给定两个变量的数据,我们可以使用 Pandas 来找出这两个变量之间的相关性。

输出

0.9793792286287205
0.9793792286287205
  • 如果两个变量存在相关性,则第一个变量依赖于第二个变量的程度与第二个变量依赖于第一个变量的程度相同。因此,这两个值是相同的。

现在,有了两个变量的数据,我们可以使用上述库中的函数来绘制显示相关性的图形。如果库未安装,可以使用 pip 或 conda 管理器进行安装。

  • 要绘制数据,我们需要导入 matplotlib 库的 pyplot 模块。

代码

输出

Plot Correlation Matrix in Python
Plot Correlation Matrix in Python
  • 散点图是一种图,其中数据中的每个值都被绘制为一个点,并显示两个变量之间的关系。
  • 点击绘图部分查看绘图。

使用的函数

  1. Series():它表示变量的值的数组。
  2. polyfit():它返回由两个变量的数据集形成的 polynomial 的系数。
  3. poly1d():它用于定义一个 polynomial 函数,以便对 polynomial 应用数学运算。
  4. unique():它用于从数据集中消除重复值,这些值对于查找相关性是无用的。
  5. plot():它用于绘制两个变量数据集中的点。

自定义绘图

我们可以添加标题和标签使绘图更易于理解。为此,我们可以使用 title() 和 label() 函数。

输出

Plot Correlation Matrix in Python

使用的函数

  1. title:它是 matplotlib 中用于为创建的可视化(在此例中为图)添加标题的函数。
  2. xlabel,pyplot.ylabel:这两个函数用于为轴命名,说明其值代表什么。

Sklearn 库中的数据框

Sklearn 是 Python 中的一个机器学习库。它内置了七个示例数据集,程序员无需下载任何外部文件即可使用。

  • 这七个数据集称为“玩具数据集”,我们将使用其中一个数据集来绘制该数据集的相关矩阵。

数据集:sklearn.load_iris()

代码

输出

      Sepal length (cm)      sepal width (cm)   ...    petal width (cm)    relation
0           5.1                3.5              ...       0.2                0
1           4.9                3.0              ...       0.2                0
2           4.7                3.2              ...       0.2                0
3           4.6                3.1              ...       0.2                0
4           5.0                3.6              ...       0.2                0
..          ...                ...              ...       ...                ...
145         6.7                3.0              ...       2.3                2
146         6.3                2.5              ...       1.9                2
147         6.5                3.0              ...       2.0                2
148         6.2                3.4              ...       2.3                2
149         5.9                3.0              ...       1.8                2 

[150 rows x 5 columns]

我们从 pandas 创建了一个数据框,并包含了 iris 数据集。在数据集的四个特征中,我们将尝试找出萼片长度和花瓣宽度之间的相关性。

  • 要找出这两个变量之间的相关性,如上所述,将使用corr() 方法

代码

输出

The correlation number between Sepal length and Petal length: 0.8179411262715757
  • 相关系数接近 1;因此,萼片长度和花瓣宽度呈正相关。

相关矩阵

代码

输出

Plot Correlation Matrix in Python
  • 之前,我们找到了两个变量之间的相关性。在这里,使用 dataframe.corr() 方法,我们创建了一个包含所有相关系数的相关矩阵。
  • 我们使用背景渐变来为相关矩阵着色,以便查看每个值是如何相关的。
  1. 深色显示高度相关的数值。
  2. 浅色显示相关性较低的数值。在此。

相关热力图

热力图是绘制相关矩阵的另一种有效方法。它显示了每对变量之间的相关性。它属于 Seaborn 库。

代码

输出

Plot Correlation Matrix in Python

理解

  • 就像为相关矩阵应用背景渐变一样,热力图也使用颜色进行分析。
  • 红色或更亮的颜色表示高度相关的数值,而浅色用于表示不那么常见的数值。
  • 它显示了一个变量与其他所有变量如何成对相关,从而对相关数据进行更清晰的分析。

自定义热力图

使用 matplotlib 库的 pyplot 模块,我们可以为矩阵添加标题和 x、y 轴标签,使其更易于理解。

  • 在 seaborn.heatmap() 中,通过指定 annot = True,矩阵将显示相关系数。

代码

输出

Plot Correlation Matrix in Python
  • 如上所述,接近 1 的正值表示“正相关”,负值表示“负相关”。
  • 可以使用 savefig() 方法将此热力图保存为 png 文件。

结论

相关性指定了一个变量对另一个变量的关系/依赖程度的度量。使用统计技术可以轻松计算。但是,当涉及大量数据时,分析关系会很困难。因此,我们使用相关矩阵,其中图的颜色有助于程序员区分和理解变量之间的相关性。

本教程讨论了如何使用以下方法分析相关矩阵:

  1. 背景渐变
  2. 热力图