有没有三维PCA相关的python代码
时间: 2023-11-13 22:57:40 浏览: 85
当数据集包含多个特征时,PCA 可以通过对数据集进行三维降维来可视化数据集。下面是 Python 中使用 scikit-learn 库进行三维 PCA 的示例代码:
```python
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from sklearn.decomposition import PCA
# 创建数据集
np.random.seed(1)
X = np.dot(np.random.random(size=(100, 3)), np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]))
# 执行PCA
pca = PCA(n_components=3)
pca.fit(X)
X_pca = pca.transform(X)
# 可视化数据集
fig = plt.figure(1, figsize=(4, 3))
plt.clf()
ax = Axes3D(fig, rect=[0, 0, .95, 1], elev=48, azim=134)
for name, label in [('Class 1', 0), ('Class 2', 1), ('Class 3', 2)]:
ax.text3D(X[y == label, 0].mean(),
X[y == label, 1].mean(),
X[y == label, 2].mean(), name, horizontalalignment='center',
bbox=dict(alpha=.5, edgecolor='w', facecolor='w'))
# 用不同颜色绘制每个类的点云
ax.scatter(X_pca[:, 0], X_pca[:, 1], X_pca[:, 2], c=y, cmap=plt.cm.nipy_spectral)
ax.w_xaxis.set_ticklabels([])
ax.w_yaxis.set_ticklabels([])
ax.w_zaxis.set_ticklabels([])
plt.show()
```
这段代码将创建一个随机生成的三维数据集,并使用 PCA 对其进行降维处理。最后,使用 matplotlib 库可视化降维后的数据集。
阅读全文