機器學習 - 直方圖



直方圖是一種類似條形圖的表示變數分佈的方式。它顯示變數每個值的出現頻率。x軸表示變數的值範圍,y軸表示每個值的頻率或計數。每個條形的高度表示落在該值範圍內的數 據點的數量。

直方圖有助於識別資料中的模式,例如偏度、模態和異常值。偏度是指變數分佈的不對稱程度。模態是指分佈中的峰值數量。異常值是指落在變數典型值範圍之外的資料點。

直方圖的Python實現

Python 提供了多個用於資料視覺化的庫,例如 Matplotlib、Seaborn、Plotly 和 Bokeh。在下面的示例中,我們將使用 Matplotlib 來實現直方圖。

我們將使用 Sklearn 庫中的乳腺癌資料集作為此示例。乳腺癌資料集包含有關乳腺癌細胞特徵以及它們是惡性還是良性的資訊。該資料集具有 30 個特徵和 569 個樣本。

示例

讓我們從匯入必要的庫和載入資料集開始:

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

接下來,我們將建立資料集的平均半徑特徵的直方圖:

plt.figure(figsize=(7.2, 3.5))
plt.hist(data.data[:,0], bins=20)
plt.xlabel('Mean Radius')
plt.ylabel('Frequency')
plt.show()

在這段程式碼中,我們使用了 Matplotlib 的 hist() 函式來建立資料集平均半徑特徵的直方圖。我們將 bin 的數量設定為 20,以將資料範圍劃分為 20 個區間。我們還使用 xlabel()ylabel() 函式為 x 軸和 y 軸添加了標籤。

輸出

生成的直方圖顯示了資料集中平均半徑值的分佈。我們可以看到資料大致呈正態分佈,峰值約為 12-14。

mean radius

包含多個數據集的直方圖

我們還可以建立包含多個數據集的直方圖來比較它們的分佈。讓我們為惡性和良性樣本建立平均半徑特徵的直方圖:

示例

plt.figure(figsize=(7.2, 3.5))
plt.hist(data.data[data.target==0,0], bins=20, alpha=0.5, label='Malignant')
plt.hist(data.data[data.target==1,0], bins=20, alpha=0.5, label='Benign')
plt.xlabel('Mean Radius')
plt.ylabel('Frequency')
plt.legend()
plt.show()

在這段程式碼中,我們兩次使用了 hist() 函式來建立平均半徑特徵的兩個直方圖,一個用於惡性樣本,一個用於良性樣本。我們使用 alpha 引數將條形的透明度設定為 0.5,這樣它們就不會完全重疊。我們還使用 legend() 函式向繪圖添加了圖例。

輸出

執行此程式碼後,您將獲得以下繪圖作為輸出:

Mean Radius

生成的直方圖顯示了惡性和良性樣本的平均半徑值的分佈。我們可以看到分佈是不同的,惡性樣本具有更高頻率的更高平均半徑值。

廣告