使用PCA绘制高维数据

很多人在遇到高维数据的时候都会头疼,不知道怎么把他们更好地画出来,要么就是选取几列来作图,但如何选择也成了一个问题。

PCA在降低维度的同时,使得数据变成更容易被画出来的低维数据。现在以sklearn中的iris数据为例。

from sklearn.datasets import load_iris
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt
pca = PCA(n_components=2)
X, y =load_iris(return_X_y=True)
X_pca = pca.fit_transform(X)
plt.plot(X_pca[y==0,0], X_pca[y==0,1],'bo',label='Setosa')
plt.plot(X_pca[y==1,0], X_pca[y==1,1],'g^',label='Versicoulor')
plt.plot(X_pca[y==2,0], X_pca[y==2,1],'r*',label='Viriginica')
plt.legend(loc=0)

图像如下:
使用PCA绘制高维数据_第1张图片
当然,也可以绘制成三维图形,只需把n_components改成3

pca = PCA(n_components=3)
X, y =load_iris(return_X_y=True)
X_pca = pca.fit_transform(X)

from mpl_toolkits.mplot3d import Axes3D

fig=plt.figure(figsize=(10,10))
ax = fig.add_subplot(111, projection='3d')

ax.scatter(X_pca[y==0,0], X_pca[y==0,1],X_pca[y==0,2],c='b',label='Setosa')
ax.scatter(X_pca[y==1,0], X_pca[y==1,1],X_pca[y==1,2],c='g',label='Versicoulor')
ax.scatter(X_pca[y==2,0], X_pca[y==2,1],X_pca[y==2,2],c='r',label='Viriginica')

plt.legend(loc=0)

图像如下:
使用PCA绘制高维数据_第2张图片
同样的道理,在处理高维数据聚类分析时,使用pca也是个很好的选择。

你可能感兴趣的:(统计学/数据处理/机器学习,可视化,数据可视化,python,机器学习,数据分析)