在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Python/ 隨機森林做回歸得到的結(jié)果不理想

隨機森林做回歸得到的結(jié)果不理想

有大神對隨機森林回歸分析了解嗎?
我在嘗試用scikit_learn里的隨機森林回歸模型randomforestregression()來建模。在對原始數(shù)據(jù)做了一些處理后,應(yīng)用到隨機森林回歸模型的數(shù)據(jù)大致如下圖所示。圖片描述

這只是數(shù)據(jù)的一小部分,實際數(shù)據(jù)有6000條左右。
第一列是datetimeindex類型,表中所有信息都在一個我所創(chuàng)建的DataFramefinal_data里。col4的數(shù)據(jù)一開始為字符串,我用了pandas里的map 函數(shù)把它們轉(zhuǎn)化成了數(shù)字。

import pandas as pd
from datetime import datetime     
from sklearn.cross_validation import train_test_split
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import r2_score

S_dataset1= final_data[(final_data.index >=pd.to_datetime('20160403')) & 
(final_data.index <= pd.to_datetime('20161002'))]

S_dataset2= final_data[(final_data.index >=pd.to_datetime('20170403')) & 
(final_data.index <= pd.to_datetime('20170901'))]

W_dataset = final_data[(final_data.index >=pd.to_datetime('20161002')) & 
(final_data.index <= pd.to_datetime('20170403'))]

S_dataset = pd.concat([S_dataset1,S_dataset2])
A = W_dataset.iloc[:, :8]
B = W_dataset.loc[:,'col20'] 
W_data = pd.concat([A,B],axis = 1)
X = W_data.iloc[:,:].values
y = W_dataset['col9'].values
X_train,X_test,y_train,y_test= train_test_split(X,y,test_size=0.3,
                                        random_state=1)
forest = RandomForestRegressor(n_estimators = 1000,criterion='mse',
                                      random_state=1,n_jobs=-1)
forest.fit(X_train, y_train)
y_train_pred = forest.predict(X_train)
y_test_pred = forest.predict(X_test)
print('R^2 train: %.3f, test: %.3f' % (r2_score(y_train, y_train_pred),
                                   r2_score(y_test, y_test_pred)))
                                   

以上是我預(yù)測col9的代碼。為了是預(yù)測更準確些,我把final_data按照時間分成了兩個季節(jié)??墒钱斘野褦?shù)據(jù)放到模型里后,得到的記過很差。訓(xùn)練集R2的得分在0.9左右,測試集只有0.25左右。我不太懂為什么我會得到一個如此差的結(jié)果。。懇請對隨機森林回歸的大神指點一下,我是錯在哪里?該如何提高模型的準確度?非常感謝!

回答
編輯回答
失魂人

你沒有Cross-validation的思維額,要通過微調(diào)各種參數(shù),比照哪組參數(shù)在測試集中的效果更好(你這個代碼中只嘗試了默認參數(shù),并未調(diào)參)。如果試過各種參數(shù)不理想,再嘗試:

  1. 找別的features
  2. 夸大數(shù)據(jù)集
  3. 選擇別的模型
2018年5月1日 21:44
編輯回答
不將就

我也遇到了一樣的問題,不過我的特征維度更多,反復(fù)調(diào)參后訓(xùn)練r方為0.86,測試r方只有0.014,不知道怎么破

2017年11月3日 07:10