使用sklearn的RandomForestRegressor进行预测

时间:2017-10-11 17:55:38

标签: machine-learning scikit-learn regression random-forest

可能是一个非常愚蠢的问题,所以对我来说很容易,但我来了。

所以这就是我的数据......

date,locale,category,site,alexa_rank,sessions,user_logins
20170110,US,1,google,1,500,5000
20170110,EU,1,google,2,400,2000
20170111,US,2,facebook,2,400,2000

......等等。这只是我想出的玩具数据集,但它与原始数据类似。

我正在尝试构建一个模型,以使用sklearn的RandomForestRegressor来预测特定网站可以拥有的用户登录次数和会话次数。

我做通常的事情,为标签编码类别,并且我在一年的前八个月训练了我的模型,现在我想预测第九个月的登录和会话。我创建了一个在登录方面受过训练的模型,另一个在会话方面受过培训。

我的测试数据集具有相同的形式:

date,locale,category,site,alexa_rank,sessions,user_logins
20170910,US,1,google,1,500,5000
20170910,EU,1,google,2,400,2000
20170911,US,2,facebook,2,400,2000

理想情况下,我想传入测试数据集而不需要我需要预测的列,但RandomForestRegressor会抱怨培训和测试集之间的维度不同。

当我以当前形式传递测试数据集时,模型会在大多数情况下预测sessionsuser_logins列中的精确值,否则会微小变化

我将测试数据中的sessionsuser_logins列清零并将其传递给模型,但模型预测几乎全部为零。

  • 我的工作流程是否正确?我正确使用RandomForestRegressor吗?
  • 当我的测试数据集包含实际值时,我如何接近实际值?测试数据中的实际值是否用于预测?
  • 如果模型正常运行,如果我将列{0}想要预测(sessionsuser_logins)归零,那么我是否应该获得相同的预测值?< / LI>

1 个答案:

答案 0 :(得分:4)

您不应该在测试数据中传递要预测的列。您的工作流程不正确。

如果X是您拥有的信息的列集, 如果y是您要预测的信息的列集, 那么你应该在训练期间(使用方法X_train)和(y_train,)仅在测试期间传递(fitX_test)(使用方法{{ 1}})。如果您拥有predict,则可以获得y_pred

在您的示例中,如果您想预测y_test

user_logins

请查看documentation以获取更多示例,或查看tutorials