Python中的主成分分析实例
主成分分析(Principal Component Analysis,PCA)是一种常用于数据降维的方法,可以将高维度数据降维至低维度,保留尽可能多的数据变异信息。Python提供了许多用于实现PCA的库和工具,本文就通过一个实例来介绍如何使用Python中的sklearn库实现PCA。
首先,我们需要准备一个数据集。本文将使用Iris数据集,该数据集包含150条样本数据,每个样本都有4个特征值(花萼的长度和宽度、花瓣的长度和宽度),以及一个标签(鸢尾花的类型)。我们的目标是将这4个特征进行降维,找到最重要的主成分。
首先,我们需要导入必要的库和数据集。
from sklearn.datasets import load_iris
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt
iris = load_iris()
X = iris.data
y = iris.target
现在我们可以创建一个PCA对象并应用它。
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)
这里的PCA对象设置n_components=2,表示我们只想在二维平面上展示我们处理后的数据。我们将fit_transform应用于原始数据X,获取处理后的数据集X_pca。
现在我们可以绘制结果图。
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y)
plt.xlabel('Component 1')
plt.ylabel('Component 2')
plt.show()
在这个图中,我们可以看到Iris数据集在降维后的二维空间中的分布。每个点都表示一个鸢尾花的样本,颜色表示鸢尾花的类型。
现在让我们看看主成分应该是什么。
print(pca.components_)
这会输出两个向量,分别称为“成分1”和“成分2”。
[[ 0.36158968 -0.08226889 0.85657211 0.35884393]
[-0.65653988 -0.72971237 0.1757674 0.07470647]]
每个元素表示原始数据中的一个特征的权重。换句话说,我们可以将主成分看作是用于线性组合原始特征的向量。结果中的每个向量都是一个单位向量。
我们也可以查看每个成分解释的数据方差量。
print(pca.explained_variance_ratio_)
这个输出会显示每个成分解释的数据方差量的比例
.........................................................