如何在应用 DBSCAN 之前将时间戳、日期时间转换为数字

How convert timestamp, datatime to number before to apply DBSCAN

我正在准备我的数据集以应用 DBSCAN 聚类。在执行此操作之前,我需要将所有功能转换为数字,以便使用 StandardScaler()。我的问题是我正在与时间戳和数据时间作斗争。我删除了日期和时间戳列,只留下了以秒为单位的时间列,它看起来是整数。但是我仍然收到

之类的错误

X = StandardScaler().fit_transform(X)
TypeError: float() 参数必须是字符串或数字,而不是 'Timestamp'

非常感谢

 duration             float64
 power                float64
 duration_2           float64
 duration_2_energy    float64
 time2                int64
 dtype: object

不要对所有内容进行标准缩放。坏主意多于好主意。因为你破坏信息。

相反,请阅读 DBSCAN 作者关于 generalized DBSCAN 的文章。它展示了如何正确使用更复杂的数据。

Sander, Jörg; Ester, Martin; Kriegel, Hans-Peter; Xu, Xiaowei (1998).
Density-Based Clustering in Spatial Databases: The Algorithm GDBSCAN and Its Applications.
Data Mining and Knowledge Discovery. Berlin: Springer-Verlag. 2 (2): 169–194. doi:10.1023/A:1009745219419.

在这里,您可能想要使用多个 epsilon 阈值。例如,您想要一个关于一天中的时间的阈值,以及一个关于数字属性的附加阈值。