我想在数据上应用诸如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]作为输入。
我尝试了sklearn的FeatureHasher和DictVectorized,但是它们没有像我具有高维数组的原始数据那样起作用。这是我收到的错误:
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)}]