Question

Je voudrais utiliser la parcelle à distance KNN pour être en mesure de savoir quelle valeur dois-je au format eps choisir l'algorithme dbscan. Basé sur cette page :

L'idée est de calculer, la moyenne des distances de chaque point à son k voisins les plus proches. La valeur de k sera spécifiée par le et l'utilisateur correspond à MinPts. Ensuite, ces k-distances sont tracées en un ordre croissant. L'objectif est de déterminer le « genou », qui correspond au paramètre optimal d'EPS.

Utilisation de python avec numpy / sklearn, j'ai les points suivants avec la distance suivante pour 6 KNN:

X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
nbrs = NearestNeighbors(n_neighbors=len(X)).fit(X)
distances, indices = nbrs.kneighbors(X)

# Indices

[[0 1 2 3 4 5]
 [1 0 2 3 4 5]
 [2 1 0 3 4 5]
 [3 4 5 0 1 2]
 [4 3 5 0 1 2]
 [5 4 3 0 1 2]]

# Distances
[[ 0.          1.          2.23606798  2.82842712  3.60555128  5.        ]
[ 0.          1.          1.41421356  3.60555128  4.47213595  5.83095189]
[ 0.          1.41421356  2.23606798  5.          5.83095189  7.21110255]
[ 0.          1.          2.23606798  2.82842712  3.60555128  5.        ]
[ 0.          1.          1.41421356  3.60555128  4.47213595  5.83095189]
[ 0.          1.41421356  2.23606798  5.          5.83095189  7.21110255]]

je calcule la distance moyenne:

distances.mean()
2.9269575028354495

Le problème est que je ne comprends pas comment pourrais-je représenter exactement le même terrain que les distances avec l'axe des Y et le nombre de points en fonction des distances sur l'axe des x en utilisant Python.

Merci pour votre aide.

Était-ce utile?

La solution

  1. prendre la dernière colonne de cette matrice
  2. trier par ordre décroissant
  3. index de la parcelle, la distance
  4. l'espoir de voir un genou (si la distance ne fonctionne pas bien. Il pourrait y avoir aucune)
Licencié sous: CC-BY-SA avec attribution
scroll top