from mpl_toolkits.mplot3d import Axes3D
#Generate some 3D data
points_per_class = 200
mean = [0,0,0]
cov = [[5,0,0],[0,2,0],[0,0,1]]
X = np.random.multivariate_normal(mean, cov, (points_per_class))
Y = np.full((points_per_class),0)
#Plot some 3d data
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(X[:, 0], X[:, 1], X[:, 2],c=Y, edgecolor='k')
ax.quiver([0,0], [0,0], [0,0], [10,-10], [0,0], [0,0],color='red')
ax.quiver([0,0], [0,0], [0,0], [0,0], [10,-10], [0,0],color='blue')
ax.quiver([0,0], [0,0], [0,0], [0,0], [0,0],[4,-4],color='green')
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
plt.axis('scaled')
plt.show()
次に上記の3次元から、x軸(赤い矢印)とy軸(青い矢印)の2つの次元に投影します。
#Get rid of a dimension
reduced_X = X[:,0:2]
#Plot the data
plt.scatter(reduced_X[:, 0], reduced_X[:, 1], c=Y, s=20, edgecolor='k')
plt.quiver([0,0], [0,0], [6,-6], [0,0], color='red',scale_units='xy',
width=.01 , scale=1)
plt.quiver([0,0], [0,0], [0,0], [4,-4], color='blue',scale_units='xy',
width=.01, scale=1)
plt.axis('scaled')
plt.show()
上記の図から、z軸(緑の矢印)を削除し、すべてをx軸とy軸(赤と青の矢印)に
投影していることがわかります。
これらの特徴(または次元)には基本的な意味はありませんが
各特徴が上記の例の中の次元のようにデータセットで簡単に見方を変える事ができます。
さて、今回はここまでにします。
PCAは詳しく次回も解説していこうと思います