可能是一个非常愚蠢的问题,所以对我来说很容易,但我来了。
所以这就是我的数据......
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会抱怨培训和测试集之间的维度不同。
当我以当前形式传递测试数据集时,模型会在大多数情况下预测sessions
和user_logins
列中的精确值,否则会微小变化
我将测试数据中的sessions
和user_logins
列清零并将其传递给模型,但模型预测几乎全部为零。
sessions
和user_logins
)归零,那么我是否应该获得相同的预测值?< / LI>
答案 0 :(得分:4)
您不应该在测试数据中传递要预测的列。您的工作流程不正确。
如果X
是您拥有的信息的列集,
如果y
是您要预测的信息的列集,
那么你应该在训练期间(使用方法X_train
)和(y_train
,)仅在测试期间传递(fit
,X_test
)(使用方法{{ 1}})。如果您拥有predict
,则可以获得y_pred
。
在您的示例中,如果您想预测y_test
:
user_logins
请查看documentation以获取更多示例,或查看tutorials。