2017-03-03 88 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

非常感謝。看來這不是一個簡單的方法。 –