logo
Loading...

關於監督式學習GDBT&Random Forest下的模型預測值 - Cupoy

我對於Random Forest跟GDBT模型的預測值有一些問題,由於共學營的例子都是使用Cross...

關於監督式學習GDBT&Random Forest下的模型預測值

2020/05/15 05:15 AM
機器學習新手論壇
zero0827z
觀看數:0
回答數:4
收藏數:0

我對於Random Forest跟GDBT模型的預測值有一些問題,由於共學營的例子都是使用Cross-data,我Data使用的是Time-series Data時,會出現預測值會每次重複訓練後就會某幾個預測值有所不同。

我想詢問一下當遇到這樣的情況時,我如果希望他的預測值每次都相同,除了改變Data的屬性之外,還有沒有甚麼更好的方法處理這個問題呢?


我希望他的樣本數是固定的,因此我轉成Rolling的方式。

# 將資料最大最小化
MME_US_train_x = MinMaxScaler().fit_transform(US_train_x)
MME_UK_train_x = MinMaxScaler().fit_transform(UK_train_x)
MME_JP_train_x = MinMaxScaler().fit_transform(JP_train_x)

# 使用三種模型 : 梯度提升機 / 隨機森林, 參數使用 Random Search 尋找
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import GradientBoostingClassifier, RandomForestClassifier
gdbt = GradientBoostingClassifier(tol=100, subsample=0.75, n_estimators=250, max_features=20,max_depth=6, learning_rate=0.03)
rf = RandomForestClassifier(n_estimators=100,min_samples_split=2, min_samples_leaf=1,max_features='sqrt', max_depth=6, bootstrap=True)
 
US_gdbt_pred=np.zeros(12)

for i in range(12):
    gdbt.fit(MME_US_train_x[[i,i+99],], US_train_Y.iloc[[i,i+99]])
    US_gdbt_pred_value = gdbt.predict(MME_US_train_x[[i+100],])
    print(US_gdbt_pred_value)
    US_gdbt_pred[i]=US_gdbt_pred_value



第一次產出的預測值


第二次產出的預測值


第三次產出的預測值