我有一个带有一组参数的对象,例如:
var obj = new {Param1 = 100; Param2 = 212; Param3 = 311; param4 = 11; Param5 = 290;}
另一方面,我有一个对象列表:
var obj1 = new {Param1 = 1221 ; Param2 = 212 ; Param3 = 311 ; param4 = 11 ; Param5 = 290 ; } var obj3 = new {Param1 = 35 ; Param2 = 11 ; Param3 = 319 ; param4 = 211 ; Param5 = 790 ; } var obj4 = new {Param1 = 126 ; Param2 = 218 ; Param3 = 2 ; param4 = 6 ; Param5 = 190 ; } var obj5 = new {Param1 = 213 ; Param2 = 121 ; Param3 = 61 ; param4 = 11 ; Param5 = 29 ; } var obj7 = new {Param1 = 161 ; Param2 = 21 ; Param3 = 71 ; param4 = 51 ; Param5 = 232 ; } var obj9 = new {Param1 = 891 ; Param2 = 58 ; Param3 = 311 ; param4 = 21 ; Param5 = 590 ; } var obj11 = new {Param1 = 61 ; Param2 = 212 ; Param3 = 843 ; param4 = 89 ; Param5 = 210 ; }
在列出的对象中找到第一个obj最接近的匹配的最佳(最简单)算法是什么?
您必须先定义 最接近的匹配项, 然后才能找到它!!
1-许多人使用的一种方法是 均方误差(或欧氏距离):
计算所有对象的均方误差:
Sqr(obj.Param1-obj1.Param1) + Sqr(obj.Param2-obj1.Param2) + ..... // for obj1 Sqr(obj.Param1-obj2.Param1) + Sqr(obj.Param2-obj2.Param2) + ..... // for obj2
然后选择最小值的那个
2-您也可以使用最小绝对误差:
Abs(obj.Param1-obj1.Param1) + Abs(obj.Param2-obj1.Param2) + ..... // for obj1 Abs(obj.Param1-obj2.Param1) + Abs(obj.Param2-obj2.Param2) + ..... // for obj2
3-同样,您也可以将 k最近的邻居应用于上面选择的任何条件
这完全取决于这些参数的属性…
有关更多阅读,您可以查看分类算法列表