Comment calculer la distance de Canberra en Python (avec exemple)



La distance de Canberra entre deux vecteurs A et B est calculée comme suit :

Distance de Canberra = Σ |A i -B i | / (|UNE je | + |B je |)

où:

  • A i : La ième valeur du vecteur A
  • B i : La i ème valeur dans le vecteur B

Par exemple, supposons que nous ayons les deux vecteurs suivants :

  • UNE = [2, 4, 4, 6]
  • B = [5, 5, 7, 8]

Nous calculerions la distance de Canberra entre A et B comme suit :

  • Distance de Canberra = |2-5|/(2+5) + |4-5|/(4+5) + |4-7|/(4+7) + |6-8|/(6+8)
  • Distance de Canberra = 3/7 + 1/9 + 3/11 + 2/14
  • Distance de Canberra = 0,95527

La distance de Canberra entre ces deux vecteurs est de 0,95527 .

L’exemple suivant montre comment calculer la distance de Canberra entre ces deux vecteurs exacts en Python.

Exemple : Calculer la distance de Canberra en Python

Tout d’abord, créons un tableau NumPy pour contenir chacun de nos vecteurs :

import numpy as np

#define two arrays
array1 = np.array([2, 4, 4, 6])
array2 = np.array([5, 5, 7, 8])

Ensuite, nous pouvons utiliser la fonction canberra() du package SciPy en Python pour calculer la distance de Canberra entre les deux vecteurs :

from scipy.spatial import distance

#calculate Canberra distance between the arrays
distance.canberra(array1, array2)

0.9552669552

La distance de Canberra entre les deux vecteurs est de 0,95527 .

Notez que cette valeur correspond à celle que nous avons calculée manuellement précédemment.

Remarque : Vous pouvez trouver la documentation complète de la fonction canberra() du package SciPy ici .

Ressources additionnelles

Les didacticiels suivants expliquent comment calculer d’autres métriques de distance courantes en Python :

Comment calculer la distance euclidienne en Python
Comment calculer la distance de Manhattan en Python
Comment calculer la distance de Hamming en Python
Comment calculer la distance de Mahalanobis en Python
Comment calculer la distance de Levenshtein en Python

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *