机器学习 - 密度图
密度图是一种显示连续变量概率密度函数的图表类型。它类似于直方图,但不是使用条形来表示每个值的频率,而是使用平滑曲线来表示概率密度函数。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()
接下来,我们将为数据集的 mean radius 特征创建一个密度图 −
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() 函数来为数据集的 mean radius 特征创建密度图。我们将 shade 参数设置为 True 以填充曲线下的区域。我们还使用 xlabel() 和 ylabel() 函数为 x 轴和 y 轴添加了标签。
输出
生成的密度图显示了数据集中 mean radius 值的概率密度函数。我们可以看到数据大致呈正态分布,峰值在 12-14 左右。
示例 - 多个数据集的密度图
我们还可以创建包含多个数据集的密度图,以比较它们的概率密度函数。让我们为恶性和良性样本创建 mean radius 特征的密度图 −
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.datasets import load_breast_cancer
data = load_breast_cancer()
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() 函数,为恶性和良性样本分别创建 mean radius 特征的两个密度图。我们将 shade 参数设置为 True 以填充曲线下的区域,并使用 label 参数为图表添加标签。我们还使用 legend() 函数为图表添加了图例。
输出
执行这段代码后,您将得到以下图表作为输出 −
生成的密度图显示了恶性和良性样本的 mean radius 值的概率密度函数。我们可以看到恶性样本的概率密度函数向右偏移,表明其 mean radius 值更高。