Подготовка к кластеризации - PullRequest
0 голосов
/ 09 января 2019

Я хочу применить алгоритм кластеризации, например, kMeans или иерархическую кластеризацию, к моим данным, как показано ниже:

sample1: [(0.9; 1),(0.9; 1),(0.9; 3)]
sample2: [(0.9; 2)]
sample3: [(0.9; 1),(0.9; 6),(0.8; 9)]

Эти цифры являются предсказаниями детектора объекта. Количество элементов указывает number_of_detections. Кортеж представляет (score; class_id)

Таким образом, число обнаружений будет варьироваться для каждого изображения, и могут быть повторяющиеся значения, как это было в примере 1.

Я не могу найти правильный способ подготовки функций, так как sklearn требует [n_samples, n_features] в качестве входных данных.

Я пробовал FeatureHasher и DictVectorized из sklearn, но они не работали, так как в исходных данных у меня есть массивы больших размеров. Это ошибка, которую я получаю:

TypeError: only size-1 arrays can be converted to Python scalars

Каким будет хороший набор функций? И как я мог это представить?

оригинальный вывод:

[{'detection_scores': array([0.99999404, 0.9999926 ], dtype=float32), 'image_id': '003126', 'detection_classes': array([1, 1], dtype=uint8)}, 
{'detection_scores': array([0.9997228], dtype=float32), 'image_id': '006716', 'detection_classes': array([7], dtype=uint8)}, 
{'detection_scores': array([0.999998  , 0.99998057, 0.999936  , 0.99987483, 0.9997434 , 0.9994124 , 0.9992119 , 0.99829096, 0.99525344, 0.9896298 ], dtype=float32), 'image_id': '002389', 'detection_classes': array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1], dtype=uint8)}, 
{'detection_scores': array([0.99999535], dtype=float32), 'image_id': '000580', 'detection_classes': array([1], dtype=uint8)}, 
{'detection_scores': array([0.9999645 , 0.99868864, 0.99829394, 0.9968401 , 0.992488 , 0.9895281 , 0.8299444 ], dtype=float32), 'image_id': '005467', 'detection_classes': array([1, 2, 2, 2, 2, 1, 4], dtype=uint8)}]
...