我想根据每个分类器的执行时间来比较两个分类器。如何衡量分类器(如朴素贝叶斯)的执行时间?
答案 0 :(得分:0)
这是使用timeit
模块比较函数的两个实现的执行时间的一般方法:
假设您有两个模块first.py
和second.py
,它们分别实现了一个名为FirstClassifier
和SecondClassifier
的类,它们都实现了一个名为{{1}的方法}。还假设他们有一个名为classify
的方法,当被调用时会读取一些训练数据并训练其模型,并且您想要测量train
方法的速度。
所以first.py将是:
classify
而second.py将是:
# Fill in imports here.
import random
class FirstClassifier(object):
def __init__(self):
# Fill in initialization code here.
pass
def train(self):
# Fill in code to train model here.
pass
def classify(self, text):
# Fill in classification code here.
# Dummy "classification":
return random.choice(['sports', 'politics', 'video games'])
您可以使用# Fill in imports here.
class SecondClassifier(object):
def __init__(self):
# Fill in initialization code here.
pass
def train(self):
# Fill in code to train model here.
pass
def classify(self, text):
# Fill in classification code here.
# Dummy "classification":
return 'sports'
执行classify
方法,如下所示:
timeit
示例输出,表示“游戏以平局结束”的分类。平均需要0.417微秒。
python -m timeit -s 'from first import FirstClassifier;classifier = FirstClassifier();classifier.train();' 'classifier.classify("The game ended in a draw.")'
第二次实施:
1000000 loops, best of 3: 0.417 usec per loop
示例输出,表示“游戏以平局结束”的分类。平均需要0.0836微秒。
python -m timeit -s 'from second import SecondClassifier;classifier = SecondClassifier();classifier.train();' 'classifier.classify("The game ended in a draw.")'
这些10000000 loops, best of 3: 0.0836 usec per loop
命令的一般形式为timeit
。因此,需要执行以准备要测量的函数的代码转到python -m timeit -s 'SETUP_CODE' 'CODE_TO_TIME'
选项,并且要定时的主表达式转到命令的第一个非标志参数。