📜  Scikit学习-使用PCA减少维度(1)

📅  最后修改于: 2023-12-03 14:47:18.257000             🧑  作者: Mango

使用PCA减少维度

PCA(Principal Component Analysis)是一种用于数据降维的技术。数据降维是将高维数据转换为低维数据的过程。PCA 可以帮助我们找到原始数据中的主要成分,从而减少数据的维度。在本教程中,我们将学习如何使用Scikit-learn库中的PCA来减少数据的维度。

安装

在开始之前,我们需要确保已经安装了scikit-learn库。如果还没有安装,请执行以下命令:

pip install -U scikit-learn
导入库
import numpy as np
from sklearn.decomposition import PCA

我们将使用NumPy库处理数据,使用Scikit-learn库中的PCA类来减少数据的维度。

加载数据

我们将使用Iris(鸢尾花)数据集,这是经典的数据科学示例。可以在Scikit-learn库中直接使用Iris数据集。

from sklearn.datasets import load_iris
iris = load_iris()
X = iris.data
y = iris.target

Iris数据集包含3种不同的鸢尾花,每种鸢尾花都有4个特征:萼片长度,萼片宽度,花瓣长度,花瓣宽度。我们的目标是将这4个特征减少到2个主要成分。

减少维度

使用PCA降维只需要几行代码。在下面的例子中,我们将首先实例化PCA对象,然后将我们的数据拟合到PCA对象中。最后,我们可以通过访问components_属性来获取新的数据矩阵。

pca = PCA(n_components=2)
X_reduced = pca.fit_transform(X)

在这个例子中,我们将数据矩阵从4维减少到2维。当我们需要将数据矩阵从n维减少到k维时,我们需要将n_components参数设置为k。

可视化

下一步是将减少纬度后的数据可视化。我们使用Matplotlib标准库,它是Python的一个强大的绘图库。

import matplotlib.pyplot as plt

plt.scatter(X_reduced[:, 0], X_reduced[:, 1], c=y)
plt.show()

我们通过将减少维度后的数据的前两个元素的值绘制为散点图来可视化数据。c=y参数使我们可以为不同的类别着色。

完整代码
import numpy as np
from sklearn.decomposition import PCA
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt

# 加载数据
iris = load_iris()
X = iris.data
y = iris.target

# 减少维度
pca = PCA(n_components=2)
X_reduced = pca.fit_transform(X)

# 可视化
plt.scatter(X_reduced[:, 0], X_reduced[:, 1], c=y)
plt.show()

这里是输出结果:

Iris data reduced dimensions