我如何知道算法(例如k-means)运行多长时间?

时间:2014-10-15 11:48:20

标签: performance algorithm k-means

例如,我在100万个数据点上运行k-means算法。每个点都是128维,我想要1000个簇。维基百科告诉我,它的复杂性是n ^(dk + 1)log(n),其中d是维数,k个簇数和n个实例数。 知道了,我如何估计我的8-Gb RAM,2.6GHz Intel Core i5 MacBook Pro的运行时间?计算此估算值的最佳方法是什么?有没有办法在理论上计算它,或者我应该在较小的集合上进行一些实验,看看它需要多长时间? 在我花费数小时或数天而不知道什么时候停止之前,我真的想要粗略估计。 非常感谢你的帮助!我真的很感激:)。

聚苯乙烯。我正在使用蟒蛇的scipy kmeans

2 个答案:

答案 0 :(得分:0)

做一些实验。 k-means之所以流行只是因为它通常运行得多,比渐近界限所暗示的要快得多。

答案 1 :(得分:0)

有很多与机器相关且与算法相关的细节隐藏在big-O常量中,从而无法在理论上估算它(对于你的机器和你的SciPy)。

然而,没有任何东西可以阻止你在实验中找到常数 - 正如你所说:"在较小的集合上进行一些实验"。