如何在Python中将Scikit-learn IRIS数据集转换为2个特征的数据集?
Iris 是一个多变量的花卉数据集,是最有用的Python scikit-learn数据集之一。它有3类,每个类有50个实例,并包含三种鸢尾花品种的花萼和花瓣部分的测量值,分别是鸢尾花,山鸢尾和维吉尼亚鸢尾。除此之外,Iris数据集还包含每种鸢尾花品种的50个实例,包括4个特征即花萼长度(厘米)、花萼宽度(厘米)、花瓣长度(厘米)和花瓣宽度(厘米)。
我们可以使用主成分分析(PCA)将IRIS数据集转换为一个具有2个特征的新特征空间。
步骤
我们可以按照下面给出的步骤,在Python中使用PCA将IRIS数据集转换为具有2个特征的数据集 –
步骤1 − 首先,从scikit-learn导入必要的软件包。我们需要导入数据集和分解软件包。
步骤 2 − 加载IRIS数据集。
步骤 3 − 打印有关数据集的详细信息。
步骤 4 − 初始化主成分分析(PCA)并应用fit()函数来拟合数据。
步骤 5 − 将数据集转换为新维度,即2个特征的数据集。
例子
在下面的例子中,我们将使用上述步骤将scikit-learn的IRIS植物数据集转换为2个特征和PCA。
# 导入必要的软件包
from sklearn import datasets
from sklearn import decomposition
# 加载IRIS植物数据集
iris = datasets.load_iris()
# 打印数据集的详细信息
print('特征名称:'+str(iris.feature_names))
print('\n')
print('特征大小:'+str(iris.data.shape))
print('\n')
print('目标名称:'+str(iris.target_names))
print('\n')
X_iris, Y_iris = iris.data, iris.# 初始化PCA并拟合数据
pca_2 = decomposition.PCA(n_components=2)
pca_2.fit(X_iris)
# 将Iris数据转换为新维度(2个特征)
X_iris_pca2 = pca_2.transform(X_iris)
# 打印新数据集
print('转换后新数据集大小:', X_iris_pca2.shape)
输出
它将产生以下输出 –
特征名称:['花萼长度(cm)','花萼宽度(cm)','花瓣长度(cm)','花瓣宽度(cm)']
特征大小:(150,4)
目标名称:['setosa' 'versicolor' 'virginica']
转换后新数据集大小:(150, 2)
如何将Iris数据集转换为三个特征数据集?
我们可以使用一种叫做主成分分析(PCA)的统计方法,将Iris数据集转换为具有3个特征的新特征空间。PCA基本上是通过分析原始数据集的特征将数据线性投影到新的特征空间中的方法。
PCA 的主要概念是选择数据的“主要”特征, 并基于它们建立特征。 这将为我们提供新的数据集, 它将具有与原始数据集相同的信息, 但尺寸较小。
示例
在下面的示例中, 我们将使用 PCA(通过 3 个组件初始化)转换 scikit-learn Iris 植物数据集。
# 导入必要的软件包
from sklearn import datasets
from sklearn import decomposition
# 加载 Iris 植物数据集
iris = datasets.load_iris()
# 打印有关数据集的详细信息
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
# 初始化 PCA 并拟合数据
pca_3 = decomposition.PCA(n_components=3)
pca_3.fit(X_iris)
# 将 Iris 数据转换为新维度(带有 2 个特征)
X_iris_pca3 = pca_3.transform(X_iris)
# 打印新数据集
print('New Dataset size after transformations : ', X_iris_pca3.shape)
print('\n')
# 获取数据中最大方差的方向
print("Components : ", pca_3.components_)
print('\n')
# 获取每个组件解释的方差量
print("Explained Variance:",pca_3.explained_variance_)
print('\n')
# 获取每个组件解释的方差百分比
print("Explained Variance Ratio:",pca_3.explained_variance_ratio_)
print('\n')
# 获取每个组件的奇异值
print("Singular Values :",pca_3.singular_values_)
print('\n')
# 获取估计的噪声协方差
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