2017-03-03 91 views
0

我正在尝试使用sklearn.mixture.BayesianGaussianMixture来适应一组轨迹。每个轨迹由一组数据点组成,例如,sklearn BayesianGaussianMixture基于多个数据点的聚类分配

t_i = {x_i1, y_i1, x_i2, y_i2, ... , x_iN, y_iN}, 

其中t_i是第i个轨迹和(x_ik, y_ik)是轨迹上的第k个点。例如,x_ik可以表示步骤k中机器人的状态,y_ik可以表示机器人采取的动作。每个GP组件都将是x_ik - > y_ik的映射。这对于使用sklearn学习GP是非常标准的。

但是,如果您想先学习使用Dirichlet Process的高斯混合模型,则必须在添加新GP组件时决定

BayesianGaussianMixture类仅为您提供基于单个数据点进行集群分配的界面。换句话说,新数据点是否属于新簇。

我感兴趣的是:给出一组轨迹,其中每个轨迹可能包含大量数据点。有没有一种方法可以根据轨迹进行聚类分配?即给定新的轨迹,决定它是否属于新的群集。

回答

0

我会采用以下方法。

首先,尝试将连续坐标转换为一组离散值。例如,您可以将地图划分为单元格,并根据单元格为每个点(x_i,y_i)分配一个标签。在这种情况下,每个轨迹变得标签

traj_1: cell_id_0 -> cell_id_1 -> ... -> cell_id_n 
traj_2: cell_id_3 -> cell_id_6 -> ... -> cell_id_m 
... 

现在可以使用类似bag-of-wordsword2vec与一套固定的特征来表示每个轨迹(据推测不同的长度),或者,在所述序列换言之,在高维空间中作为单点。可能有一个更简单的方法,但我不知道它。

+0

@MinChen我认为这并不重要,至少从理论的角度来看。实际上,这会使分配标签到每个数据点的过程复杂化。我无法在这里提供任何建议,它需要深入探究问题本身。 – CaptainTrunky

+0

非常感谢。看来这不是一个简单的方法。 –