机器学习 - 密度图



密度图是一种显示连续变量概率密度函数的图形。它类似于直方图,但它使用平滑曲线而不是条形来表示每个值的频率,以表示概率密度函数。x 轴表示变量的值范围,y 轴表示概率密度。

密度图可用于识别数据中的模式,例如偏度、模态和异常值。偏度指的是变量分布的不对称程度。模态指的是分布中的峰值数量。异常值是指超出变量典型值范围的数据点。

Python 中密度图的实现

Python 提供了几个用于数据可视化的库,例如 Matplotlib、Seaborn、Plotly 和 Bokeh。在下面给出的示例中,我们将使用 Seaborn 来实现密度图。

我们将使用 Sklearn 库中的乳腺癌数据集作为此示例。乳腺癌数据集包含有关乳腺癌细胞特征的信息,以及它们是恶性还是良性的。该数据集具有 30 个特征和 569 个样本。

示例

让我们从导入必要的库和加载数据集开始 -

import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.datasets import load_breast_cancer
data = load_breast_cancer()

接下来,我们将创建数据集的平均半径特征的密度图 -

plt.figure(figsize=(7.2, 3.5))
sns.kdeplot(data.data[:,0], shade=True)
plt.xlabel('Mean Radius')
plt.ylabel('Density')
plt.show()

在此代码中,我们使用了 Seaborn 的 kdeplot() 函数来创建数据集的平均半径特征的密度图。我们将 shade 参数设置为 True 以阴影显示曲线下的区域。我们还使用 xlabel()ylabel() 函数向 x 和 y 轴添加了标签。

输出

生成的密度图显示了数据集中平均半径值的概率密度函数。我们可以看到数据大致呈正态分布,峰值在 12-14 左右。

kdeplot function

具有多个数据集的密度图

我们还可以使用多个数据集创建密度图以比较它们的概率密度函数。让我们为恶性和良性样本创建平均半径特征的密度图 -

示例

plt.figure(figsize=(7.5, 3.5))
sns.kdeplot(data.data[data.target==0,0], shade=True, label='Malignant')
sns.kdeplot(data.data[data.target==1,0], shade=True, label='Benign')
plt.xlabel('Mean Radius')
plt.ylabel('Density')
plt.legend()
plt.show()

在此代码中,我们使用了 kdeplot() 函数两次来创建平均半径特征的两个密度图,一个用于恶性样本,一个用于良性样本。我们将 shade 参数设置为 True 以阴影显示曲线下的区域,并使用 label 参数向图形添加了标签。我们还使用 legend() 函数向图形添加了图例。

输出

执行此代码后,您将获得以下图形作为输出 -

Mean Radius

生成的密度图显示了恶性和良性样本的平均半径值的概率密度函数。我们可以看到恶性样本的概率密度函数向右偏移,表明平均半径值较高。

广告