Benutzerdefinierte Abstandsmetrik für agglomeratives Clustering in Mathematica

  • Kann eine benutzerdefinierte Distanzmetrik definiert werden, um den Abstand zwischen zwei Clustern im agglomerativen Clustering in Mathematica zu bestimmen?

    Ich habe eine Dimension 3 Daten mit String-Werten in allen drei Dimensionen.

    Ich möchte meine eigene Methode zum Messen des Abstands zwischen zwei beliebigen Clustern (Strings hier ...) definieren.

    Ich möchte das Clustering stoppen, wenn der Abstand zwischen zwei Clustern einen bestimmten Schwellenwert "T" überschreitet.

    Ist dies in Mathematica verfügbar?

    20 April 2012
    Theo
2 answers
  • Das Tutorial Tutorial / PartitioningDataIntoClusters enthält Informationen zu den Entfernungsfunktionen ( auch für Strings, zB HammingDistance).

    20 April 2012
  • Nicht als integrierte Funktion. Sie müssen Ihre eigenen schreiben. Glücklicherweise ist es ziemlich einfach und der Vorteil ist, dass Sie jetzt eine Funktion haben, die die für Ihre Daten wichtige benutzerdefinierte Entfernung bereitstellt.

     euclidianDistance[{x_List, y_List, 
       z_List}, {xX_List, xY_List, 
      xZ_List}] := Block[{ed, dist, len, lenp},
        len = Length[xX];
        lenp = Length[x];
       If [len != lenp,
          Print["euclidianDistance:Standard and Sample sizes do not match"]];
        ed = Table[((x[[i]] - 
              xXL[[i]])^2 + (y[[i]] - 
              xY[[i]])^2 + (z[[i]] - 
              xZ[[i]])^2)^0.5, {i, 1, len}];
        dist = Chop[ed /. n_ /; n <= 0 -> 0.000000001]
        ]
     

    Hier ist ein einfaches Beispiel für die euklidische Entfernung.

    20 April 2012
    Verbeia