Per quanto ne so, il flusso di lavoro tipico di TDD si basa sul test della scatola nera. Prima definiamo l'interfaccia, quindi scriviamo uno o una serie di test e quindi implementiamo il codice che supera tutti i test. Così guardare l'esempio qui sotto:Vantaggi del TDD nell'apprendimento automatico
from abc import ABCMeta
class InterfaceCalculator:
__metaclass__ = ABCMeta
@abstractmethod
def calculate_mean(self):
pass
esemplare caso di test
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)
tralascio implementazione della classe Calcolatrice (InterfaceCalculator), perché è banale.
L'idea seguente è abbastanza facile da capire. Che ne dici di Machine Learning? Considera l'esempio seguente. Vorremmo implementare la classificazione di foto di cani e gatti. Inizia dall'interfaccia.
from abc import ABCMeta
class InterfaceClassifier:
__metaclass__ = ABCMeta
@abstractmethod
def train_model(self, data):
pass
@abstractmethod
def predict(self, data):
pass
ho preparato insieme molto davanzale delle Unittests
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)
E 'il modo per utilizzare TDD per aiutare il lavoro sul modello di apprendimento della macchina? O In questo caso TDD è inutile. Può solo aiutarci a verificare la correttezza dei dati di input e aggiungere un test di livello molto alto del modello addestrato? Come posso creare buoni test automatici?
Non posso dire che ho fatto questo come parte di una suite di test, ma la prima cosa che viene in mente è testando errore di convalida incrociata del classificatore contro un benchmark o classificatore ingenuo. –