我有一个流处理流程,其中部分由一个包含一个或多个元素的四元组列表组成,让我们看一些例子:
1)”st_li_list”:[{“f0″:3,”f1″:4,”f2″:1,”f3″:12,”arity”:4},{“f0″:1,”f1″:3,”f2″:1,”f3″:3,”arity”:4},{“f0″:15,”f1″:12,”f2″:1,”f3″:180,”arity”:4}]}’2)”st_li_list”:[{“f0″:1,”f1″:24,”f2″:8,”f3″:24,”arity”:4},{“f0″:50,”f1″:11,”f2″:1,”f3″:550,”arity”:4},{“f0″:2,”f1″:10,”f2″:3,”f3″:20,”arity”:4},{“f0″:15,”f1″:10,”f2″:1,”f3″:150,”arity”:4}, {“f0″:4,”f1″:6,”f2″:2,”f3″:24,”arity”:4},{“f0″:1,”f1″:3,”f2″:1,”f3″:3,”arity”:4}]}’3)”st_li_list”:[{“f0″:15,”f1″:12,”f2″:1,”f3″:180,”arity”:4}]}’
如你所见,list1_有3个元素,list2_有6个,而list_3只有一个。我希望进行某种标准化或编码,以便创建一个始终保持相同大小的“摘要”向量,以供ML模型使用,同时不丢失任何信息。list_1有3个元素这一事实对于“摘要向量”来说肯定是有用的信息,可能是列表中的第一个元素,然后是…?(任何长度都可以,所以即使是100个元素也没问题)
我不想为每个参数设置特定的范围,因为这可能会导致错误的范围设定。
如果有任何超级巧妙的解决方案来实现这一点,我将非常感激!也许有一些算法可以做到这一点?
回答:
要么你将整个序列输入到神经网络中,要么你需要将每个序列总结为一个固定长度的特征向量。具体方法取决于信息的代表意义,一般来说,你可以使用:
- 值的数量
- 最小/最大值
- 均值/中位数
- 标准差
- 分位数
但例如,如果序列代表一种演变,可能计算平均/总体增长/下降率是有意义的。如果它们代表对象之间的某种坐标,可能计算平均/总体距离是有意义的。等等。