【问题标题】:How to analyse abitrary 3D plane in 2D如何在 2D 中分析任意 3D 平面
【发布时间】:2013-12-17 14:00:07
【问题描述】:

我需要在最佳拟合 2d 平面中以 2d (x,y) 方式分析 3d 曲线,其中原始 3d 曲线可能覆盖最大的区域。

鉴于: 2 组数据点 (x,y,z),形成任意 3D 曲线。

有: 使用最小二乘平面拟合计算 2 个表面平面

需求: 1)每个原始数据集的数据点投影到相应的最小二乘拟合平面上 2) 投影数据点转换为二维 XY 平面,用于在最合适平面的上下文中对原始曲线进行二维分析。

知道如何获得这个吗?我认为第一步应该是将每个原始数据点正交投影到计算平面上——对吗?

但我不知道如何将这些东西从那里转换为 2D 几何图形,我将在其中处理 (x,y) 数据点?

下图为原始数据图(红蓝曲线)及其计算平面(红蓝面)

【问题讨论】:

  • 您是否只需要以最能捕捉方差的方式降低一组点的维数?听起来您正在尝试重新发明PCA
  • 同意 goncalopp - 您只需将 PCA 应用于您的数据集并获得 2 个第一个组件
  • goncalop - 是的,就是这样!所以我只需要我的原始数据集并将 PCA 应用于它?不需要我做的飞机和其他东西?

标签: python numpy matplotlib linear-algebra pca


【解决方案1】:

如您所说,如果您成功找到了平面,最好的办法是旋转和平移您的坐标系,以便查看自然投影中的点。

如果您的 (x,y,z) 数据位于平面上,那么您知道 a*x+b*y+c*z = 1。如果您能够找到 a、b 和 c,您可以使用转换来做三元图(Take a look at wikipedia)

您唯一需要做的就是将您的坐标转换如下:

x' = a*x ,y' = b*y, z' = c*z

这样,你的数据将满足 x'+y'+z' = 1。之后,使用变换 x'' = 0.5*(2y'+z') 和 y'' = sqrt(3)/2 * z',您的数据将以其自然投影显示。 如果您的数据始终为正,则曲线将位于三角形区域中。

【讨论】:

  • 如果数据点不在平面上,这会起作用吗?由于这些平面是根据完整数据集计算的 LMS 平面,因此它们只是近似值。
  • 是的,只要您在使用转换之前将数据投影到平面上,它就会起作用。
猜你喜欢
  • 2016-05-19
  • 2017-11-17
  • 2014-08-18
  • 1970-01-01
  • 1970-01-01
  • 2015-12-18
  • 1970-01-01
  • 2014-07-11
  • 2012-08-17
相关资源
最近更新 更多