Cra*_*aig 0 regression machine-learning random-forest scikit-learn
可能是一个非常愚蠢的问题,所以对我来说很容易,但我走了。
所以这就是我的数据的样子......
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
Run Code Online (Sandbox Code Playgroud)
... 等等。这只是我想出的一个玩具数据集,但它类似于原始数据。
我正在尝试使用 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
Run Code Online (Sandbox Code Playgroud)
理想情况下,我希望在没有我需要预测的列的情况下传入测试数据集,但 RandomForestRegressor 抱怨训练集和测试集之间的维度不同。
当我以当前形式传递测试数据集时,模型会在大多数情况下预测和列中的确切值,否则预测值会有微小的变化。sessionsuser_logins
我将测试数据中的sessions和user_logins列归零 并将其传递给模型,但模型预测几乎全部为零。
sessions和user_logins)归零,我是否应该得到相同的预测值?您不应该在测试数据中传递要预测的列。您的工作流程不正确。
如果X是你拥有的信息的列集,如果y是你想要预测的信息的列集,那么你应该在训练期间(使用方法)通过(X_train,),并且(,)仅在测试期间(使用方法)。如果您拥有它,您将获得可以比较的东西。y_trainfitX_testpredicty_predy_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)
Run Code Online (Sandbox Code Playgroud)