使用python我的朴素贝叶斯分类器的执行时间

时间:2017-09-24 02:07:14

标签: python

我想根据每个分类器的执行时间来比较两个分类器。如何衡量分类器(如朴素贝叶斯)的执行时间?

1 个答案:

答案 0 :(得分:0)

这是使用timeit模块比较函数的两个实现的执行时间的一般方法:

假设您有两个模块first.pysecond.py,它们分别实现了一个名为FirstClassifierSecondClassifier的类,它们都实现了一个名为{{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'选项,并且要定时的主表达式转到命令的第一个非标志参数。