【发布时间】:2016-10-08 04:01:55
【问题描述】:
我希望对几个时间戳(以分钟为单位)进行聚类。 所以到目前为止我所做的是:
1) 将点转换为弧度
#points containing time value in minutes
points = [100, 200, 600, 659, 700]
def convert_to_radian(x):
return((x / (24 * 60)) * 2 * pi)
rad_function = np.vectorize(convert_to_radian)
points_rad = rad_function(points)
2) 生成距离矩阵
#generate distance matrix from each point
dist = points_rad[None,:] - points_rad[:, None]
3) 分配到每个点的最短距离
dist[((dist > pi) & (dist <= (2*pi)))] = dist[((dist > pi) & (dist <= (2*pi)))] -(2*pi)
dist[((dist > (-2*pi)) & (dist <= (-1*pi)))] = dist[((dist > (-2*pi)) & (dist <= (-1*pi)))] + (2*pi)
dist = abs(dist)
现在我想在距离矩阵上使用 DBSCAN,如何将其聚类到弧度距离?
谢谢!
【问题讨论】:
-
我认为你的距离矩阵不是距离矩阵。
-
为什么要将简单的线性测量转换为角度? (顺便说一句,大多数时钟的表盘上都是 12 小时,而不是 24 小时)
-
@Anony-Mousse 它是!我设法弄明白了!
-
@TomMorris 我想区分早上 9 点和晚上 9 点
标签: python numpy scipy scikit-learn data-mining