我有一組要點。它們的幾何(SRID:4326)存儲在數據庫中。 我已經給出了一個代碼,旨在將這些點與DBSCAN進行聚類。參數設置如下:eps = 1000,min_points = 1。DBSCAN的參數eps,python
我獲得的距離不到1000米。我相信距離不到1000米的兩個點屬於同一個簇。 epsilon真的是米嗎?
的代碼如下:
self.algorithm='DBSCAN'
X=self.data[:,[2,3]]
if self.debug==True:
print 'Nbr of Points: %d'% len(X)
# print X.shape
# print dist_matrix.shape
D = distance.squareform(distance.pdist(X,'euclidean'))
# print dist_matrix
# S = 1 - (D/np.max(D))
db = DBSCAN(eps, min_samples).fit(D)
self.core_samples = db.core_sample_indices_
self.labels = db.labels
目的不是要找到另一種方式來運行它,但真正瞭解EPS的價值。它代表的是距離。 Min_sample被設置爲1,因爲我接受確實具有1個樣本大小的聚類。
請勿使用「euclidean」。您的數據不在歐幾里德向量空間中。在歐洲和美國的大部分地區,距離將被扭曲30%以上(而且北方更嚴重);而歐幾里得距離不了解座標系的-180°環繞。還要避免計算距離矩陣,這需要'O(n^2)'內存和運行時間。使用索引加速來快速找到鄰居。 –