我想将Google Vision API人脸识别的输出转换为ML分类器的特征集。对于每个训练实例,我会得到一个预测人脸列表,该列表表示为一个字典列表,其中值本身就是字典,这些“值字典”的值本质上是分类的,如下所示:
$ faces[191:197]
[{'face_1': {'joy': 'VERY_UNLIKELY',
'surprise': 'UNLIKELY',
'anger': 'VERY_UNLIKELY',
'sorrow': 'VERY_UNLIKELY',
'headwear': 'VERY_UNLIKELY'}},
{},
{},
{'face_1': {'joy': 'VERY_LIKELY',
'surprise': 'LIKELY',
'anger': 'VERY_UNLIKELY',
'sorrow': 'VERY_UNLIKELY',
'headwear': 'VERY_UNLIKELY'},
'face_2': {'joy': 'VERY_UNLIKELY',
'surprise': 'VERY_UNLIKELY',
'anger': 'VERY_UNLIKELY',
'sorrow': 'VERY_UNLIKELY',
'headwear': 'VERY_LIKELY'}},
{'face_1': {'joy': 'VERY_LIKELY',
'surprise': 'VERY_UNLIKELY',
'anger': 'VERY_UNLIKELY',
'sorrow': 'VERY_UNLIKELY',
'headwear': 'VERY_UNLIKELY'},
'face_2': {'joy': 'POSSIBLE',
'surprise': 'VERY_UNLIKELY',
'anger': 'VERY_UNLIKELY',
'sorrow': 'VERY_UNLIKELY',
'headwear': 'VERY_UNLIKELY'}}]
我的目标是将其转换为ML可读格式。我想使用这样的编码(n是整个数据集中预测面的最大数量):
joy_1 surprise_1 , ...., anger_n sorrow_n headwear_n
img_1 1 2 , ...., 0 0 0
img_2 0 0 , ...., 0 0 0
img_3 0 0 , ...., 0 0 0
img_4 5 4 , ...., 0 0 0
.
.
.
我使用了sklearn dictVectorizer和labelEncoder作为其他功能,这些功能是dict列表,但这些dict没有像此数据源那样将dict作为值
我不知道有什么东西能够以用户定义的方式处理序数值(
VERY_UNLIKELY
,VERY_LIKELY
)到整数的映射,同时还处理字典中可能的键下面的内容可能是最简单的:
结果:
如果每个图像中最多有8个面,则可以通过设置
N_PEOPLE_PER_IMAGE = 8
轻松扩展相关问题 更多 >
编程相关推荐