Question

J'ai un objet avec un ensemble de paramètres tels que:

var obj = new {Param1 = 100; Param2 = 212; Param3 = 311; param4 = 11; Param5 = 290;}

De l'autre côté j'ai une liste d'objets:

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 ; }

Quel est le meilleur (le plus facile) algorithme pour trouver le match le plus proche pour la première obj dans les objets répertoriés?

Était-ce utile?

La solution

Vous devez définir le terme match le plus proche avant d'essayer de le trouver !!



1- Une façon beaucoup de gens utilisent est moyenne d'erreur Squared (ou euclidienne Distance ):

Calculer l'erreur quadratique moyenne pour tous les objets:

Sqr(obj.Param1-obj1.Param1) + Sqr(obj.Param2-obj1.Param2) + ..... // for obj1
Sqr(obj.Param1-obj2.Param1) + Sqr(obj.Param2-obj2.Param2) + ..... // for obj2

et choisissez celui avec la valeur minimale ...



2- Vous pouvez également utiliser erreur absolue minimum:

Abs(obj.Param1-obj1.Param1) + Abs(obj.Param2-obj1.Param2) + ..... // for obj1
Abs(obj.Param1-obj2.Param1) + Abs(obj.Param2-obj2.Param2) + ..... // for obj2

et choisissez celui avec la valeur minimale ...



3- Aussi, vous pouvez appliquer k-plus proche voisin avec tous les critères que vous avez choisi ci-dessus



Tout dépend des propriétés de ces paramètres ...

Pour plus de lecture que vous pouvez regarder Liste des algorithmes de classification

Autres conseils

depends, je suppose. Plusieurs possibilités viennent à l'esprit:

  • SAD: calculer la différence absolue de chaque paire de paramètres (celui que vous tester et chacun de vos candidats) et les résumer. Le plus bas nombre est le plus proche
  • L2-Norm: Calculer la différence de chaque paire de paramètres, les carrés, les résumer, prendre la racine carrée
  • Cosinus: Multiplier chaque paramètre avec l'autre paramètre, résumé. diviser le résultat par produit de la longueur (L2-Norm) des deux objets

Bien sûr, il y a des milliers d'autres possibilités, donc vous devez spécifier, ce que vous voulez exactement!

Vous pouvez également utiliser le euclidienne Distance .

Essentiellement, vous faites semblant chaque objet est un point en 5 dimensions et chercher le point le plus proche est (i.e. .: a la distance la plus courte).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top