機器學習 - 密度圖



密度圖是一種顯示連續變數機率密度函式的圖形。它類似於直方圖,但它使用平滑曲線而不是條形來表示每個值的頻率,以表示機率密度函式。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

生成的密度圖顯示了惡性和良性樣本的平均半徑值的機率密度函式。我們可以看到惡性樣本的機率密度函式向右偏移,表明平均半徑值較高。

廣告