AWS Machine Learning Data

我正在使用AWS机器学习回归来预测餐厅排队等候时间,预测基于特定工作日和时间。今天我有大约80万条数据。

示例数据:

restaurantID (rowID)weekDay (categorical)time (categorical)tablePeople (numeric)waitingTime (numeric - target)
1                               sun                              21:29                  2                                 23                                            
2                               fri                                 20:13                  4                                 43                                            


我有两个问题:

1)我应该将时间设置为分类数据还是数值数据?将时间拆分为分钟和秒钟两个字段是否更好?

2)我想在同一个模型中获取所有餐厅的预测结果。

示例:我期望发送rowID标识符,并根据每个餐厅的数据返回不同的预测结果(忽略其他餐厅的数据)。

我尝试过,但对于任何rowID返回的预测结果都相同。为什么会这样?

我是否应该为每个餐厅建立一个模型?


回答:

您设置模型的方式存在几个问题

1) 以您当前的形式,时间绝不应被视为分类数据。您的模型会将12:29和12:30视为两个完全独立的属性。因此,它永远不会将在12:29学到的知识用于预测12:30将会发生什么。在您的情况下,您应该将时间设置为数值数据。不确定Amazon ML是否能为您自动转换。如果不能,您可以将小时乘以60再加上分钟。另一个有趣的做法是将时间分桶,选择每半小时或更宽的时间间隔。您可以通过将(h*60+m)除以某个数字来实现,这取决于您想要多少个桶。例如,使用120来得到2小时的间隔。一般来说,您的数据越多,您可以设置的间隔就越小。关键是要确保每个桶中有大量样本。

2) 您真的应该考虑从输入数据中移除restaurantID。保留它会导致模型对其过拟合。因此,模型将无法基于从id:3或id:9的餐厅学到的知识来预测id:5的餐厅。如果您对每个餐厅有大量数据,并且您不在乎将预测扩展到训练集中没有的餐厅,那么保留餐厅ID可能还可以接受。

3) 您永远不应该发送restaurantID来预测关于它的数据。通常的做法是您需要选择要预测什么。在您的情况下,’waitingTime’可能是最有用的属性。因此,您需要发送工作日、时间和人数,模型将输出等待时间。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注