2017-03-03 1 views
0

J'essaie d'utiliser sklearn.mixture.BayesianGaussianMixture pour adapter un ensemble de trajectoires. Chaque trajectoire consiste en un ensemble de points de données, par ex.sklearn BayesianGaussianMixture Affectation de cluster basée sur plus d'un point de données

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

t_i est la trajectoire de la i-ième et (x_ik, y_ik) est le point de k-th sur la trajectoire. Par exemple, x_ik pourrait représenter l'état d'un robot au pas de temps k, et y_ik pourrait représenter l'action du robot. Chaque composant GP sera un mappage de x_ik -> y_ik. C'est assez standard pour apprendre un GP en utilisant sklearn. Toutefois, lorsque vous souhaitez apprendre un modèle de mélange gaussien avec le processus Dirichlet avant, vous devez décider lorsqu'un nouveau composant GP sera ajouté.

La classe BayesianGaussianMixture vous fournit uniquement une interface pour l'affectation de cluster basée sur un seul point de données. En d'autres termes, si un nouveau point de données appartient à un nouveau cluster ou non. Ce qui m'intéresse, c'est que: Donner un ensemble de trajectoires, où chaque trajectoire peut contenir beaucoup de points de données. Y a-t-il un moyen de faire une assignation de cluster basée sur la trajectoire? C'est-à-dire, compte tenu d'une nouvelle trajectoire, décidez si elle appartient à un nouveau cluster ou non.

Répondre

0

Je voudrais aller avec l'approche suivante. Dans un premier temps, essayez de convertir vos coordonnées continues en un ensemble de valeurs discrètes. Par exemple, vous pouvez diviser votre carte en cellules et attribuer à chaque point (x_i, y_i) une étiquette, basée sur une cellule. Dans ce cas, chaque trajectoire est une séquence d'étiquettes

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

Maintenant, il est possible d'utiliser quelque chose comme bag-of-words ou word2vec pour représenter chaque trajectoire (probablement de longueur différente) avec un ensemble fixe de caractéristiques, ou, dans le En d'autres termes, en tant que point singe dans un espace de grande dimension. Il pourrait y avoir un moyen plus simple, mais je ne suis pas au courant.

+0

@MinChen Je pense que cela n'a pas beaucoup d'importance, du moins d'un point de vue théorique. Pratiquement, cela compliquera la procédure d'attribution d'étiquettes discrètes à chaque point de données. Je ne suis pas en mesure de donner des conseils ici, il faut plonger dans le problème lui-même. – CaptainTrunky

+0

merci beaucoup. Il semble qu'il n'y a pas de moyen facile. –