由降维主成分定义的平面的Python方程

时间:2019-04-04 20:29:52

标签: python machine-learning pca plane

我需要了解用python代码编写的飞机方程式。

从3d数据集中应用降维以获取前两个主要成分。

pca.components_是定义平面的这两个向量

array([[-0.93636116,-0.29854881,-0.18465208],        [0.34027485,-0.90119108,-0.2684542]])

我想了解定义平面的最后两行:

我一直在研究所有平面方程,但找不到与z =(R [0,2] * x1 + R [1,2] * x2)/(1-R [ 2,2])

axes = [-1.8, 1.8, -1.3, 1.3, -1.0, 1.0]

x1s = np.linspace(axes[0], axes[1], 10)
x2s = np.linspace(axes[2], axes[3], 10)
x1, x2 = np.meshgrid(x1s, x2s)

C = pca.components_
R = C.T.dot(C)
z = (R[0, 2] * x1 + R[1, 2] * x2) / (1 - R[2, 2])

什么描述R? 我知道这是一个3x3矩阵,在下一行使用了它的最后一列, 但是为什么呢?

这是情节: Plot with the plane

预先感谢您帮助理解它。

可以使用基本平面方程式绘制相同的平面: a x + b y + c * z = 0,(a,b,c)为法向向量。

normal = np.cross(C[0,:],C[1,:])
z_dav = (-normal[0]*x1-normal[1]*x2)/(normal[2])

ax.plot_surface(x1, x2, z, alpha=0.1, color="y")
ax.plot_surface(x1, x2, z_dav, alpha=0.3, color="g")

both planes are the same: z(yellow) and z_dav(green)

无论如何,我仍然想了解这一点:

R = C.T.dot(C)
z = (R[0, 2] * x1 + R[1, 2] * x2) / (1 - R[2, 2])

0 个答案:

没有答案