python用鸢尾花数据集实现pca
时间: 2023-07-24 13:04:19 浏览: 117
好的,以下是Python代码实现鸢尾花数据集的PCA:
```python
import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.preprocessing import StandardScaler
# 加载鸢尾花数据集
iris = load_iris()
X = iris.data
y = iris.target
# 数据标准化
scaler = StandardScaler()
X_std = scaler.fit_transform(X)
# 计算协方差矩阵
cov_mat = np.cov(X_std.T)
# 计算特征值和特征向量
eig_vals, eig_vecs = np.linalg.eig(cov_mat)
# 对特征值进行排序
eig_pairs = [(np.abs(eig_vals[i]), eig_vecs[:, i]) for i in range(len(eig_vals))]
eig_pairs.sort(reverse=True)
# 选择前两个特征向量
w = np.hstack((eig_pairs[0][1].reshape(4, 1), eig_pairs[1][1].reshape(4, 1)))
# 将数据转换到新的空间
X_pca = X_std.dot(w)
# 将结果可视化
df = pd.DataFrame(data=X_pca, columns=['PC1', 'PC2'])
df['target'] = y
```
代码的实现步骤如下:
1. 加载鸢尾花数据集,并将数据标准化。
2. 计算协方差矩阵。
3. 计算协方差矩阵的特征值和特征向量。
4. 对特征值进行排序,选择前两个特征向量。
5. 将数据转换到新的空间。
6. 将结果可视化。
在这个例子中,我们选择了前两个特征向量进行转换,因此我们可以将数据可视化为二维图形。可以使用Matplotlib等库将结果绘制成散点图等形式。
阅读全文