Tôi muốn sử dụng biểu đồ khoảng cách knn để có thể tìm ra giá trị eps nào tôi nên chọn cho thuật toán DBSCAN. Dựa trên này trang:
Ý tưởng là để tính toán, trung bình khoảng cách của mọi điểm đến k lân cận gần nhất của nó. Giá trị của k sẽ được chỉ định bởi người dùng và tương ứng với MinPts. Tiếp theo, các khoảng cách k này được vẽ theo thứ tự tăng dần. Mục đích là để xác định đầu gối đầu mối, tương ứng với tham số eps tối ưu.
Sử dụng python với numpy / sklearn, tôi có các điểm sau, với khoảng cách sau cho 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]]
sau đó tôi tính khoảng cách trung bình:
distances.mean()
2.9269575028354495
Vấn đề là tôi không hiểu chính xác làm thế nào tôi có thể biểu diễn cùng một âm mưu với chúng với khoảng cách theo trục y và số điểm theo khoảng cách trên trục x bằng python.
Cảm ơn sự giúp đỡ của bạn.