TDD 在机器学习中的好处

2024-04-15

据我所知,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就没用了。它只能帮助我们验证输入数据的正确性并为训练好的模型添加非常高水平的测试吗?如何创建良好的自动测试?


使用 TDD,您可以以测试的形式描述预期的行为,然后创建代码来满足测试。虽然这对于机器学习模型的某些组件来说效果很好,但对于机器学习模型的高级行为通常效果不佳,因为事先无法准确地知道预期的行为。开发机器学习模型的过程通常涉及尝试不同的方法,看看哪一种最有效。行为可能以百分比来衡量,例如,识别的准确率是 95%,而不是绝对的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TDD 在机器学习中的好处 的相关文章

随机推荐

  • 哪些 Java 库可用于生成 KML? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何正确计算两个日期之间的实际月份数?

    我已经按照方法getDiffDateMap计算两个日期之间的差异并返回Map分别表示毫秒 秒 分钟 小时 天 月和年的整数 public static Map
  • 业务逻辑是主观的吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用 Visual Studio 2013 和 Intel Fortran 编译混合 C++/C 代码

    我正在尝试编译一个简单的 C Fortran 混合程序 但存在链接问题 我使用的是Visual Studio 2013 Ultimate和Intel Visual Fortran Compiler XE 14 该程序非常简单 是从网上的某个
  • 我正在制作 PEMDAS 求解器,但不知道该写什么

    我正在尝试做一个PEMDAS https en wikipedia org wiki Order of operations用户输入 PEMDAS 问题的求解器 例如 他们输入 4 4 2 5 程序就会为他们解答 是否有任何代码可以让 py
  • OnNewText 事件后何时重绘 VirtualTreeView?

    我使用此代码来填充 VirtualStringTree 并允许重命名项目 Structure for the tree struct TVSTdata UnicodeString Name Initialization o
  • 如何停止散景服务器?

    我确实使用散景来绘制本地 LAN 上的实时传感器数据 Bokeh 是使用 popen 从我的 python 应用程序中启动的 Popen bokeh serve host localhost 5006 host 192 168 8 100
  • V100 和 P100 在 Google Compute Engine 上的可用性

    描述 我刚刚尝试了一段时间 使用我的个人帐户设置或保留用于机器学习的虚拟机 我在 n1 上使用了几个月 具有大约 8 GB 或更多 GB RAM 以及用于机器学习的 P100 或 V100 现在尝试了至少一半具有 P100 V100 可用性
  • 使用 bash 添加文件扩展名

    使用 bash 将文件扩展名 jpg 添加到无扩展名文件的好方法是什么 Strip jpg from all filenames for f in jpg do mv f f jpg done Add jpg to all filename
  • 这个符号在 php 中的对象或空值中意味着什么[重复]

    这个问题在这里已经有答案了 您能解释一下运营商做什么吗 gt 在 PHP 中做 因为我有这段代码 drive objDrive gt func gt getDriver gt value 目前只是一个提案 你可以去找找在此输入链接描述 ht
  • 在 Docker 容器中运行数据库的性能问题

    有没有人注意到在 docker 容器中运行数据库 MySQL 或 Postgres 有任何性能问题 我被告知会发生严重的性能下降 请指教 Docker 本身带来的开销非常小 它只是将进程与主机上的其他进程隔离 但是 您可以采取多种措施来降低
  • Dask“没有名为 xxxx 的模块”错误

    使用dask分布式我尝试提交一个位于另一个名为worker py的文件中的函数 在工人中我有以下错误 没有名为 worker 的模块 但是我无法弄清楚我在这里做错了什么 这是我的代码示例 import worker def run self
  • StaleDataException:尝试在关闭游标后访问它

    FATAL EXCEPTION main Process com example lenovo phone PID 4885 android database StaleDataException Attempted to access a
  • 如何访问具有相同名称的不同表的多个mysql行

    我认为我已经接近解决方案 但还没有完全明白 我想做的是从两个不同的表中获取product naam和categorie naam 下面的代码为我提供了两者的 naam 我可以访问它们 但现在我想要产品中的所有内容 而不仅仅是名称 然后我不知
  • 使用 sinon 断言使用所需参数进行了特定的存根调用

    假设您正在测试一个函数 该函数将使用不同的参数多次调用依赖项 var sut ImportantFunction function dependency dependency a 1 dependency b 2 使用QUnit Sinon
  • 如何在MAC上用python打开Excel实例?

    我认为这个问题之前已经被问过 但还不清楚 在最初的问题中 用户提供了 excel exe 它是 Windows 可执行扩展 不适用于 mac 我需要在 MAC 上用 Python 打开新的 Excel 实例 我应该导入哪个模块 我是一个新手
  • 如何将 perforce 用户更改为超级用户

    如何将标准 perforce 用户更改为超级用户 看到很多关于如果超级用户密码丢失该怎么办的问题 但没有看到关于如何创建另一个超级用户或授予当前用户超级用户权限的问题 您将需要更新该用户的 Perforce Protections 表 例如
  • 从 React Native 应用程序中删除 console.log

    如果您删除console log 在将 React Native 应用程序部署到商店之前调用 是否存在一些性能或其他问题 如果console log 调用保留在代码中 有没有办法使用某些任务运行程序删除日志 类似于 Grunt 或 Gulp
  • 将数据从两个 UItextfield 传递到新的视图控制器

    我有点坚持尝试将数据从一个视图控制器上的两个 UITextfield 传递到另一个视图控制器 基本上我得到了以下物品 视图控制器 h import
  • TDD 在机器学习中的好处

    据我所知 TDD 的典型工作流程是基于黑盒测试的 首先我们定义接口 然后编写一个或一组测试 然后我们实现通过所有测试的代码 那么请看下面的例子 from abc import ABCMeta class InterfaceCalculato