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