【发布时间】:2016-11-21 02:26:18
【问题描述】:
据我所知,TDD 的典型工作流程是基于黑盒测试。 首先我们定义接口,然后编写一个或一组测试,然后我们实现通过所有测试的代码。 那么请看下面的例子:
from abc import ABCMeta
class InterfaceCalculator:
__metaclass__ = ABCMeta
@abstractmethod
def calculate_mean(self):
pass
示例测试用例
from unittest import TestCase
class TestInterfaceCalculator(TestCase):
def test_should_correctly_calcluate_mean(self):
X=[1,1]
expected_mean = 1
calcluator =Calculator()
self.assertAlmostEqual(calculator.calculate_mean(X), expected_mean)
我跳过了 Calculator(InterfaceCalculator) 类的实现,因为它很简单。
下面的想法很容易理解。机器学习怎么样? 让我们考虑以下示例。我们想实现猫、狗照片分类器。从界面开始。
from abc import ABCMeta
class InterfaceClassifier:
__metaclass__ = ABCMeta
@abstractmethod
def train_model(self, data):
pass
@abstractmethod
def predict(self, data):
pass
我准备了一套非常简单的单元测试
from unittest import TestCase
class TestInterfaceCalculator(TestCase):
def __init__(self):
self.model = CatDogClassifier()
def test_should_correctly_train_model(self, data):
"""
How can be implemented?
"""
self.model.train_model(data)
def test_should_correctly_calcluate_mean(self):
input ="cat.jpg"
expected_result = "cat"
calcluator =.assertAlmostEqual(self.model.preditct(input), expected_result)
这是使用 TDD 来帮助研究机器学习模型的方式吗?或者在这种情况下,TDD 是没用的。它,只能帮助我们验证输入数据的正确性并为训练好的模型添加非常高水平的测试吗?如何创建良好的自动测试?
【问题讨论】:
-
不能说我已经将其作为测试套件的一部分,但首先想到的是针对基准或朴素分类器测试分类器的交叉验证错误。跨度>
标签: machine-learning tdd