最近,我看到 keras 和 sklearn 在数据预处理方面存在一些基本的功能重叠。所以我有点困惑,是否应该引入对另一个库(如 sklearn)的依赖来进行基本数据预处理,或者我应该只坚持使用 keras,因为我正在使用 keras 来构建我的模型。我想知道像这样的场景的区别
- 这对生产有好处
- 这会给我更好更快的响应
- 仅针对 1 或 2 个功能引入对其他库的依赖是否有任何问题
- 它与 tensorboard 等其他工具或 matplotlib、seaborn 等库具有更好的兼容性。
提前致谢。
最近,我看到 keras 和 sklearn 在数据预处理方面存在一些基本的功能重叠。所以我有点困惑,是否应该引入对另一个库(如 sklearn)的依赖来进行基本数据预处理,或者我应该只坚持使用 keras,因为我正在使用 keras 来构建我的模型。我想知道像这样的场景的区别
提前致谢。
这对生产有好处
他们都很好。sklearn 可以在生产中使用tensorflow.keras
这会给我更好更快的响应
我认为这并不取决于库,而是取决于模型和数据集的大小。这才是真正重要的。这两个模块都可以用来创建非常优化和快速的模型。
仅针对 1 或 2 个功能引入对其他库的依赖是否有任何问题
sklearn一起使用没有问题tensorflow.keras。在 ML/数据科学领域,它们可能是最常见的两种工具。不用担心!
它与 tensorboard 等其他工具或 matplotlib、seaborn 等库具有更好的兼容性。
好吧,keras现在是tensorflow(it's tensorflow.keras) 的一个分支。TensorBoard 是专门为它设计的。除此之外,所有其他可视化库(例如matplotlib和seaborn)都完全兼容。
最后的想法:
使用sklearn和keras顺序没有问题,数据预处理步骤可以使用更多的库。不要担心再使用一个,特别是如果它是一个非常可靠和流行的,例如sklearn.
但是,您可能希望将 PCA 替换为Autoencoders。这可以说是最好的降维技术,它是非线性的,这意味着它可以用更少的变量携带更多的信息,并且可以在tensorflow.keras. 这样,您将拥有一个神经网络来生成数据的压缩表示,以及另一个进行预测的神经网络。当然,这只是一个建议,你比任何人都更了解你的任务。
我的建议是构建一个sklearn 管道,其中一步是 sklearn PCA,最后一步是您的 Keras 模型。
Sklearn 管道很容易投入生产,并且可以处理更多的转换。
如果没有您的确切场景的更多上下文,这很难回答。但是,通常情况下,将大型库添加到项目中仅用于一项功能并不是最好的主意——尤其是当它像 PCA 一样简单时。PCA 实现起来相当简单,即使只使用 NumPy,如果您使用 Keras,您可能会使用 NumPy。但是,随着您的进步,如果您发现自己需要越来越多的 scikit-learn 功能,那么您可能应该引入它。
对于生产来说,如果没有更多的上下文就很难说。总是有利有弊。
更快的响应,这又取决于。网络或磁盘 I/O 是否会成为您最大的瓶颈?很多问题