2017-10-11 80 views
0

可能是一个非常愚蠢的问题,所以对我来说很容易,但在这里我去。预测使用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 

理想情况下,我想在测试数据集通过不我需要预测列,但RandomForestRegressor抱怨尺寸作为之间的不同培训和测试集。

当我通过测试数据集,其目前的形式,该模型预测在大多数情况下,确切值在sessionsuser_logins列和值,否则微小的变化。

我对测试数据中的sessionsuser_logins列进行了清零并将其传递给模型,但该模型预测了几乎所有的零。

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

你可以添加你的代码吗? –

回答

3

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

如果X是一组的,你掌握的信息, 如果y是一组要预测信息的列的列, 那么你应该在培训期间通过(X_trainy_train)(使用方法fit)和(X_test)仅在测试过程中(使用方法predict)。您将获得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) 

看看在documentation更多的例子,或在tutorials

+0

请使用OP的数据添加X_train和y_train的含义。 –

相关问题