首頁 >後端開發 >Python教學 >如何在Python中將Scikit-learn的IRIS資料集轉換為只有兩個特徵的資料集?

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

WBOY
WBOY轉載
2023-08-30 21:49:061130瀏覽

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

Iris,一個多元花卉資料集,是最有用的 Pyhton scikit-learn 資料集之一。它分為 3 類,每類 50 個實例,包含三種鳶尾花(山鳶尾花、維吉尼亞鳶尾和雜色鳶尾)的萼片和花瓣部分的測量值。除此之外,Iris 資料集包含這三個物種中每個物種的 50 個實例,並由四個特徵組成,即 sepal_length (cm)、sepal_width (cm)、petal_length (cm)、petal_width (cm)。

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

步驟

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

第 1 步 - 首先,從 scikit-learn 導入必要的套件。我們需要導入資料集和分解包。

步驟 2 - 載入 IRIS 資料集。

步驟 3 - 列印資料集的詳細資訊。

步驟 4 - 初始化主成分分析 (PCA) 並應用 fit() 函數來擬合資料。 p>

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

範例

在下面的範例中,我們將使用上述步驟透過 PCA 將 scikit-learn IRIS 植物資料集轉換為 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 轉換 scikit-learn Iris 植物資料集(以 3 個元件初始化)。

# 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

以上是如何在Python中將Scikit-learn的IRIS資料集轉換為只有兩個特徵的資料集?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除