Benefícios do TDD no aprendizado de máquina

Tanto quanto eu sei, o fluxo de trabalho típico do TDD é baseado em testes de caixa preta. Primeiro, definimos a interface, depois escrevemos um ou conjunto de testes e, em seguida, implementamos o código que passa em todos os testes. Então veja o exemplo abaixo:

from abc import ABCMeta


class InterfaceCalculator:
    __metaclass__ = ABCMeta

    @abstractmethod
    def calculate_mean(self):
        pass

Caso de teste exemplar

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) 

Eu pulo a implementação da classe Calculator (InterfaceCalculator) porque é trivial.

A ideia a seguir é bem fácil de entender. E o aprendizado de máquina? Vamos considerar o seguinte exemplo. Gostaríamos de implementar o classificador de fotos de gatos e cachorros. Comece pela interface.

from abc import ABCMeta


class InterfaceClassifier:
    __metaclass__ = ABCMeta

    @abstractmethod
    def train_model(self, data):
        pass

    @abstractmethod
    def predict(self, data):
        pass

Eu preparei conjunto muito peitoril dos 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)

É a maneira de usar o TDD para ajudar a trabalhar no modelo de aprendizado de máquina? Ou, neste caso, o TDD é inútil. Isso só pode nos ajudar a verificar a correção dos dados de entrada e adicionar testes de nível muito alto ao modelo treinado? Como posso criar bons testes automáticos?

questionAnswers(2)

yourAnswerToTheQuestion