是否应该对输入数据进行缩放以进行实时分类?

Posted

技术标签:

【中文标题】是否应该对输入数据进行缩放以进行实时分类?【英文标题】:Should input data be scaled for real-time classification? 【发布时间】:2021-10-18 07:23:17 【问题描述】:

我正在开发一个应用程序,它使用 LSTM 模型接收智能手机的传感器数据(加速度计和陀螺仪)。我已经对模型进行了训练和测试,并获得了大约 95% 的可接受准确度。

我已经使用 StandardScaler() 缩放了训练和测试数据(仅在训练数据上安装了缩放器),但我的问题是,如果我要将此模型部署到 android Studio 以利用该模型进行实时分类,这会是一个问题,因为我已经使用 Scaled 数据训练了模型,但在现实世界中,数据将是未触及的数据。有没有一种方法可以将缩放数据应用于新数据?如果是这样,我将不胜感激有关如何解决此问题的建议。

【问题讨论】:

在这种情况下,您的管道还应该包含一个缩放器。每当有新输入出现时,您的模型应该对其进行缩放,然后处理参数。 我明白了,因此在将原始数据输入模型之前应该对其进行缩放,因此您对允许我们在将原始数据输入模型之前缩放原始数据的技术有什么建议吗?即时的?我在网上看到的所有教程都只解释了预处理期间的扩容过程,而不是部署阶段的扩容过程 你熟悉 Tensorflow 的函数式 API 还是自定义模型。您可以使用这些轻松做到这一点。 我对这些不太熟悉,你能说出一些我应该使用的功能性 API 或自定义模型,以便我开始了解它们吗? 这些概念让我们可以灵活地使用 TensorFlow 层。你需要通过谷歌搜索来学习。或者您可以尝试将 tft.scale_by_min_max 之类的缩放器添加到您的 Sequential 模型中(我以前从未尝试过) 【参考方案1】:

是的,您需要像在训练数据时那样扩展数据。

如果您在训练时将其发送到模型之前有预处理管道,您需要在收到实时数据时遵循相同的操作,然后调用模型权重文件。

【讨论】:

以上是关于是否应该对输入数据进行缩放以进行实时分类?的主要内容,如果未能解决你的问题,请参考以下文章

如何将图像输入 CNN 以进行二元分类

Netflix数据库架构变革:缩放时间序列的数据存储

如何对矩阵(或数据集)进行分类

为啥不应该使用 sklearn LabelEncoder 对输入数据进行编码?

如何在 scikit-learn 中缩放输入 DBSCAN

考虑到我已经使用 OneHotEncoder 对数据进行了预处理,当我在 ANN 中添加输入层时,输入形状编号应该是多少?