Machine Learning 简明教程

Machine Learning - Density Plots

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

密度图对于识别数据中的模式(例如偏度、模态和离群值)很有用。偏度是指变量分布中不对称的程度。模态是指分布中的峰值数量。离群值是数据点,它们落在变量典型值范围之外。

Python Implementation of Density Plots

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

我们针对此示例从 Sklearn 库使用乳腺癌数据集。乳腺癌数据集包含有关乳腺癌细胞特征的信息,包括其是恶性还是良性的信息。该数据集有 30 项特征和 569 个样本。

Example

  1. 从导入必要的库和加载数据集开始 −

import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.datasets import load_breast_cancer
data = load_breast_cancer()
  1. 接下来,我们将创建数据集平均半径特征的密度图 −

plt.figure(figsize=(7.2, 3.5))
sns.kdeplot(data.data[:,0], shade=True)
plt.xlabel('Mean Radius')
plt.ylabel('Density')
plt.show()
  1. 在此代码中,我们使用了 Seaborn 中的 kdeplot() 函数来创建数据集平均半径特征的密度图。我们将 kdeplot() 参数设置为 True 来填充阴影曲线下面区域。我们还使用 xlabel()ylabel() 函数为 x 轴和 y 轴添加了标签。

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

kdeplot function

Density Plot with Multiple Data Sets

  1. 此外,我们还可以使用多个数据集来创建密度图,以比较其概率密度函数。接下来,我们将创建良性和恶性样本的平均半径特征密度图 −

Example

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()
  1. 在此代码中,我们使用了 kdeplot() 函数两次来创建平均半径特征的两个密度图,一个用于良性样本,一个用于恶性样本。我们将 kdeplot() 参数设置为 true 来填充阴影曲线下面区域,并使用 label 参数为图表添加了标签。我们还使用 legend() 函数为图表添加了图例。

执行此代码后,您将得到以下绘图作为输出 −

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