如何在 Python 中將 Scikit-learn 的 IRIS 資料集轉換為 2 特徵資料集?


Iris(鳶尾花)是一個多元的花卉資料集,是 Python scikit-learn 中最實用的資料集之一。它包含 3 個類別,每個類別 50 個例項,包含三種鳶尾花物種(分別為 Iris setosa,Iris virginica 和 Iris versicolor)的花萼和花瓣部分的測量值。此外,Iris 資料集還包含這三個物種中每個物種的 50 個例項,幷包含四個特徵,分別是 sepal_length(釐米),sepal_width(釐米),petal_length(釐米),petal_width(釐米)。

我們可以使用主成分分析 (PCA) 將 IRIS 資料集轉換為具有 2 個特徵的新特徵空間。

步驟

我們可以按照以下步驟使用 Python 中的 PCA 將 IRIS 資料集轉換為 2 特徵資料集:

步驟 1 − 首先,從 scikit-learn 中匯入必要的包。我們需要匯入 datasets 和 decomposition 包。

步驟 2 − 載入 IRIS 資料集。

步驟 3 − 列印有關資料集的詳細資訊。

步驟 4 − 初始化主成分分析 (PCA) 並應用 fit() 函式以擬合數據。

步驟 5 − 將資料集轉換為新維度,即 2 特徵資料集。

示例

在下面的示例中,我們將使用上述步驟將 scikit-learn 的 IRIS 植物資料集使用 PCA 轉換為 2 個特徵。

# Importing the necessary packages from sklearn import datasets from sklearn import decomposition # Load iris plant dataset iris = datasets.load_iris() # Print details about the dataset print('Features names : '+str(iris.feature_names)) print('\n') print('Features size : '+str(iris.data.shape)) print('\n') print('Target names : '+str(iris.target_names)) print('\n') X_iris, Y_iris = iris.data, iris.target # Initialize PCA and fit the data pca_2 = decomposition.PCA(n_components=2) pca_2.fit(X_iris) # Transforming iris data to new dimensions(with 2 features) X_iris_pca2 = pca_2.transform(X_iris) # Printing new dataset print('New Dataset size after transformations: ', X_iris_pca2.shape)

輸出

它將產生以下輸出:

Features names : ['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']

Features size : (150, 4)

Target names : ['setosa' 'versicolor' 'virginica']

New Dataset size after transformations: (150, 2)

如何將 Iris 資料集轉換為 3 特徵資料集?

我們可以使用一種稱為主成分分析 (PCA) 的統計方法將 Iris 資料集轉換為具有 3 個特徵的新特徵空間。PCA 基本上透過分析原始資料集的特徵將資料線性投影到新的特徵空間。

PCA 背後的主要概念是選擇資料的“主要”特徵並基於它們構建特徵。它將為我們提供一個新資料集,該資料集尺寸較小,但包含與原始資料集相同的資訊。

示例

在下面的示例中,我們將使用 PCA(初始化為 3 個元件)轉換 scikit-learn 的 Iris 植物資料集。

# Importing the necessary packages from sklearn import datasets from sklearn import decomposition # Load iris plant dataset iris = datasets.load_iris() # Print details about the dataset print('Features names : '+str(iris.feature_names)) print('\n') print('Features size : '+str(iris.data.shape)) print('\n') print('Target names : '+str(iris.target_names)) print('\n') print('Target size : '+str(iris.target.shape)) X_iris, Y_iris = iris.data, iris.target # Initialize PCA and fit the data pca_3 = decomposition.PCA(n_components=3) pca_3.fit(X_iris) # Transforming iris data to new dimensions(with 2 features) X_iris_pca3 = pca_3.transform(X_iris) # Printing new dataset print('New Dataset size after transformations : ', X_iris_pca3.shape) print('\n') # Getting the direction of maximum variance in data print("Components : ", pca_3.components_) print('\n') # Getting the amount of variance explained by each component print("Explained Variance:",pca_3.explained_variance_) print('\n') # Getting the percentage of variance explained by each component print("Explained Variance Ratio:",pca_3.explained_variance_ratio_) print('\n') # Getting the singular values for each component print("Singular Values :",pca_3.singular_values_) print('\n') # Getting estimated noise covariance print("Noise Variance :",pca_3.noise_variance_)

輸出

它將產生以下輸出:

Features names : ['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']

Features size : (150, 4)

Target names : ['setosa' 'versicolor' 'virginica']

Target size : (150,)
New Dataset size after transformations : (150, 3)

Components : [[ 0.36138659 -0.08452251 0.85667061 0.3582892 ]
[ 0.65658877 0.73016143 -0.17337266 -0.07548102]
[-0.58202985 0.59791083 0.07623608 0.54583143]]

Explained Variance: [4.22824171 0.24267075 0.0782095 ]

Explained Variance Ratio: [0.92461872 0.05306648 0.01710261]

Singular Values : [25.09996044 6.01314738 3.41368064]

Noise Variance : 0.02383509297344944

更新於:2022年10月4日

601 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告