Numpy BallTree现在支持不规则数据的自定义度量吗?

Numpy BallTree现在支持不规则数据的自定义度量吗?,numpy,machine-learning,scikit-learn,Numpy,Machine Learning,Scikit Learn,我有一个数据集,以以下形式描述了一些跟踪: traceId1: event1 time1 event2 time2 ... eventN timeN traceId2: event1 time1 event2 time2 ... eventM-1 timeM-1 eventM timeM . . . 也就是说,该文件包含多个跟踪。每个跟踪由几个事件和这些事件发生的时间组成。每条记录道的长度可能不同。因此,我无法将数据转换为矩阵 我编写了一个类点,将每个跟踪作为一个对象保存。我还编写了一个自定义

我有一个数据集,以以下形式描述了一些跟踪:

traceId1: event1 time1 event2 time2 ... eventN timeN
traceId2: event1 time1 event2 time2 ... eventM-1 timeM-1 eventM timeM
.
.
.
也就是说,该文件包含多个跟踪。每个跟踪由几个事件和这些事件发生的时间组成。每条记录道的长度可能不同。因此,我无法将数据转换为矩阵

我编写了一个类点,将每个跟踪作为一个对象保存。我还编写了一个自定义函数来计算每对轨迹之间的距离。当我尝试用我的度量构建BallTree时,它给出:

  File "/home/yangzhao/anaconda3/lib/python3.5/site-packages/numpy/core/numeric.py", line 474, in asarray
    return array(a, dtype, copy=False, order=order)

TypeError: float() argument must be a string or a number, not 'Point'
基于此,BallTree似乎只接受可以转换为float的数据类型。既然这是2013年发布的,现在有什么解决办法吗?例如,在类定义中编写一个float方法


PS:我可以自己用Python写一个BallTree,但是它没有经过优化,所以工作起来很慢。系统限制了递归的最大深度,因此无法在我的完整数据集上工作。我还用C++实现了BalTrar,在Python中调用这个函数是个好主意吗?< /P> < P>只会使用可以形成2D浮点数组的数据来处理球树。您可以在对象的初始化中看到这一点。我预计代码库不会改变以支持定制对象的数组

在任何情况下,由于所使用的Python回调的局限性,自定义距离度量都不会有很好的性能。如果您有其他C++代码用于您的问题,则将其直接包在Python中使用是相当简单的,例如.< /P>