用Python代码中的sklearn 中的decomposition 模块对sklearn中自带的手写数字数据集进行PCA降维,将维度降为2,然后绘制降维后的样本散点图的代码
时间: 2024-09-08 08:02:02 浏览: 80
在Python中,使用scikit-learn (sklearn) 的 `decomposition` 模块进行主成分分析(PCA)并可视化手写数字数据集通常涉及以下步骤:
首先,你需要导入所需的库,包括 `matplotlib` 和 `numpy`,以及 `sklearn` 的 `datasets`, `decomposition`, 和 `preprocessing`:
```python
import matplotlib.pyplot as plt
import numpy as np
from sklearn import datasets
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler
```
接下来,加载手写数字数据集MNIST:
```python
digits = datasets.load_digits()
X = digits.data
y = digits.target
```
由于PCA是对数值特征的数据进行处理,所以需要先标准化数据:
```python
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
```
现在我们可以创建一个PCA对象,并指定降到2个维度:
```python
pca = PCA(n_components=2)
principal Components = pca.fit_transform(X_scaled)
```
最后,绘制降维后的样本散点图:
```python
plt.figure(figsize=(8, 6))
for i in range(10):
plt.scatter(principal Components[y == i, 0], principal Components[y == i, 1],
label=f'Digit {i}', alpha=.8)
plt.legend(loc='best')
plt.xlabel('First Principal Component')
plt.ylabel('Second Principal Component')
plt.title('PCA Visualization of Digits dataset')
plt.grid(True)
plt.show()
```
这将生成一张显示10个类别(0到9的手写数字)在降维后的二维空间分布的图。
阅读全文