我有一个日期列表,我想分成3个集群。现在,我可以看到我应该看看k-means的提示,但到目前为止我找到的所有例子都与坐标有关,换句话说,就是一对列表项。
我想把这个日期列表添加到三个单独的列表中,表明它们是在某个事件之前,期间还是之后。我没有时间参加这个活动,但这就是为什么我通过将日期/时间分成三组来猜测它。
任何人都可以帮一个关于如何使用像numpy或scipy这样的东西来做这个的简单例子吗?
答案 0 :(得分:0)
以下是一些可能不是最佳答案但应该有所帮助的解决方法。
您可以将日期绘制为从开始日期(例如一周)转换的持续时间 并将日期转换为从起点开始的分钟或小时的数字表示。
这些都将沿x轴绘制图形,但仍然可以使用Kmeans,并且在图形上仍然可以看到聚类。
以下是numpy的更多示例:Python k-means algorithm
答案 1 :(得分:0)
k-means 独占。更确切地说:对于连续和线性值。
原因是平均值功能。许多人忽略了卑鄙对k-means的作用(尽管它在名字中......)
关于非数值数据,你如何计算均值?
存在二进制或分类数据的一些变体。例如,IIRC有k模式,并且有k-medoids(PAM,在medoids周围分区)。
我不清楚你想要实现的整体...你的数据似乎是一维的,所以你可能想看看这里关于一维数据的许多问题(因为数据可以排序后,它可以比多维数据更有效地处理。
通常,即使您将数据投影到unix时间(自1970年1月1日起的秒数),k-means也可能只会为您返回平庸的结果。原因是它会尝试使三个区间具有相同的长度。
你有没有理由怀疑"","" """"有相同的持续时间?如果没有,请不要使用k-means。
但是你可能想看看KDE;并绘制估计的密度。一旦你理解了密度对你的任务的作用,你就可以开始研究适当的算法(例如,获取密度估计的导数,并寻找最大的增加/减少,或估计"平均"水平,并寻找最长的平均间隔。)