Hoe de dist-functie in r te gebruiken (met voorbeelden)


De functie dist() in R kan worden gebruikt om een afstandsmatrix te berekenen, die de afstanden tussen rijen in een matrix of dataframe weergeeft.

Deze functie gebruikt de volgende basissyntaxis:

dist(x, methode=”Euclidisch”)

Goud:

  • x: de naam van het matrix- of datablok.
  • methode: de te gebruiken afstandsmeting. De standaardinstelling is „Euclidisch“, maar de opties omvatten „maximum“, „manhattan“, „canberra“, „binary“ of „minkowski“.

De volgende voorbeelden laten zien hoe u deze functie in de praktijk kunt gebruiken met het volgende dataframe:

 #define four vectors
a <- c(2, 4, 4, 6)
b <- c(5, 5, 7, 8)
c <- c(9, 9, 9, 8)
d <- c(1, 2, 3, 3)

#row bind four vectors into matrix
mat <- rbind(a, b, c, d)

#view matrix
mast

  [,1] [,2] [,3] [,4]
a 2 4 4 6
b 5 5 7 8
c 9 9 9 8
d 1 2 3 3

Voorbeeld 1: Gebruik dist() om de Euclidische afstand te berekenen

De Euclidische afstand tussen twee vectoren A en B wordt als volgt berekend:

Euclidische afstand = √ Σ(A i -B i ) 2

De volgende code laat zien hoe je een afstandsmatrix berekent die de Euclidische afstand tussen elke rij van een matrix in R weergeeft:

 #calculate Euclidean distance between each row in matrix
dist(mat)

          ABC
b4.795832                    
c 10.148892 6.000000          
d 3.872983 8.124038 13.190906

Zo interpreteert u het resultaat:

  • De Euclidische afstand tussen lijn a en lijn b is 4,795832 .
  • De Euclidische afstand tussen lijn a en lijn c is 10,148892 .
  • De Euclidische afstand tussen lijn a en lijn d is 3,872983 .
  • De Euclidische afstand tussen lijn b en lijn c is 6,000000 .
  • De Euclidische afstand tussen lijn b en lijn d is 8,124038 .
  • De Euclidische afstand tussen lijn c en lijn d is 13,190906 .

Voorbeeld 2: Gebruik dist() om de maximale afstand te berekenen

De maximale afstand tussen twee vectoren, A en B, wordt berekend als het maximale verschil tussen alle paarsgewijze elementen.

De volgende code laat zien hoe je een afstandsmatrix berekent die de maximale afstand tussen elke rij van een matrix in R weergeeft:

 #calculate Maximum distance between each row in matrix
dist(mat, method=" maximum ")

  ABC
b 3    
c 7 4  
d 3 5 8

Voorbeeld 3: Gebruik dist() om de afstand vanaf Canberra te berekenen

De Canberra-afstand tussen twee vectoren A en B wordt als volgt berekend:

Afstand vanaf Canberra = Σ |A i -B i | / | AI | + | Bje |

De volgende code laat zien hoe je een afstandsmatrix berekent die de Canberra-afstand tussen elke rij van een matrix in R weergeeft:

 #calculate Canberra distance between each row in matrix
dist(mat, method=" canberra ")

          ABC
b 0.9552670                    
c 1.5484515 0.6964286          
d 1.1428571 1.9497835 2.3909091

Voorbeeld 4: Gebruik dist() om de binaire afstand te berekenen

De binaire afstand tussen twee vectoren, A en B, wordt berekend als het aandeel elementen dat de twee vectoren delen.

De volgende code laat zien hoe je een afstandsmatrix berekent die de binaire afstand tussen elke rij van een matrix in R weergeeft:

 #calculate Binary distance between each row in matrix
dist(mat, method=" binary ")

  ABC
b 0    
c 0 0  
d 0 0 0

Voorbeeld 5: Gebruik dist() om de Minkowski-afstand te berekenen

De Minkowski-afstand tussen twee vectoren A en B wordt als volgt berekend:

Minkowski-afstand = (Σ|a i – b i | p ) 1/p

waarbij i het i- de element van elke vector is en p een geheel getal is.

De volgende code laat zien hoe je een afstandsmatrix berekent die de Minkowski-afstand toont (met behulp van p=3) tussen elke rij van een matrix in R:

 #calculate Minkowski distance between each row in matrix
dist(mat, method=" minkowski ", p= 3 )

          ABC
b 3.979057                    
c 8.439010 5.142563          
d 3.332222 6.542133 10.614765

Aanvullende bronnen

Hoe Jaccard-gelijkenis in R te berekenen
Hoe cosinusovereenkomst in R te berekenen
Hoe het puntproduct in R te berekenen

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert