我试图为 scikit-learn DBSCAN 实现指定一个自定义聚类函数:
def geodistance(latLngA, latLngB):
print latLngA, latLngB
return vincenty(latLngA, latLngB).miles
cluster_labels = DBSCAN(
eps=500,
min_samples=max(2, len(found_geopoints)/10),
metric=geodistance
).fit(np.array(found_geopoints)).labels_
然而,当我打印出距离函数的参数时,它们根本不是我所期望的:
[ 0.53084126 0.19584111 0.99640966 0.88013373 0.33753788 0.79983037
0.71716144 0.85832664 0.63559538 0.23032912]
[ 0.53084126 0.19584111 0.99640966 0.88013373 0.33753788 0.79983037
0.71716144 0.85832664 0.63559538 0.23032912]
这就是我的found_geopoints 数组的样子:
[[ 4.24680600e+01 1.40868060e+02]
[ -2.97677600e+01 -6.20477000e+01]
[ 3.97550400e+01 2.90069000e+00]
[ 4.21144200e+01 1.43442500e+01]
[ 8.56111000e+00 1.24771390e+02]
...
那么为什么距离函数的参数不是纬度经度对呢?
我似乎找到了一种解决方法,可以使用以下方法计算距离矩阵:http://scikit-learn.org/stable/modules/ generated/sklearn.metrics.pairwise.pairwise_distances.html http://scikit-learn.org/stable/modules/generated/sklearn.metrics.pairwise.pairwise_distances.html然后用它作为参数DBSCAN(metric='precomputed').fit(distance_matrix)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)