【发布时间】:2014-09-08 20:08:18
【问题描述】:
我正在使用 sklearn 在 for 循环中运行几种机器学习算法,并想看看每个算法需要多长时间。问题是我还需要返回一个值,并且不想多次运行它,因为每个算法都需要很长时间。有没有一种方法可以使用 python 的 timeit 模块或具有类似功能的类似模块来捕获返回值 'clf'...
def RandomForest(train_input, train_output):
clf = ensemble.RandomForestClassifier(n_estimators=10)
clf.fit(train_input, train_output)
return clf
当我这样调用函数时
t = Timer(lambda : RandomForest(trainX,trainy))
print t.timeit(number=1)
附:我也不想设置全局“clf”,因为我以后可能想做多线程或多处理。
【问题讨论】:
-
如果你强制使用
number=1,为什么还要使用timeit?timeit对于自动处理 repetitive 计时很有用,在这种情况下,您不知道应该运行多少时间才能获得良好的计时等。在您的情况下,只需使用time就可以了并且您不需要任何 hack 即可获得返回值。 -
你能提供一个示例链接让我看看你指的是什么吗?我谷歌时间,你可能正在谈论的模块似乎只涉及格式化日期和时区等
-
从未听说过
time.time()?还是time.clock()?timeit模块使用这些函数来执行计时。如果您只需要进行 one 计时,则可以直接调用它们,就像在 unutbu 答案中使用_timer函数一样(实际上是对time.time或 @987654334 的引用@ 取决于操作系统)。 -
@Bakuriu 我知道 timeit 还可以做其他事情,比如关闭垃圾收集以确保我们进行公平比较。也就是说,我们正在查看执行时间,而不是挂起时间。
标签: python python-2.7 scikit-learn timeit