Python 隔离三维数据点的策略

Python 隔离三维数据点的策略,python,numpy,scipy,nearest-neighbor,convex-hull,Python,Numpy,Scipy,Nearest Neighbor,Convex Hull,我有两组点,一组来自分析,另一组用于分析数据的后处理结果 黑色的分析数据是分散的。 用于结果的点为红色。 以下是同一绘图上的两组: 我的问题是:我将插值到红色点上,但正如您所看到的,有红色点落在黑色数据集的空白区域内。插值导致这些点上存在非零值,但在最终数据集中这些值必须为零 我一直在考虑几种将这些值设置为零的策略。以下是几个没有特定顺序的: 查找顶点仅包含黑色数据点且在凸集内仅包含红色数据点的凸包。此外,该船体的面积应最大化,同时仍满足两个标准 这已经被证明是相当困难的实现,主要是因为必

我有两组点,一组来自分析,另一组用于分析数据的后处理结果

黑色的分析数据是分散的。

用于结果的点为红色。

以下是同一绘图上的两组:

我的问题是:我将插值到红色点上,但正如您所看到的,有红色点落在黑色数据集的空白区域内。插值导致这些点上存在非零值,但在最终数据集中这些值必须为零

我一直在考虑几种将这些值设置为零的策略。以下是几个没有特定顺序的:

  • 查找顶点仅包含黑色数据点且在凸集内仅包含红色数据点的凸包。此外,该船体的面积应最大化,同时仍满足两个标准
  • 这已经被证明是相当困难的实现,主要是因为必须选择哪些黑色数据点应该从凸壳的迭代搜索中排除

  • 使用单个值(如1或0)向数据集添加额外维度,以便两者都可以是同一数据集的一部分,但仍然可以区分。使用kNN(最近邻)算法仅选择空隙中的红点。其基本思想是,空洞中的红点将有最近的n(6?)个最近邻,这些最近邻位于它们自己的集合中。仅由空边界分隔的红色数据点将具有不同的数量,最后,从边界移除至少一步的红色点将具有几乎所有黑色数据集邻居。我看到的这种方法的现有算法返回索引或数组掩码,这两种方法都是一个很好的解决方案。我还没有尝试实现这一点

  • 从用于创建黑色数据集的SolidWorks模型中手动提取边界点。不,在这么多层面上。这需要手动完成,一个z级一个z级,我所展示的图片只代表了实际完整集的一小部分

  • 通过对红色数据点子集进行几次细化,手动创建遮罩,我可以直观地确认这些红色数据点是感兴趣的。还有,没有。除非我已经没有选择了

  • 如果这是一个有明确解决方案的问题,那么我看不到它。我希望建议的解决方案2将是一个,因为这实际上看起来将是最有趣的实施和看到的行动。不管怎样,正如标题所说,我仍然在寻找解决这个问题的策略方向。我唯一确信的是Python是正确的工具

    编辑: 分析数据包含x、y、z和3个电场分量值Ex、Ey和Ez。黑色数据集中的空洞位于金属内部,因此电势没有变化,或者换句话说,电场值都完全为零

    此图显示了一个单独的z层,使用scipy的griddata对Ex分量进行线性插值。黑色椭圆形是该中心跑道形空隙边界的粗略指示器。您可以看到椭圆形内部有红色和蓝色(x方向上的+和-E字段)。它应该是零(图中的绿色中尉)。完成的数据将用于跟踪带电粒子束,因此,如果其中一个粒子的路径实际穿过空隙,则进行跟踪的软件只能判断电势是否保持恒定,即它知道路径穿过固体金属,并丢弃该路径


    如果空隙中存在电场,粒子跟踪软件不知道存在某种结构,并且会发生不好的事情。

    你可能可以通过称为“支持向量机”的大数据技术来解决这个问题。如前所述,分配0和1分类,然后通过libsvm算法运行此操作。您应该能够使用此模型对需要归零的点进行分类和标识,并以编程方式进行


    我意识到SVM和libsvm实现有一条学习曲线。如果这超出了您的工作预算,我深表歉意。

    太好了!但我不明白你的目标是什么。你能用一两句话重新说明上面的图片有什么问题,以及你想要的结果是什么吗。我知道你们试图“隔离3d点”,但也许我不明白你们为什么要这样做,以及你们想实现什么。如果我对此一无所知,我就无法真正理解你给出的所有具体细节,因为这个问题缺少了一个关于你试图做什么的非技术性描述。一般的非技术性描述是这样的:我必须在另一个程序中使用这些数据。如果空隙内的值不为零,其他软件程序将产生糟糕的结果。Prune,我在研究支持向量机时读过几遍:对于许多估计器,包括支持向量机,每个特征具有单位标准偏差的数据集对于获得好的预测非常重要。这对你有意义吗?既然我只是在寻找空洞中的点的索引,我是否应该缩放轴以提供单位sd。。。沿单个轴或三维点集的方向?是。这也属于一般术语“特征缩放”。空间中的每个维度都是一个“特征”。一个经典的例子是根据建筑面积、卧室数量和房屋年龄预测房价。卧室一般在1-4间之间;年龄0-100岁;面积为500-5000平方英尺。如果你能在一个数量级内得到这些范围,许多算法会收敛得更好,比如用1000平方英尺表示面积,用几十年表示年龄。一个简单的优化器是将所有东西按Z分数进行缩放:在每个特征或维度内,有多少标准差高于/低于