2017-10-11 12 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を使用して、特定のサイトのユーザーログインとセッション数を予測するモデルを構築しようとしています。

ラベルにカテゴリをエンコードして、今年の最初の8か月間に自分のモデルを訓練したので、9月のログインとセッションを予測したいと思います。ログインに訓練されたモデルとセッションで訓練されたモデルを作成しました。

私のテストデータセットが同じ形式である:

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を正しく使用していますか?
  • テストデータセットに実際の値が含まれている場合、どのように実際の値に近づいていますか?テストデータの実際の値が予測に使用されていますか?
  • モデルが正しく機能する場合、予測する列をゼロにすると、同じ値が予測されないはずです(sessionsおよびuser_logins)。
+0

コードを追加できますか? –

答えて

3

予測する列をテストデータに渡すべきではありません。ワークフローが正しくありません。 yは、あなたが予想する情報の列のセットであれば

Xもしあなたが持っている情報の列のセット、 で、 はあなたが訓練中に(X_trainy_train)を渡す必要があります(メソッドを使用してfit)および(X_test)(方法predictを使用)。あなたはy_testと比較できるy_predを取得します。あなたの例では

、あなたが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が意味するものの例を追加してください。 –