如何在数据科学领域使用面向对象的编程方法?

数据挖掘 机器学习 Python
2021-09-24 02:58:17

我被问过很多次,为什么在编码时不使用类、对象和面向对象的概念?

我所做的?

编写 Python 脚本以从不同来源获取数据,应用预处理代码,创建必要的变量,并将这些细化的变量用于建模过程。

我怎样做?

编写执行特定任务所需的函数,所有函数将被一一调用,作为自上而下的程序化方法。对于不同的模块,我将它们保存到不同的 python 文件中,然后简单地导入它们。

在当前的过程中,我从未找到使用 OOP 概念的动力。

您能否建议我如何改进我的编码实践,以及我在当前架构中存在哪些可以通过 OOP 来解决的缺陷?

2个回答

也有例外,但一般来说,OOP 风格更广泛地用于软件工程师编写的可靠生产代码。非软件工程师(例如数据科学家)在 POC 或笔记本上工作时更多地使用功能样式等。OOP 将有助于避免重复发明轮子或多次编写相同或相似的代码。函数在一定程度上实现了这一点,但通过类继承、多态等,类更加灵活。在更改任何内容之前,您应该考虑每种样式的优缺点以及您当前的情况。

使用 OOP 的一些原因:您在一个有很多人的大型项目中工作,并且您的代码需要可靠且可移植

坚持使用 Functions 等的一些原因:您与一两个其他人一起从事小型项目,代码是 POC,不会在生产中使用,并且生命周期短。

关于面向对象编程背后的动机,这是一个非常有趣的问题。

使 OOP 特别有吸引力的主要原因是函数和对象的可重用性,您可以在不同的分析中重用它们。例如,对于一个 NLP 模型,您创建一个清理文本的函数(返回小写文本,没有停用词)。几天后,您想生成另一个 NLP 模型,该模型以与之前的 NLP 模型相同的方式预处理文本。在这里,您可以将 clean text 方法替换为 Preprocessing 类,并以与以前相同的方式重用 clean text 方法来清理文本。

OOP 背后的另一个原因是它的易读性。我发现跟踪 OOP 代码中出现错误的位置明显比函数式编程代码更容易。反过来,这使得在一个类中测试和调试单独的组件变得更加容易。

这是我的看法,我相信每个人都有适合您和您所在团队的编程方式。我期待阅读其他人对此问题的看法/答案。