使用 sklearn 的 RandomForestRegressor 进行预测



这可能是一个非常愚蠢的问题,所以请放心,但我来了。

下面是我的数据。。。

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

理想情况下,我希望在没有我需要预测的列的情况下传递测试数据集,但RandomForestProgsor抱怨训练集和测试集的维度不同。

当我通过当前形式的测试数据集时,在大多数情况下,模型预测sessionsuser_logins列中的精确值,否则预测变化很小的值。

我将测试数据中的sessionsuser_logins列归零,并将其传递给模型,但模型预测的几乎都是零。

  • 我的工作流程正确吗?我是否正确使用RandomForestProgsor
  • 当我的测试数据集确实包含实际值时,我是如何如此接近实际值的?测试数据中的实际值是否用于预测
  • 如果模型工作正常,如果我将要预测的列(sessionsuser_logins)清零,我不应该得到相同的预测值吗

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

如果CCD_ 8是您所拥有的信息的列集合,如果CCD_ 9是要预测的信息的列的集合,那么您应该在训练期间(使用方法fit)通过(X_trainy_train),并且仅在测试期间(使用方式predict)通过(X_test,)。您将获得y_pred,如果您有,可以与y_test进行比较。

在您的示例中,如果要预测user_logins:

X_train = array([['20170110', 'US', '1', 'google', '1', '500'],
['20170110', 'EU', '1', 'google', '2', '400'],
['20170111', 'US', '2', 'facebook', '2', '400']],
dtype='<U21')
y_train = array(['5000', '2000', '2000'], dtype='<U21')
X_test = array([['20170112', 'EU', '2', 'google', '1', '500'],
['20170113', 'US', '1', 'facebook', '2', '400'],
['2017014', 'US', '2', 'google', '1', '500']],
dtype='<U21')
estimator = RandomForestRegressor().fit(X_train, y_train)
y_pred = estimator.predict(X_test)

查看文档以获取更多示例,或查看教程。

相关内容

  • 没有找到相关文章

最新更新