主成分分析实验报告
时间: 2023-06-28 17:13:18 浏览: 298
实验目的:
主成分分析(PCA)是一种数据降维方法,旨在找到能够最大程度地解释数据方差的新变量组合。本实验旨在通过使用Python实现PCA来掌握PCA的基本原理和应用。
实验步骤:
1.导入必要的库和数据集
首先,我们需要导入必要的库和数据集。本实验使用的数据集是鸢尾花数据集,该数据集包含150个样本和4个特征。
```python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
iris = load_iris()
X = iris.data
y = iris.target
```
2.标准化数据
在进行PCA之前,我们需要对数据进行标准化处理,以确保每个特征具有相同的权重。
```python
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
```
3.计算协方差矩阵
接下来,我们需要计算特征之间的协方差矩阵。协方差矩阵告诉我们不同特征之间的相关性。
```python
cov_matrix = np.cov(X_scaled.T)
```
4.计算特征值和特征向量
我们可以使用numpy的linalg.eig函数计算协方差矩阵的特征值和特征向量。
```python
eigen_values, eigen_vectors = np.linalg.eig(cov_matrix)
```
5.选择主成分
在所有特征向量中,我们只需要选择前n个向量,其中n是我们想要保留的主成分的数量。我们可以通过特征值来确定主成分的数量,即前n个特征值的总和占所有特征值总和的比例。
```python
total = sum(eigen_values)
variance_explained = [(i / total) for i in sorted(eigen_values, reverse=True)]
cumulative_variance_explained = np.cumsum(variance_explained)
plt.plot(range(1, 5), cumulative_variance_explained)
plt.xlabel('Number of Principal Components')
plt.ylabel('Cumulative Explained Variance')
plt.show()
```
6.转换数据
最后,我们需要将原始数据转换为新的特征空间。我们可以使用前n个特征向量来转换数据。
```python
n_components = 2
projection_matrix = (eigen_vectors.T[:][:n_components]).T
X_pca = X_scaled.dot(projection_matrix)
```
实验结果:
我们可以使用散点图来可视化转换后的数据。
```python
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y)
plt.xlabel('Principal Component 1')
plt.ylabel('Principal Component 2')
plt.show()
```
可以看出,PCA成功地将4个特征转换为了2个主成分。转换后的数据仍然可以很好地区分不同类型的鸢尾花。
结论:
本实验使用Python实现了主成分分析,并将其应用于鸢尾花数据集。结果表明,PCA可以有效地将高维数据转换为低维数据,并保留原始数据的关键特征。
阅读全文