Python 如何生成时间范围的簇?

Python 如何生成时间范围的簇?,python,pandas,scikit-learn,Python,Pandas,Scikit Learn,我有一个时间框架 0 2020-08-01 23:59:59 1 2020-08-01 23:59:49 2 2020-08-01 20:52:17 3 2020-08-01 19:02:34 4 2020-08-01 18:38:06 我想在其中添加一列,通过创建一个集群来建立索引。例如,如下所示: 0 2020-08-01 23:59:59 1 1 2020-08-01 23:59:49 1 2 2020-08-01 20:52:17

我有一个时间框架

0    2020-08-01 23:59:59
1    2020-08-01 23:59:49
2    2020-08-01 20:52:17
3    2020-08-01 19:02:34
4    2020-08-01 18:38:06
我想在其中添加一列,通过创建一个集群来建立索引。例如,如下所示:

0    2020-08-01 23:59:59   1
1    2020-08-01 23:59:49   1
2    2020-08-01 20:52:17   2
3    2020-08-01 19:02:34   3
4    2020-08-01 18:38:06   3
我为这个例子写了这篇文章,因为我们可以看到3个集群,它们是最近/最近的时间戳

from sklearn.cluster import KMeans
mat = df['datetime'].values
kmeans = KMeans(n_clusters=3)
kmeans.fit(mat.iloc[:,1:])
y_kmeans = kmeans.predict(mat.iloc[:,1:])

df['cluster'] = y_kmeans   

然而,上面的代码也不起作用。嗯,我有数以百万计的数据,显然不知道我需要创建多少个集群。我读过肘部法可以使用,但不确切地知道它是如何做到的。有人能指点一下怎么做吗?

kmeans
假设您知道集群的数量


如果您需要一种通过算法确定簇数的方法,例如,当一组数据点彼此“接近”(接近程度由
eps
参数确定)时,可以使用哪个方法形成簇。如果您有大量样本,而且成本非常高,您还可以尝试使用较小的(代表性的)数据子集来探索数据中的任何群集。

DBSCAN将根据您提供给的参数输出随机数量的群集it@SergeyBushmanov我不会说“随机”,但是是的,基于
eps
minu样本
。有64种以上不同的方法来定义“最佳”聚类数。数据分析师有责任根据业务逻辑、可解释性、可再现性和任何其他相关因素确定集群数量。Algo不是业务逻辑的替代品。@SergeyBushmanov DBSCAN是一种已建立的聚类算法,在其他63种算法中有其用途。当然,你是对的,用例决定了选择,尽管我从来没有这样说过,所以我不确定你是赞成还是反对。因此,如果您想在答案中添加一些内容或提供您自己的答案,我建议您这样做。