我正在尝试开发一种非常简单的机器学习示例来识别数组之间的相似性。 出于这个原因,我试图计算两个不同长度的数组之间的平均值。
例如,如果我有:
array_1 = [0, 4, 5];
array_2 = [4, 2, 7];
平均值是:
average_array = [2, 3, 6];
但是,如果我遇到以下情况,如何计算平均值:
array_1 = [0, 4, 5, 10, 7];
array_2 = [4, 2, 7];
如您所见,阵列的长度不同。 有没有我可以应用的算法来解决这个问题? 有没有人有想法或建议?
当然我可以将第二个数组的缺失值视为0,并将平均值评估为,例如:
average_array = [2, 3, 6, 5, 3.5];
或将值视为“ null ”并具有:
average_array = [2, 3, 6, 10, 7];
但这两种方法是否合适? 或者有更聪明的东西?
感谢您的帮助!!
答案 0 :(得分:2)
要回答您的问题,我们确实需要有关您要实现的目标的更多信息。
我试图开发一种非常简单的机器学习示例 识别数组之间的相似性。出于这个原因,我试图这样做 计算2个不同长度的阵列之间的平均值。
根据您的用例,相似性可能完全不同。
例如:
一般建议:
但总的来说,请看一下平滑算法。例如Kneyser-Ney或Good-Turing平滑。他们明确地处理比较长度可能不同的概率向量(换句话说,有明确的零条目)
https://en.wikipedia.org/wiki/Good%E2%80%93Turing_frequency_estimation
答案 1 :(得分:0)
如果在获取数组的平均值后,您打算采用数组的差异 mod 和平均数组,那么如果要测量数组,则可能是正确的方向不同程度的差异。
但是对于不同长度的数组,我建议你也考虑额外元素的索引。
对于
array_1 = [0, 4, 5, 10, 7];
array_2 = [4, 2, 7];
平均值应为average_array = [2, 3, 6, 6.5, 5.5];
6.5 = (10 + 3(index) + 0(element) ) / 2
和
5.5 = (7 + 4(index) + 0(element))/2
考虑索引的原因是这种方法的长度因子也是隐藏的。不过这只是我的2美分。可能有更好的算法。
您还应该查看this帖子