Iris 資料集的主成分分析 (PCA)#

此範例展示了一種著名的分解技術,稱為對 Iris 資料集進行主成分分析 (PCA)。

此資料集由 4 個特徵組成:萼片長度、萼片寬度、花瓣長度、花瓣寬度。我們使用 PCA 將這 4 個特徵空間投影到 3 維空間中。

# Authors: The scikit-learn developers
# SPDX-License-Identifier: BSD-3-Clause

載入 Iris 資料集#

Iris 資料集可直接作為 scikit-learn 的一部分使用。可以使用 load_iris 函數載入。使用預設參數,會傳回一個 Bunch 物件,其中包含資料、目標值、特徵名稱和目標名稱。

from sklearn.datasets import load_iris

iris = load_iris(as_frame=True)
print(iris.keys())
dict_keys(['data', 'target', 'frame', 'target_names', 'DESCR', 'feature_names', 'filename', 'data_module'])

Iris 資料集特徵對的繪圖#

讓我們先繪製 Iris 資料集的特徵對。

import seaborn as sns

# Rename classes using the iris target names
iris.frame["target"] = iris.target_names[iris.target]
_ = sns.pairplot(iris.frame, hue="target")
plot pca iris

每個散佈圖上的每個資料點都指資料集中 150 朵虹膜花中的一朵,顏色表示它們各自的類型(山鳶尾、變色鳶尾和維吉尼亞鳶尾)。

您已經可以看到關於山鳶尾類型的模式,根據其短而寬的萼片很容易識別。僅考慮萼片寬度和長度這兩個維度,變色鳶尾和維吉尼亞鳶尾類型之間仍然存在重疊。

圖的對角線顯示每個特徵的分佈。我們觀察到花瓣寬度和花瓣長度是這三種類型最具判別力的特徵。

繪製 PCA 表示#

讓我們對 Iris 資料集應用主成分分析 (PCA),然後在前面三個 PCA 維度上繪製虹膜。這將使我們能夠更好地區分這三種類型!

import matplotlib.pyplot as plt

# unused but required import for doing 3d projections with matplotlib < 3.2
import mpl_toolkits.mplot3d  # noqa: F401

from sklearn.decomposition import PCA

fig = plt.figure(1, figsize=(8, 6))
ax = fig.add_subplot(111, projection="3d", elev=-150, azim=110)

X_reduced = PCA(n_components=3).fit_transform(iris.data)
scatter = ax.scatter(
    X_reduced[:, 0],
    X_reduced[:, 1],
    X_reduced[:, 2],
    c=iris.target,
    s=40,
)

ax.set(
    title="First three PCA dimensions",
    xlabel="1st Eigenvector",
    ylabel="2nd Eigenvector",
    zlabel="3rd Eigenvector",
)
ax.xaxis.set_ticklabels([])
ax.yaxis.set_ticklabels([])
ax.zaxis.set_ticklabels([])

# Add a legend
legend1 = ax.legend(
    scatter.legend_elements()[0],
    iris.target_names.tolist(),
    loc="upper right",
    title="Classes",
)
ax.add_artist(legend1)

plt.show()
First three PCA dimensions

PCA 將創建 3 個新特徵,這些特徵是 4 個原始特徵的線性組合。此外,這種轉換會最大化變異數。透過這種轉換,我們看到我們可以使用僅第一個特徵(即第一個特徵向量)來識別每個物種。

腳本的總執行時間: (0 分鐘 2.878 秒)

相關範例

鳶尾花數據集 LDA 和 PCA 2D 投影的比較

鳶尾花數據集 LDA 和 PCA 2D 投影的比較

繪製在鳶尾花數據集上訓練的決策樹決策面

繪製在鳶尾花數據集上訓練的決策樹決策面

增量 PCA

增量 PCA

繪製鳶尾花數據集上的多類 SGD

繪製鳶尾花數據集上的多類 SGD

由 Sphinx-Gallery 產生的圖庫